代码之家  ›  专栏  ›  技术社区  ›  Servus7

Three.js光线投射Three.Object3D

  •  1
  • Servus7  · 技术社区  · 9 年前

    我想获取我点击的对象的名称。模型通过ColladaLoader.js加载到场景中。 我的问题是,我只是得到了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的名称与网格不同。但Raycast只返回网格如何修复?

    1 回复  |  直到 9 年前
        1
  •  1
  •   Servus7    9 年前

    我最后修改了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;
        }
        ...
    }