在three.js中未显示环境光遮挡

时间:2018-08-30 19:01:51

标签: three.js

我在three.js中使用MeshStandardMaterial,并且在创建和应用材质时,除aoMap对模型没有影响之外,所有贴图都可以正常工作。我怀疑这是因为我没有第二组UV(我的UV解包是通过Blender完成的,我根本没有手动在three.js中应用任何UV),如documentation所说:< / p>

  

此纹理的红色通道用作环境光遮挡贴图。   默认为空。 aoMap需要第二套UV ,并且   因此将忽略重复和偏移的Texture属性。

我尝试使用以下代码解决此问题:

var geometry = mesh.geometry;
geometry.addAttribute( 'uv2', new THREE.BufferAttribute( geometry.attributes.uv.array, 2 ) );

但是没有运气。如何将我的UV贴图复制到uv2属性,或将其用于进行环境光遮挡的任何地方?

2 个答案:

答案 0 :(得分:4)

aoMap是一个环境光遮挡图,就像它的名字所说的那样,它遮挡了环境光。这就是所有的东西。

Three.js中目前有三种环境(或间接)光源:AmbientLightHemiSphereLightLightMap

因此aoMap遮盖了这三个来源。它不遮挡直接光源。直接光源包括DirectionalLightSpotLightPointLightAreaLight

three.js r.95

答案 1 :(得分:2)

您使用的是哪种照明?我重新创建了您的情况,并且按预期进行。需要注意的是aoMap会显示THREE.AmbientLight,而不显示THREE.Spotlight。如果您使用envMap on your MeshStandardMaterial

,它也可以使用

enter image description here