Three.js raycast THREE.Object3D

时间:2015-02-04 15:19:21

标签: three.js collada raycasting

我想获取我点击的对象的名称。使用ColladaLoader.js将模型加载到Scene中。 我的问题是,我只是得到THREE.Mesh对象,但我需要THREE.Object3D对象,因为Mesh不包含名称。

如果我使用以下代码:

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的名称是Mesh not。但是Raycast只返回网格如何解决这个问题?

1 个答案:

答案 0 :(得分: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;
    }
    ...
}