Three.js.obj加载程序无法使用3Ds Max .obj

Mat*_*ond 3 javascript 3dsmax three.js

我试图使用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;

                        }

                    } );
Run Code Online (Sandbox Code Playgroud)

使用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
Run Code Online (Sandbox Code Playgroud)

小智 5

我目前遇到了同样的错误:

Error: Unexpected line: s 2
Run Code Online (Sandbox Code Playgroud)

使用3ds Max Wavefront OBJ Exporter v0.97b导出的.obj文件 - (c)2007 guruware.

我已经跟踪了与丢失的对象名称相关的@ 2pha的链接,虽然这是真的,但在手动插入对象名后,我仍然遇到了"意外行"错误.

我的解决方案虽然不是针对发生此错误的原因的具体修复,但是在Blender(https://www.blender.org/)中导入.obj文件,并立即导出.obj文件.看来由Blender v2.76(sub 0)OBJ Exporter创建的.obj文件可以使用Three.js THREE.OBJLoader导入而无需额外的手工劳动.

我希望有一天Three.js或3ds Max会纠正这个错误(这似乎是在这里为Three.js工作),但在此期间并没有人有时间.

更新:我已提交拉取请求来解决此问题:https://github.com/mrdoob/three.js/pull/8118,在此期间您可以修改smoothing_pattern以支持多个数字:

Line 220: var smoothing_pattern = /^s\s+(\d+|on|off)/;
Run Code Online (Sandbox Code Playgroud)