我正在尝试制作一个3D十六进制网格,我想实现一场战争迷雾。
以下是网格目前的样子:
我的照明设置如下:
// 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);
我要做的是让战争迷雾中的瓷砖不响应pointLight
,这样他们只有低强度hemisphereLight
。我似乎找不到办法做到这一点。我不能更改瓷砖使用MeshBasicMaterial
,它不响应任何灯光,因为我希望“战争迷雾”瓷砖具有来自hemisphereLight
的光照。
我愿意接受以不同方式实施战争迷雾的建议。
更新:
我能够使用自定义着色器让它工作。
答案 0 :(得分:3)
好概念,恕我直言。
真的,你唯一的选择是为“战争迷雾”牌创建你自己的ShaderMaterial
。在着色器中,您将忽略所有不是HemisphereLights
的灯光。
请记住,如果您要使用ShaderMaterial
,并且希望能够访问场景灯,则需要设置材质参数lights: true
。这有三个例子。
three.js r.58