Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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/2/jquery/79.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中加载OBJ和MTL文件的帮助吗_Javascript_Jquery_Three.js - Fatal编程技术网

Javascript 需要在Three.js中加载OBJ和MTL文件的帮助吗

Javascript 需要在Three.js中加载OBJ和MTL文件的帮助吗,javascript,jquery,three.js,Javascript,Jquery,Three.js,我在尝试使用其objmtloader()函数在Three.js中加载OBJ和MTL文件时遇到了一个奇怪的问题,但似乎无法找到它,或者在Google上找不到解决方案。我将index.html文件放在一个文件夹中,同一文件夹中还有我的js文件夹,其中包括我为项目编写的所有外部js文件以及three.js r68库。在我的根项目文件夹中还有一个名为“obj”的文件夹,其中包括我的所有obj文件及其相应的mtl文件 我最初是在Windows系统下启动我的项目的,能够加载所有东西,一点问题也没有,但现在我

我在尝试使用其objmtloader()函数在Three.js中加载OBJ和MTL文件时遇到了一个奇怪的问题,但似乎无法找到它,或者在Google上找不到解决方案。我将index.html文件放在一个文件夹中,同一文件夹中还有我的js文件夹,其中包括我为项目编写的所有外部js文件以及three.js r68库。在我的根项目文件夹中还有一个名为“obj”的文件夹,其中包括我的所有obj文件及其相应的mtl文件

我最初是在Windows系统下启动我的项目的,能够加载所有东西,一点问题也没有,但现在我切换到我的个人Linux系统,我开始发现这个问题,无法再加载任何obj/mtl文件

我收到的错误是“未捕获的TypeError:undefined不是一个函数”,我已经尝试打印出我的“loader”变量,它只是在控制台中向我显示它是OBJMTLLoader类型的对象。有什么想法吗

编辑:第一个文件是js/main.js,下一个是index.html

const WIDTH=1200;
常数高度=700;
const VIEW_角度=45;
常量纵横比=宽度/高度;
常数近=0.1;
常数FAR=10000;
变量渲染器,
摄像机,
场景
var pointLight,pointLight2;
var xrot=0.0025,
yrot=0.0025;
$(文档).ready(函数(){
//设置渲染器、摄影机、透视图等。
初始化场景();
$('#loadfile').change(getLoadedFile);
$('input[type=range]')。等式(0)。更改(showYRot);
//灯光
点光源=新的三点光源(0xffffff);
pointLight.position.x=-10;
点光源位置y=50;
点光源位置z=130;
场景。添加(点光源);
pointLight2=新的三点光源(0xffffff);
pointLight2.position.x=0;
点光源2.位置y=50;
点光源2.位置z=500;
场景。添加(pointLight2);
var render=function(){
window.requestAnimationFrame(渲染);
$(scene.children).each(function(){
如果(此!==摄像机和此!==点光源){
这个.rotation.x=xrot;
这个.rotation.y+=yrot;
}
});
渲染器。渲染(场景、摄影机);
};
render();
});
函数initScene(){
renderer=new THREE.WebGLRenderer({
反别名:对
});
摄像机=新的三个透视摄像机(视角、纵横比、近距离、远距离);
场景=新的三个。场景();
场景。添加(摄影机);
摄像机位置z=250;
设置大小(宽度、高度);
$('div#container').append(renderer.domeElement);
}
函数getLoadedFile(evt){
var fileList=evt.target.files;
var filename=文件列表[0]。名称;
if(filename.substring(filename.length-4,filename.length)=='.obj'){
var obj=文件名;
var mtl=filename.substring(0,filename.length-4)+'.mtl';
log('将'+filename+'添加到场景');
loadOBJMTLModel(obj,mtl);
}
}
函数加载OBJMTLModel(obj,mtl){
var loader=new THREE.OBJMTLLoader();
load('obj/'+obj,'obj/'+mtl,函数(对象){
场景。添加(对象);
});
}

OBJ模型预览器
身体{
背景颜色:浅灰色;
}
分区#集装箱{
宽度:1200px;
高度:700px;
边框:1px纯灰;
}
选择要加载的文件





Y轴旋转:
根据要求


OBJMTLLoader已弃用。您必须同时使用MTLLoader和OBJLoader。您可以在这里查看一个传统示例:view source:threejs.org/examples/webgl\u loader\u obj\u mtl.html

objloader2.js也有许多可用的更新@


要了解更多信息,请参见我之前关于自动MTL加载的回答:

哪一行给出了该错误?我不确定,因为它现在给了我一些新的错误。我将用新信息编辑我的问题。你的js/main.js中有什么?添加内容。@SagarV我添加了一个解释每个文件内容的编辑。我文章中的第一个源文件是js/main.js.objmtloader,它已被弃用。您必须同时使用MTLLoader和OBJLoader。您可以在这里查看一个传统示例:查看源代码:objloader2.js也有许多可用的更新@