2014-07-16 47 views
0

我試圖加載的obj模型不加載,這裏的代碼(CoffeeScript的)OBJ模型three.js所

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 - 三.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模型刪除受影響的線路:

enter image description here][1

在3D編輯器模型看起來正常。 可能是有人遇到這樣的問題。

+0

你知道哪個模型是問題的問題?你有沒有嘗試只加載模型(沒有做縮放和其他東西)?你有沒有用標準的JavaScript來試用它?你使用的是什麼3D程序?你是從3D程序導出.obj文件還是在進行某種轉換? – 2pha

回答