Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript THREE.js未使用.mtl呈现.obj-导出THREE.js的文件_Javascript_Three.js_.obj_3ds - Fatal编程技术网

Javascript THREE.js未使用.mtl呈现.obj-导出THREE.js的文件

Javascript THREE.js未使用.mtl呈现.obj-导出THREE.js的文件,javascript,three.js,.obj,3ds,Javascript,Three.js,.obj,3ds,***更新***这一定是文件和导出方式的问题,我不知道是什么问题。我下载了更多的示例模型,它们都呈现得很好 加载.obj和.mtl文件时,我遇到了Three.js的问题 我从3ds中导出了一组对象及其相应的材质文件。我不是导出这些文件的人,我也不是3d建模师,但是如果这些文件出现问题,我可以要求建模师再次导出它们 我曾多次使用THREE.js,但从未遇到过此问题,我使用以下方法加载.mtl和.obj文件: mtlLoader.load("stands/objects/Table&Chai

***更新***这一定是文件和导出方式的问题,我不知道是什么问题。我下载了更多的示例模型,它们都呈现得很好

加载.obj和.mtl文件时,我遇到了Three.js的问题

我从3ds中导出了一组对象及其相应的材质文件。我不是导出这些文件的人,我也不是3d建模师,但是如果这些文件出现问题,我可以要求建模师再次导出它们

我曾多次使用THREE.js,但从未遇到过此问题,我使用以下方法加载.mtl和.obj文件:

mtlLoader.load("stands/objects/Table&Chairs.mtl", function(materials){

            materials.preload();
            var objLoader = new THREE.OBJLoader();
            objLoader.setMaterials(materials);

            objLoader.load("stands/objects/Table&Chairs.obj", function(object){

                scene.add(object);
                object.position.set(-5, 0, 4);
            });

        });
我的问题是对象加载很好,没有错误,但是没有显示任何内容。对象未渲染到场景中

如果我从其他来源下载一些示例资源,并在不更改任何其他内容的情况下切换出正在上载的文件,则对象将呈现

这让我相信这可能是文件导出方式的问题

正在渲染的my.obj的屏幕显示

显示正在渲染的示例.obj的屏幕

如果您能提供帮助,了解是什么原因导致了这种情况,我们将不胜感激

我已经上传了物品和材料


我的是桌椅,示例是Tent_Poles_01文件。

关于.OBJ文件的伟大之处在于,您可以在自己选择的文本编辑器中打开它们,看看里面有什么。这将使您大致了解位置和比例:

  • 查看帐篷模型中的顶点,每个维度的大小大约为2个单位,以原点为中心
  • 查看桌椅模型中的顶点,它们的大小为几百/千个单位,并且从(+6000,0,-2000)开始
换句话说,第一个可疑点可能是您的模型在可见视口之外的某个地方被渲染

通常,当您与3D艺术家一起工作时,您会事先讨论要使用的比例,并让他们将模型与原点很好地对齐

您可以在代码中(某种程度上)纠正这一点,但它不会那么实用

  • mesh.geometry.center()
    将围绕(0,0,0)重新居中几何体。。。但请注意,这通常不是你想要的。例如,表格将以默认的居中位置穿过楼板的一半

  • 要将几何体缩放到绝对大小,请使用类似(伪代码)的内容


  • 保罗·简,这对我帮助很大,我真的很感谢你向我解释这一点。我已经和3d艺术家讨论过缩小这些模型的问题。他以1:1的比例工作,所以其他一些模型有20米宽:难怪我没有在我的视野中看到它们。再次感谢你!
    var currentSize = new THREE.Box3().setFromObject(model).getSize();
    mesh.geometry.scale(
        targetWidth / currentSize.X, 
        targetHeight / currentSize.Y, 
        targetDepth / currentSize.Z)