首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Three.js .obj加载程序不使用3Ds Max .obj

Three.js .obj加载程序不使用3Ds Max .obj
EN

Stack Overflow用户
提问于 2016-02-09 16:49:21
回答 2查看 1.6K关注 0票数 3

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

代码语言:javascript
运行
复制
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;

                        }

                    } );

所有使用搅拌器模型都很好,但是每当我尝试使用我自己的自定义3Ds Max模型时,.obj将不会在浏览器中加载并给出一个错误。我的导出错误还是Three.js不支持3Ds Max .obj出口商?

错误消息

代码语言:javascript
运行
复制
    Error: Unexpected line: s 2
parseOBJLoader.js:339
(anonymous function)OBJLoader.js:24
(anonymous function)three.min.js:376:387
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-11 00:42:58

我目前正经历着同样的错误:

代码语言:javascript
运行
复制
Error: Unexpected line: s 2

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

我跟踪了@2apa与缺少的对象名称相关的链接,虽然这是正确的,但是在手动插入对象名之后,我仍然遇到了“意外行”错误。

我的解决方案,虽然不是一个特定的修复,原因是发生这个错误,是导入.obj文件在搅拌器(https://www.blender.org/),并立即导出一个.obj文件。看来,Blender v2.76 (Sub0) OBJ导出程序创建的.obj文件可以使用Three.js THREE.OBJLoader导入,无需额外的手工操作。

我希望有一天Three.js或3 day会纠正这个错误(它似乎正在为Three.js 这里做准备),但与此同时,没有人有时间这么做。

更新:我已经提交了一个请求来修复这个问题:https://github.com/mrdoob/three.js/pull/8118,同时您可以修改您的smoothing_pattern以支持多个数字:

代码语言:javascript
运行
复制
Line 220: var smoothing_pattern = /^s\s+(\d+|on|off)/;
票数 5
EN

Stack Overflow用户

发布于 2016-02-11 14:26:08

我在3ds、Max Wavefront、OBJ出口商v0.97b和最新版本(74)中都遇到了同样的错误。

我没有解决方案,但我可以看到问题是,当OBJLoader.js解析obj文件时,它查找格式为\^s\s+([01]|on|off)\的平滑组,该格式只匹配“s1”或“s0”,因此将在“s2”及以上抛出一个错误。(您可以使用https://regex101.com检查regex,以防像我一样无法读取regex;)

它在导入和导出Blender时工作,因为Blender将只以“s1”和"s“作为参数导出它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35297580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档