我正在尝试使用.obj将一个objLoader加载到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;
}
} );所有使用搅拌器模型都很好,但是每当我尝试使用我自己的自定义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发布于 2016-02-11 00:42:58
我目前正经历着同样的错误:
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以支持多个数字:
Line 220: var smoothing_pattern = /^s\s+(\d+|on|off)/;发布于 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“作为参数导出它。
https://stackoverflow.com/questions/35297580
复制相似问题