Three.js - 带有 aoMap 和第二个 uv 坐标的缓冲区几何体

问题描述 投票:0回答:4

我正在使用 SEA3D 模型,加载为

BufferGeometry
,并在外部添加
aoMap

但是这两张地图都存在一些问题。

  • aoMap
    只是不影响模型的颜色。

在 Three.js 文档中,有一个参考

aoMap 需要第二组 UV。

BufferGeometry
中,我知道 UV 信息位于
geometry.attributes.uv
上。

如何获得第二组 UV,以便获得

aoMap

谢谢你

javascript three.js
4个回答
9
投票

您可以将第二组 UV 添加到

BufferGeometry
,如下所示:

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

(当然,使用这种模式,第二组将与第一组匹配。)

三.js r.74


3
投票

我目前使用的是r89,上面的代码似乎不再起作用了。我访问了 Three.js 文档页面,发现不需要复制数组然后创建 BufferAttribute 对象的新实例,只需使用 BufferAttribute 对象的复制方法即可。

这对我有用

geometry.attributes.uv2 = geometry.attributes.uv.clone()

与之前的答案一样,您最终会得到两组相同的 UV。


0
投票

那里 也可以通过以下方式将纹理分配给 UV2

//                map|aoMap|normalMap|metalnessMap|roughnessMap|alphaMap etc...
object3d.material.map.channel = 2;
object3d.material.needsUpdate = true;

问候


0
投票

谢谢 Anthony Sychev,您的建议对我很有帮助!

object3d.material.map.channel = 2; object3d.material.needsUpdate = true;

© www.soinside.com 2019 - 2024. All rights reserved.