我正试图在我的THREE.scene中加载网络上发现的一些3D模型。 我已经按照基本的教程,很好地处理了我的灯光和相机,它对某些物体非常有效:
function loadObject(path, modelName)
{
var mtlLoader2 = new THREE.MTLLoader();
mtlLoader2.setPath( path );
mtlLoader2.load(modelName+'.mtl', function( material )
{
material.preload();
var objLoader2 = new THREE.OBJLoader();
objLoader2.setPath( path );
objLoader2.setMaterials( material );
material.side = THREE.BackSide;
objLoader2.load( modelName+'.obj', function ( mesh )
{
mesh.name=modelName;
var axisHelper = new THREE.AxisHelper(1);
axisHelper.visible=true;
mesh.add(axisHelper);
scene.add( mesh );
console.log('Loaded '+modelName);
});
});
}
我还调用animate函数来定期渲染:
function animate()
{
requestAnimationFrame( animate );
renderer.render( scene, camera );
}
不幸的是,一旦我应用了这些材料,其他一些对象就会消失(没有任何错误):
objLoader2.setMaterials( material );
隐形,我的意思是它不会出现但存在,会显示axisHelper。由于其他在线观看者似乎完全显示相同的对象,我得出的结论是,在线发现的某些.mtl文件与three.js不兼容。或者是我使用它的方式?
以下是功能文件的示例: https://www.models-resource.com/mobile/shaunthesheeppuzzleputt/model/19915/
一个不起作用的: https://www.models-resource.com/ds_dsi/shaunthesheep/model/12472/
我现在试图弄清楚为什么以及我是否可以修复它。 请分享您的想法和(希望)解决方案:)
答案 0 :(得分:2)
正如Sedenion在评论中所回答的那样,Tr声明就是问题所在。 我删除了它们(有2个)它解决了我的问题。