在 Three.JS 中通过鼠标单击选择 Collada 对象

Posted

技术标签:

【中文标题】在 Three.JS 中通过鼠标单击选择 Collada 对象【英文标题】:Select Collada objects by mouse Click in Three.JS 【发布时间】:2012-08-01 08:00:30 【问题描述】:

我需要通过鼠标点击在 Three.JS 中选择 Collada 对象。我知道我可以根据他们的 id 选择对象,并且我看到了一些用户可以与几何定义的对象交互的示例 (here)。但我需要访问 Collada 格式的对象。

【问题讨论】:

【参考方案1】:

假设 dae_scene 是从 ColladaLoader 返回的 COLLADA 场景,您可以执行以下操作来检查交叉点:

var toIntersect = [];
THREE.SceneUtils.traverseHierarchy(dae_scene, function (child) 
    if (child instanceof THREE.Mesh) 
        toIntersect.push(child);
    
);

这将获取 COLLADA 场景中的所有 Mesh 对象。然后,您可以使用该数组来查找射线交点,如下所示:

var ray = new THREE.Ray( camera.position,
                         vector.subSelf( camera.position ).normalize() );
var intersects = ray.intersectObjects( toIntersect );

【讨论】:

感谢 Jeff 的快速回复。

以上是关于在 Three.JS 中通过鼠标单击选择 Collada 对象的主要内容,如果未能解决你的问题,请参考以下文章

Three.js用相机选择对象,没有鼠标

如何在 Flash AS3 中通过鼠标单击暂停多个符号

使用正交相机从鼠标位置获取 Three.js 世界坐标

在three.js中获取鼠标点击点的3D坐标

当鼠标悬停(悬停)在对象上时,鼠标光标应该改变(three.js)

THREE.JS : 带有光线投射器和透视相机的点击事件