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

标签 select mouseevent webgl three.js collada

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

最佳答案

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

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

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

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

关于在Three.JS中通过鼠标点击选择Collada对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11792867/

相关文章:

mysql - SQL从4个表中选择数据

qt - 在QML中拖动元素时如何实时获取鼠标坐标?

javascript - VivaGraphJS 删除链接

sql - 搜索多个表的顺序

mysql - SQL,在 SQL 行中查找 "Paths"(分组依据/区别)?

tsql - 如何递归读取所有记录并按级别深度显示 TSQL

javascript - WebGLRenderingContext.texImage2D 未实现接口(interface) ArrayBufferViewOrNull

javascript - JS - 通过 PreventDefault 调用启用幽灵元素效果

click - flot plotpan vs plotclick : how to ignore click event when panning is on?

javascript - 如何在复杂场景中快速发现某个点是否被遮挡?