如题,在加载了gltf模型后,想要更换模型中的某个网格的贴图,在使用了官方的方法后,发现材质贴图似乎不匹配原有的网格,以下是不匹配的效果:

更换材质贴图的代码(未修改前):

//纹理贴图加载器TextureLoader
const texLoader = new THREE.TextureLoader();
//src是贴图地址
var texture = texLoader.load(src)
obj.material.map = texture;

原始效果:

贴图材质目标效果(拿blender做测试的效果):

更换后不匹配的效果:

three.js
JavaScript 3D Library.

修改代码后,达到的目标效果:

和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属性一致即可。

这是一种方法,如果有更好的方法,欢迎评论留言!

推荐内容
阅读全文
AI总结
GitHub 加速计划 / th / three.js
5
1
下载
JavaScript 3D Library.
最近提交(Master分支:12 天前 )
f636bf1f 5 小时前
7f74cfa8 * Added new Rapier physics examples * Delete attribute when using Rapier debugger * Added screenshots * Restored jsDocs to RapierPhysics.js * Updated files.json * added exception * Updates for Michael * Refactored debugger as RapierHelper * Removed unused imports from RapierPhysics.js * Update RapierPhysics.js * Update RapierPhysics.js Fix code style. * Refactored physics_rapier_joints.html to not use getBody. * Removed getBody from RapierPhysics.js * Update RapierPhysics.js * Update RapierPhysics.js * Refactored access to the RigidBody * Update physics_rapier_vehicle_controller.html --------- Co-authored-by: Michael Herzog <michael.herzog@human-interactive.org> 6 小时前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐