我正在使用 SEA3D 模型,加载为
BufferGeometry
,并在外部添加 aoMap
。
但是这两张地图都存在一些问题。
aoMap
只是不影响模型的颜色。在 Three.js 文档中,有一个参考
aoMap 需要第二组 UV。
在
BufferGeometry
中,我知道 UV 信息位于 geometry.attributes.uv
上。
如何获得第二组 UV,以便获得
aoMap
?
谢谢你
您可以将第二组 UV 添加到
BufferGeometry
,如下所示:
var uvs = geometry.attributes.uv.array;
geometry.addAttribute( 'uv2', new THREE.BufferAttribute( uvs, 2 ) );
(当然,使用这种模式,第二组将与第一组匹配。)
三.js r.74
我目前使用的是r89,上面的代码似乎不再起作用了。我访问了 Three.js 文档页面,发现不需要复制数组然后创建 BufferAttribute 对象的新实例,只需使用 BufferAttribute 对象的复制方法即可。
这对我有用
geometry.attributes.uv2 = geometry.attributes.uv.clone()
与之前的答案一样,您最终会得到两组相同的 UV。
那里 也可以通过以下方式将纹理分配给 UV2
// map|aoMap|normalMap|metalnessMap|roughnessMap|alphaMap etc...
object3d.material.map.channel = 2;
object3d.material.needsUpdate = true;
问候
谢谢 Anthony Sychev,您的建议对我很有帮助!
object3d.material.map.channel = 2; object3d.material.needsUpdate = true;