three.js加载gltf模型并更换材质贴图遇到了一个问题
·
如题,在加载了gltf模型后,想要更换模型中的某个网格的贴图,在使用了官方的方法后,发现材质贴图似乎不匹配原有的网格,以下是不匹配的效果:
更换材质贴图的代码(未修改前):
//纹理贴图加载器TextureLoader
const texLoader = new THREE.TextureLoader();
//src是贴图地址
var texture = texLoader.load(src)
obj.material.map = texture;
原始效果:
贴图材质目标效果(拿blender做测试的效果):
更换后不匹配的效果:
修改代码后,达到的目标效果:
和blender测试的效果基本一致。
下面贴修改后的代码:
//纹理贴图加载器TextureLoader
const texLoader = new THREE.TextureLoader();
//src是贴图地址
var texture = texLoader.load(src)
//以下几个有影响
texture.colorSpace = obj.material.map.colorSpace
texture.flipY = obj.material.map.flipY
texture.repeat = obj.material.map.repeat
texture.wrapS = obj.material.map.wrapS
texture.wrapT = obj.material.map.wrapT
//下面几个不确定,注释了也没影响
texture.name = obj.material.map.name
texture.userData = obj.material.map.userData
texture.version = obj.material.map.version
obj.material.map = texture;
可以看到,就是在替换texture时将texture的部分属性保持和原来的texture属性一致即可。
这是一种方法,如果有更好的方法,欢迎评论留言!
更多推荐
已为社区贡献1条内容
所有评论(0)