Three.js 光线投射三.Object3D
Three.js raycast THREE.Object3D
我想获取我点击的对象的名称。使用 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 有一个 Mesh 没有的名字。但是 Raycast 只有 returns 个网格如何解决?
我终于修改了 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;
}
...
}
我想获取我点击的对象的名称。使用 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 有一个 Mesh 没有的名字。但是 Raycast 只有 returns 个网格如何解决?
我终于修改了 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;
}
...
}