Javascript 加载obj文件时出现threejs错误
我对从互联网下载的obj文件有问题。 所有这些文件呈现为此图片:Javascript 加载obj文件时出现threejs错误,javascript,three.js,Javascript,Three.js,我对从互联网下载的obj文件有问题。 所有这些文件呈现为此图片: 我用的是标准的车载设备 var loader = new THREE.OBJLoader(); loader.load( objURL, function ( object ) { scene.add( object ); } ); 我想不出什么地方出了问题 编辑: 这是我的完整加载器: loader = new THREE.OBJLoader(manager); loader.load(filePa
我用的是标准的车载设备
var loader = new THREE.OBJLoader();
loader.load( objURL, function ( object ) {
scene.add( object );
} );
我想不出什么地方出了问题
编辑:
这是我的完整加载器:
loader = new THREE.OBJLoader(manager);
loader.load(filePath, function (object) {
object.traverse(function (child) {
if (child instanceof THREE.Mesh) {
if (count == 1) {
child.material = material;
var box = new THREE.Box3().setFromObject(child);
xyzSizes = box.size();
var geometry = new THREE.Geometry();
geometry = child.geometry;
var volume = myVolume(geometry);
THREE.GeometryUtils.center(geometry);
scene.add(child);
DOM.children(".loading").remove();
myObj = child;
myObj.name = 'GL' + idfile;
maxSize = Math.max(xyzSizes.x, xyzSizes.y, xyzSizes.z);
maxSize = 2 / maxSize;
DOM.parent().find('.volumeVal').html(myRound(volume, 2));
DOM.parent().find('.sizesVal').html('x: ' + myRound(xyzSizes.x, 3) + ' y: ' + myRound(xyzSizes.y, 3) + ' z: ' + myRound(xyzSizes.z, 3));
console.log('il volume è: ' + volume + ' e gli assi xyz sono: ' + xyzSizes.x, xyzSizes.y, xyzSizes.z);
if (maxSize == 0)
maxSize = 0.1;
object.scale.set(maxSize, maxSize, maxSize);
} else {
child.material = transparent;
}
} else {
}
count++;
});
});
您的代码看起来很好 您是否在Firefox中进行测试,您的objUrl设置是否正确 目前,我在想,也许你的目标被设置到了某个地方,但它并没有变回你想要的形象 另外,从internet下载的obj文件是否与使用blender创建的文件放在同一文件夹位置 我使用了您的代码,并将zuccarelo.obj放在index.html旁边
var loader = new THREE.OBJLoader();
loader.load( "Zuccarello.obj", function ( object ) {
scene.add( object );
} );
如果这些都没有帮助,请共享更多的代码,以便我能看到它,特别是涉及objURL变量的任何内容 您的代码看起来很好 您是否在Firefox中进行测试,您的objUrl设置是否正确 目前,我在想,也许你的目标被设置到了某个地方,但它并没有变回你想要的形象 另外,从internet下载的obj文件是否与使用blender创建的文件放在同一文件夹位置 我使用了您的代码,并将zuccarelo.obj放在index.html旁边
var loader = new THREE.OBJLoader();
loader.load( "Zuccarello.obj", function ( object ) {
scene.add( object );
} );
如果这些都没有帮助,请共享更多的代码,以便我能看到它,特别是涉及objURL变量的任何内容 如果我尝试加载在stl或使用blender创建的其他obj文件中转换的相同对象,根据文档,它们会正确显示,使用此加载程序时,默认材质为
MeshLambertMaterial
。你的场景中有灯光吗?@Mr_Pouet是的,我有灯光,我使用的是phong材质(但LambertMaterial也会出现错误),如果我尝试加载在stl或使用blender创建的其他obj文件中转换的相同对象,根据文档,它们会正确显示,使用此加载器时的默认材质为MeshLambertMaterial
。你的场景中有灯光吗?@Mr_Pouet是的,我有灯光,我正在使用phong材质(但LambertMaterial也会出现错误)我正在使用chrome进行测试,我认为objUrl是正确的,因为它是由一个函数传递的,该函数在Web服务器根目录中上载文件,并传递文件的新路径。它与stl对象(及其加载程序)和以相同方式传递到脚本的其他obj文件一起工作。所以我认为这是物体的问题。但我觉得这很奇怪也很有趣。您是否看到使用chrome时出现任何控制台错误?另外,为了验证objurl,请放置一个console.log(objurl);加载前的语句,以确保objUrl是正确的,并让我知道控制台的内容。我检查了控制台,没有错误,我记录了objUl,它是正确的,还有其他想法吗?哦,我的场景中还有一个AxisHelper。它可以很好地处理正确显示的文件,但对于出现此错误的obj文件,它会显示,但网格会消失。我刚刚发现,如果我在blender中导入文件,然后以obj格式重新导出,当我重新加载它时,加载程序工作正常。所以文件有点问题。。。有什么想法吗?可能是错误的格式?我正在使用chrome进行测试,我认为objUrl是正确的,因为它是由一个函数传递的,该函数在Web服务器根目录中上载文件,并传递文件的新路径。它与stl对象(及其加载程序)和以相同方式传递到脚本的其他obj文件一起工作。所以我认为这是物体的问题。但我觉得这很奇怪也很有趣。您是否看到使用chrome时出现任何控制台错误?另外,为了验证objurl,请放置一个console.log(objurl);加载前的语句,以确保objUrl是正确的,并让我知道控制台的内容。我检查了控制台,没有错误,我记录了objUl,它是正确的,还有其他想法吗?哦,我的场景中还有一个AxisHelper。它可以很好地处理正确显示的文件,但对于出现此错误的obj文件,它会显示,但网格会消失。我刚刚发现,如果我在blender中导入文件,然后以obj格式重新导出,当我重新加载它时,加载程序工作正常。所以文件有点问题。。。有什么想法吗?可能是错误的格式?