3

我正在尝试制作一个 3D 六角网格,并且我想实现战争迷雾。

以下是当前网格的示例:

three.js 十六进制网格

我的照明设置如下:

// 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

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

更新:

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

完成的战争迷雾

4

1 回答 1

3

不错的概念,恕我直言。

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

请记住,如果您要使用ShaderMaterial,并且希望能够访问场景灯光,则需要设置材质参数lights: true。有很多这方面的三个.js 示例。

三.js r.58

于 2013-06-29T10:33:57.677 回答