javascript - 在 Three.js 中忽略光源

标签 javascript three.js lighting

我正在尝试制作一个 3D 六边形网格,我想实现一个 war 迷雾。

这是目前网格的示例:

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);

我想做的是让处于 war 迷雾中的图 block 不响应 pointLight,这样它们就只有低强度的 hemisphereLight .我似乎找不到办法做到这一点。我无法将瓷砖更改为使用 MeshBasicMaterial,它不响应任何灯光,因为我确实希望“ war 迷雾”瓷砖具有来自 hemisphereLight

我也乐于接受以不同方式实现 war 迷雾的建议。

更新:

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

Finished fog of 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/

相关文章:

javascript - 如果字体不可用,用图像替换文本

javascript - Twitter bootstrap 导航栏和下拉菜单 - 不调整大小

javascript - 三.js/WebGL : Large spheres appear broken at intersection

javascript - 如何从外部链接打开 Bootstrap 3 选项卡?

javascript - jQuery 不透明度缓慢淡入淡出

javascript - OBJMTLloader : mtl file ignored

javascript - div 中的 Three.js 对象可禁用缩放、滚动/缩放文档

javascript - Three.js:转换基本阴影时出现问题

c++ - 打开 GL 照明问题

math - 如何计算圆柱表面的法线?