我正在尝试制作一个 3D 六边形网格,我想实现一个 war 迷雾。
这是目前网格的示例:
我的灯光设置如下:
// hemisphere light
var hemisphereLight = new THREE.HemisphereLight(0xffffff, 0.3);
scene.add(hemisphereLight);
// point light
var pointLight = new THREE.PointLight(0xffffff, 0.7);
pointLight.position = camera.position;
pointLight.rotation.y = Math.PI/2;
scene.add(pointLight);
我想做的是让处于 war 迷雾中的图 block 不响应 pointLight
,这样它们就只有低强度的 hemisphereLight
.我似乎找不到办法做到这一点。我无法将瓷砖更改为使用 MeshBasicMaterial
,它不响应任何灯光,因为我确实希望“ war 迷雾”瓷砖具有来自 hemisphereLight
。
我也乐于接受以不同方式实现 war 迷雾的建议。
更新:
我能够使用自定义着色器让它工作。
最佳答案
不错的概念,恕我直言。
实际上,您唯一的选择是为“ war 迷雾”图 block 创建您自己的 ShaderMaterial
。在您的着色器中,您将忽略所有不是 HemisphereLights
的灯光。
请记住,如果您要使用 ShaderMaterial
,并且希望能够访问场景灯光,则需要设置 Material 参数 lights: true
。这方面有很多 three.js 示例。
three.js r.58
关于javascript - 在 Three.js 中忽略光源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17376496/