3

我正在玩实例并且很棒。
现在我试图让每个实例都投射阴影,但没有运气。我制作了 Lambert 材料的克隆,添加了位置、比例等的实例处理并且正在工作,但这只会投射一个阴影:位置 (0,0,0) 的原始几何体中的阴影(即使没有实例在那个位置)。
有人可以指出我在哪里寻找使它起作用还是这是实例或材料的限制?
谢谢。

4

1 回答 1

2

我用这篇文章的信息解决了这个问题:http ://blog.edankwan.com/post/three-js-advanced-tips-shadow

编辑:

我制作了 THREE.ShaderLib.depthRGBA.vertexShader 的副本,并添加了我在实际绘制实例的材质中拥有的所有属性(平移、缩放、旋转)和代码(使用 THREE.ShaderChunk)。THREE.ShaderLib.depthRGBA.fragmentShader 保持不变。

然后我用上一步中创建的新 VS 和 FS 创建了一个新的 THREE.ShaderMaterial:

mesh.customDepthMaterial = new THREE.ShaderMaterial({
        vertexShader: <my DepthRGBA vertex shader here>,
        fragmentShader: THREE.ShaderLib.depthRGBA.fragmentShader,
        ....
    });
于 2015-12-11T18:20:24.070 回答