Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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.obj加载程序无法与3Ds Max.obj一起使用_Javascript_Three.js_3dsmax - Fatal编程技术网

Javascript Three.js.obj加载程序无法与3Ds Max.obj一起使用

Javascript Three.js.obj加载程序无法与3Ds Max.obj一起使用,javascript,three.js,3dsmax,Javascript,Three.js,3dsmax,我正在尝试使用Three objLoader将.obj加载到Three.js中 var loader = new THREE.OBJLoader( manager ); loader.load( 'obj/gate-2.obj', function ( object ) { object.traverse( function ( child ) { if ( child i

我正在尝试使用Three objLoader将.obj加载到Three.js中

var loader = new THREE.OBJLoader( manager );
                loader.load( 'obj/gate-2.obj', function ( object ) {

                    object.traverse( function ( child ) {

                        if ( child instanceof THREE.Mesh ) {

                            child.material.map = texture;

                        }

                    } );
使用blender模型时一切正常,但是每当我尝试使用自己的自定义3Ds Max模型时,.obj将不会在浏览器中加载,并发出错误。是我导出错误还是Three.js不支持3Ds Max.obj导出器

错误消息

    Error: Unexpected line: s 2
parseOBJLoader.js:339
(anonymous function)OBJLoader.js:24
(anonymous function)three.min.js:376:387

我目前遇到了完全相同的错误:

Error: Unexpected line: s 2
使用3ds Max波前obj导出器v0.97b-(c)2007 guruware导出的.obj文件

我遵循了与缺少的对象名相关的@2pha,虽然这是真的,但在手动插入对象名之后,我仍然遇到了“意外行”错误

我的解决方案虽然不是针对发生此错误的原因的特定修复方案,但是在Blender()中导入.obj文件,并立即导出.obj文件。似乎可以使用Three.js Three.OBJLoader导入Blender v2.76(sub 0)obj导出器创建的.obj文件,而无需额外的手动操作

我希望有一天Three.js或3ds Max会纠正这个错误(Three.js似乎正在进行中),但与此同时,没有人有时间这样做

更新:我已提交一个拉取请求来解决此问题:,同时您可以修改平滑模式以支持多位数:

Line 220: var smoothing_pattern = /^s\s+(\d+|on|off)/;

我在3ds Max波前OBJ导出器v0.97b和最新版本(74)的threejs中遇到了完全相同的错误

我没有解决方案,但我可以看到问题是,当OBJLoader.js解析obj文件时,它会查找格式为
^s\s+([01]| on | off)\
的平滑组,该格式只匹配“s1”或“s0”,因此会在“s2”或更高的位置抛出错误。(你可以和我一起检查正则表达式,以防像我一样看不懂正则表达式;)


它在使用Blender导入和导出时起作用,因为Blender将仅以“s1”和“s off”作为参数导出它。

请尝试一次,先只导出简单的立方体。然后检查它是否有效。。。您使用的是什么版本的Three.js。@我会假设是最新版本吗?因为我前几天才下载的,模型在blender中重新渲染时可以工作,我不确定问题是否存在,但现在将尝试立方体!嗯,
s2
将是一个平滑设置。加载程序支持平滑吗?我假设它只会跳过它不理解的行。我认为这是用于平滑组的。OBJLoader可以处理从3ds max导出的.obj文件,但概述的单独对象除外。导出一个非常简单的对象并将.obj文件的内容粘贴到问题中查看OBJLoader.js的代码,平滑组的正则表达式只能处理“s1”,但不能处理“s2”、“s3”等其他设置。。我不知道这意味着什么,因为我对obj格式或3DSMax不够熟悉。但我只是在尝试将一个从3DSMax导出的OBJ导入到threejs时遇到了同样的问题。哈哈,我做了完全相同的事情XD,因为当时这是唯一有意义的事情,令人惊讶的是,我不得不下载blender,这让我很恼火;p对于记录,我也无法在Maya中打开3ds Max生成的.obj文件。然而,在通过搅拌机运行后,这是可能的。很高兴听到我不是唯一一个处理这种疯狂行为的人!当你有一个mtl文件时,混合器解决方案是否仍然有效,或者它是否以某种方式把它弄乱了?我尝试在Meshlab中打开obj并再次导出-这会将所有材质名称更改为某些默认设置(材质0、材质1等),因此这不是很有用。我相信是这样,我有一个mtl文件,并且名称实际上保持不变。@Nuitari根据您提交的答案,我已使用支持多个数字的正则表达式更新了我的名称。这确实解决了问题。非常感谢。(我不能评论你的回答,因为我没有足够高的声誉…)