我在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
属性,或将其用于进行环境光遮挡的任何地方?
答案 0 :(得分:4)
aoMap
是一个环境光遮挡图,就像它的名字所说的那样,它遮挡了环境光。这就是所有的东西。
Three.js中目前有三种环境(或间接)光源:AmbientLight
,HemiSphereLight
和LightMap
。
因此aoMap
遮盖了这三个来源。它不遮挡直接光源。直接光源包括DirectionalLight
,SpotLight
,PointLight
和AreaLight
。
three.js r.95
答案 1 :(得分:2)
您使用的是哪种照明?我重新创建了您的情况,并且按预期进行。需要注意的是aoMap会显示THREE.AmbientLight,而不显示THREE.Spotlight。如果您使用envMap on your MeshStandardMaterial
,它也可以使用