我很难让一个aoMap在3.js…中工作
我有一个glb资产,在红色通道上有一个aoMap或其他什么。当我把它带到babylon查看器中时,我可以很好地看到ao,但它不会出现在three.js查看器或我的项目中。我认为这与第二组uvs有关,但我找不到除了使用gltf加载程序之外还需要这样做的资源……我真的不知道该怎么办。如有任何回应,我们将不胜感激!
这是我的代码(我使用html画布作为纹理(
我得到了模型的几何结构和漫射纹理(全是白色(,但aomap没有显示…
代码
巴比伦查看器
three.js查看器
漫反射中包含阴影的工作应用程序
不起作用,漫反射只是白色,aoMap没有显示
您需要第二组UV是正确的。这背后的原因是漫射纹理经常重复(想想砖墙或方格t恤(。然而,AO着色在几何体的每个部分都更有可能是唯一的,因此它几乎从不重复。由于这通常需要另一种UV映射方法,因此默认情况下使用第二组UV。
你可以做两件事:
- 使用重复的UV集重新导出GLTF资源
- 通过在几何体中创建新的BufferAttribute来复制Three.js中的现有UV:
// Get existing `uv` data array
const uv1Array = mesh.geometry.getAttribute("uv").array;
// Use this array to create new attribute named `uv2`
mesh.geometry.setAttribute( 'uv2', new THREE.BufferAttribute( uv1Array, 2 ) );
.getAttribute
和.setAttribute
是BufferGeometry
的方法,如果你想了解更多关于它们的信息。