关闭物理,如何添加包围盒

请各位了解的朋友赐教,在关闭物理引擎的情况下,如何添加包围盒,我不需要碰撞检测。
但是需要包围盒来在代码中确定模型的范围。

模型自带包围盒,调用获取: this.node.getComponent(ModelComponent).model.worldBounds;

感谢分享。
我打算建立一个空节点,在节点中分布多个模型,然后在节点上套用一个包围盒,将所有模型包起来。
请问这样有思路吗。

逻辑上的包围盒简单,判断所有model 的 包围盒最小坐标和最大坐标就能得出。


如果要在编辑器显示,官方有个这个方法, 继承组件后实现 _getlocalbounds方法 ~~,不知道有没有作用。
https://docs.cocos.com/creator3d/api/zh/classes/component.component-1.html#_getlocalbounds
(测试了目前好像没用)

现在蛋疼的就是在编辑器无法可视化编辑的问题,代码推算出包围盒的6个面,这种适合摆放的模型没有特别突出的定点。

感觉官方还没实现,我选中多个物体的时候也没出现大包围盒。

嗯,官方文档能查看的东西太少。
不能获取AABB是个蛋疼得事。
因为我这个是横版卷轴,模型不旋转,我在每个面各添加一个空节点,暂时解决问题。

可以通过 model component 里面的 model 获取 aabb,不过名称叫做 worldBoundsmodelBounds

我是在一个空节点下面添加了多个模型节点,然后要获取这组模型的aabb,只能迭代计算吗?

模型 aabb 是单个模型组件的,多个需要进行合并,geometry模块里的 aabb 有静态的 merge 接口,你可以合并这些 aabb

好的,谢谢

感觉有时候,合并的包围盒不准确

 public getBoundParams() {
      

        let boundsList: geometry.AABB[] = this.getComponentsInChildren(MeshRenderer)
            .filter((i) => {
                return i.node.activeInHierarchy === true;
            })
            .map((mesh) => {
                return mesh.model.worldBounds;
            });

        console.log('boundsList', boundsList);

        const bounds = boundsList.reduce((acc: geometry.AABB, bound: geometry.AABB) => {
            let tempBound: geometry.AABB = new geometry.AABB();
            return geometry.AABB.merge(tempBound, acc, bound);
        });
        const minPos: Vec3 = new Vec3(0, 0, 0);
        const maxPos: Vec3 = new Vec3(0, 0, 0);
        bounds.getBoundary(minPos, maxPos);

        console.log('bounds', minPos, maxPos);
        return {
            scale: bounds.halfExtents,
            center: bounds.center.clone(),
        };```