忽略Three.js中的光源

时间:2013-06-29 03:48:30

标签: javascript three.js lighting

我正在尝试制作一个3D十六进制网格,我想实现一场战争迷雾。

以下是网格目前的样子:

three.js hex grid

我的照明设置如下:

// 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的光照。

我愿意接受以不同方式实施战争迷雾的建议。

更新:

我能够使用自定义着色器让它工作。

Finished fog of war

1 个答案:

答案 0 :(得分:3)

好概念,恕我直言。

真的,你唯一的选择是为“战争迷雾”牌创建你自己的ShaderMaterial。在着色器中,您将忽略所有不是HemisphereLights的灯光。

请记住,如果您要使用ShaderMaterial,并且希望能够访问场景灯,则需要设置材质参数lights: true。这有三个例子。

three.js r.58