Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 忽略Three.js中的光源_Javascript_Three.js_Lighting - Fatal编程技术网

Javascript 忽略Three.js中的光源

Javascript 忽略Three.js中的光源,javascript,three.js,lighting,Javascript,Three.js,Lighting,我正在尝试制作一个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.pos

我正在尝试制作一个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);
我想做的是使处于战争迷雾中的瓷砖不会对点光源产生反应,这样它们只有低强度的半球光。我似乎找不到办法来做这件事。我无法将瓷砖更改为使用
MeshBasicMaterial
,它对任何灯光都不响应,因为我确实希望“战争之雾”瓷砖具有来自
半球灯光的灯光

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

更新:

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

不错的概念,伊姆霍

实际上,您唯一的选择是为“战争之雾”瓷砖创建自己的
着色器材质。在着色器中,将忽略所有不是
半球灯光的灯光

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


three.js r.58

你有一个链接到一个可以帮助我的例子吗?我根本没有使用过
ShaderMaterial
,我很难找到一个对我有帮助的示例。着色器的简单示例,但没有访问three.js lights:。出于您的目的,这可能没问题——您可以在着色器中破解您自己的假光。不幸的是,访问场景灯光的three.js示例要复杂得多,您只需花费大量精力来理解它们。我终于能够让它工作了,谢谢您的帮助!