如何在更新纹理映射时保留UV映射

3

我有一个GLTF模型,我想更新它的贴图纹理,但是一旦我这样做了,新的纹理就会显示出来,但我的模型的UV映射不再设置。

有没有一种方法可以在加载新纹理时保留UV映射?下面是我在网站上某个位置调用新地图纹理的代码:

model.traverse(child => {
    if (
        child instanceof THREE.Mesh 
    ) {
        child.material.map = newTexture;
    }
})
1个回答

2

当替换 glTF 模型的颜色纹理时,需要添加以下两行代码。

newTexture.encoding = THREE.sRGBEncoding; // color textures must be marked as sRGB
newTexture.flipY = false; // honor glTF's uv convention

我想更新我的GLTF的metalnessMap和roughnessMap。我为这些新纹理添加了相同的两行,但仍然无法正常工作。我应该添加其他内容以正确更新这些纹理吗?非常感谢。 - Michaël
这两张地图都是无色纹理,因此设置THREE.sRGBEncoding不正确。 - Mugen87
我尝试只在这些纹理上应用.flipY代码行,但问题仍然存在。看起来UV映射被擦除了。我的金属度图/粗糙度图似乎适用于整个网格。 - Michaël

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接