2015-02-04 12 views
1

클릭 한 개체의 이름을 가져오고 싶습니다. 모델이 ColladaLoader.js로 Scene에로드됩니다. 내 문제는, 난 그냥 THREE.Mesh 개체를 얻을 수 있지만 메쉬 이름을 포함하지 않기 때문에 THREE.Object3D 개체가 필요합니다.Three.js raycast THREE.Object3D

나는 다음과 같은 코드를 사용하는 경우 :

scene.traverse (function (object){ 
    console.log(object); 
}); 

를 내가 얻을 :

THREE.Object3D {uuid: "085928DC-5493-4C57-B142-51D2A95F27B6", name: "Schraube_M4x16_002", type: "Object3D", parent: THREE.Object3D, children: Array[1]…} 
THREE.Mesh {uuid: "1AD3D989-CEB7-4B89-BE88-6D58C1C24AD6", name: "", type: "Mesh", parent: THREE.Object3D, children: Array[0]…} 

Object3D는 이름 메쉬를하지 않았다. 하지만 Raycast는 메쉬 만 반환합니다. 어떻게 해결할 수 있습니까?

+0

메시에 이름을 추가하십시오. – gaitat

+0

그러나 각 메쉬에 콜라주 이름을 지정하는 방법. My Collada Model에는 많은 아이들이 있습니다. – Servus7

+1

메쉬에서 트리를 가로 지르면 Object3D가 나타납니다. 그렇지 않으면 ColladaLoader를 수정해야합니다. – gaitat

답변

1

마지막으로 ColladaLoader를 수정하고 노드 이름을 메쉬에 추가했습니다.

function createSceneGraph(node, parent) { 
    ... 
    // geometries 
    ... 
    } else { 
     if (geom.isLineStrip === true) { 
      mesh = new THREE.Line (geom); 
     } else { 
      mesh = new THREE.Mesh (geom, material); 
     } 
     mesh.name = node.name; 
    } 
    ... 
}