[英]OBJ model not loading in Three.JS
我正在尝试加载obj模型,这是代码(CoffeeScript)
loader = new THREE.OBJLoader manager
if loadedModels.diamondRing == null
loader.load "obj/diamond/ring1.obj", (object) ->
object.traverse (child) ->
if child instanceof THREE.Mesh
child.material = silverMaterial.clone()
object.position.y = 10
object.scale.x = object.scale.z = object.scale.y = config.p1.size*0.05
object.userData.ring = true
combine.add object
loadedModels.diamondRing = combine.clone()
loader.load "obj/diamond/diamond1.obj", (object) ->
object.traverse (child) ->
if child instanceof THREE.Mesh
child.material = silverMaterial.clone()
object.position.y = 10
object.userData.diamond = true
object.scale.x = object.scale.z = object.scale.y = config.p1.sizeDiamond*0.075
combine.add object
但是我发现了一个例外:
Uncaught TypeError: Cannot read property 'clone' of undefined obj.js:93
其中obj.js-THREE.OBJLoader。
在第93行放置了add_face函数:
function add_face( a, b, c, normals_inds ) {
if ( normals_inds === undefined ) {
geometry.faces.push( face3(
vertices[ parseVertexIndex( a ) ] - 1,
vertices[ parseVertexIndex( b ) ] - 1,
vertices[ parseVertexIndex( c ) ] - 1
) );
} else {
geometry.faces.push( face3(
vertices[ parseVertexIndex( a ) ] - 1,
vertices[ parseVertexIndex( b ) ] - 1,
vertices[ parseVertexIndex( c ) ] - 1,
[
-- line 93 --> normals[ parseNormalIndex( normals_inds[ 0 ] ) ].clone(),
normals[ parseNormalIndex( normals_inds[ 1 ] ) ].clone(),
normals[ parseNormalIndex( normals_inds[ 2 ] ) ].clone()
]
) );
}
}
我认为法线存在问题,但我不知道确切在哪里。 阅读模型问题发生在最后几行,如下所示:
f 6802//6802 6803//6803 6804//6804
如果在obj模型中删除受影响的行:
在3D编辑器模型中看起来很正常。 可能有人遇到这样的问题。
我通过将标准obj loader更改为此https://github.com/maxogden/stl-obj-viewer来解决了这个问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.