【发布时间】:2021-05-12 17:57:43
【问题描述】:
所以我正在尝试上传一个 .obj 文件,该文件也有多个 .png 和 .jpg 文件,它们是它的纹理。问题是我不知道在上传这些纹理时如何处理它们。
到目前为止,这是我的代码:
var loader = new THREE.OBJLoader(manager);
loader.load(obj_path, function (obj) {
model = obj;
modelWithTextures = true;
model.traverse( function ( child ) {
if ( child.isMesh ) child.material.map = texture;
} );
var textureLoader = new THREE.TextureLoader( manager );
var i;
for (var i = 0; i < files.length; i++) {
file = files[i];
console.log('Texture Files:' + files[i].name);
var texture = textureLoader.load(files[i].name);
}
renderer = new THREE.WebGLRenderer();
renderer.setPixelRatio( window.devicePixelRatio );
renderer.setSize( window.innerWidth, window.innerHeight );
setCamera(model);
setSmooth(model);
model.position.set(0, 0, 0);
setBoundBox(model);
setPolarGrid(model);
setGrid(model);
setAxis(model);
scaleUp(model);
scaleDown(model);
fixRotation(model);
resetRotation(model);
selectedObject = model;
outlinePass.selectedObjects = [selectedObject];
outlinePass.enabled = false;
renderer.render( scene, camera );
scene.add(model);
});
如您所见,我正在使用 textureLoader,但不知道该怎么做。
我对 threeJS 和 3d 模型非常陌生。
任何帮助或建议将不胜感激。
谢谢。
【问题讨论】:
-
你的OBJ资产有对应的MTL文件吗?
-
不,它是一个没有 MTL 文件的 OBJ。另一个开发人员告诉我,我需要手动添加这些纹理。
-
能否请您先确定您的OBJ文件是否有纹理坐标?
-
是的,我的 obj 文件确实有纹理坐标,也有几个 png 文件就是它的纹理。
标签: javascript three.js 3d blender