【问题标题】:How to select a root Object3D using Raycaster如何使用 Raycaster 选择根 Object3D
【发布时间】:2014-11-29 21:02:14
【问题描述】:

我有一个父 Object3D 有子网格。如何使用Raycaster 只选择根父对象?

my example

【问题讨论】:

    标签: three.js


    【解决方案1】:

    如果您的父 Object3D 有多个子网格,并且您想通过光线投射选择父网格,您可以执行以下操作:

    将父对象添加到对象数组中:

    var objects = [];
    ...
    objects.push( root_parent_object );
    

    为每个子对象添加一个指向根父对象的指针:

    child.userData.parent = root_parent_object;
    

    将递归标志传递给intersectObjects()

    var intersects = raycaster.intersectObjects( objects, true );
    

    现在当光线投射器与子对象相交时,您可以获得根对象。

    three.js r.68

    【讨论】:

    【解决方案2】:

    我对使用从 Sketchup 导出的 collada 对象也有类似的需求。 Meshes 前面有多个父母的踪迹,所以我所做的就是:

    if (intersects.length >0){
        par = intersects[ 0 ].object.parent;
        while(par.type !== "Group"){
            par = par.parent;
        } 
        groupName = par.name;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-19
      • 2014-11-30
      • 2021-11-16
      • 2015-02-21
      • 1970-01-01
      • 2020-09-25
      • 2016-12-29
      • 1970-01-01
      相关资源
      最近更新 更多