MeshCollider模型碰撞穿模

  • Creator 版本: cocos creator 3.8

  • 目标平台: web

模型添加上MeshCollider 和 RigidBody 添加进场景 会出现穿模
两个模型交叉在一起
开启MeshCollider Convex 属性后 模型交叉穿模现象消失
但是 在射线检测时候 模型会比原MeshCollider 范围大一圈 请问这个怎么样实现模型不交叉 且 射线检测范围是正常的MeshCollider 范围


convex 是把所有点,

计算出一整个凸包,精确是不能这样用.

先确认,你cube.mesh ,和飞机是同一个模型

我也曾经,手写过 3D 的 射线检测 和 3d碰撞检测

体验连接

商店地址

如果想让模型精确一些 然后不用 convex 的情况下 不穿模 请问怎么设置
使用场景就是 随机生成一些模型 根据物理性质 落在一起 不是固定的位置摆放这种

精确要读模型数据,

mesh来生成的,就是最精确,

但是我看你飞机,中间像是个长方形

对 按照这个 mesh 精确就可以了 有没有实现方式 因为 mesh 过于复杂 会导致性能不好,目前就是想 一下子生成十几二十个飞机 然后落在一起 不穿模的情况下,能够精确发生射线选择某个飞机。现在是我开启了convex 就不能精确识别了,但是不开启convex 就会发生穿模

你可以用引擎编辑的减模工具,

这样可以适当减少mesh的面数,把这个mesh挂给collider或者自己管理

如果你想性能更加轻快,就像我那样自己做个: 高性能 - 3D场景管理

场景用octree管理(支持射线),mesh用的是kdtree处理(支持射线)

嗯嗯 试了一下 貌似这个属性对于我作用不大
我是做了两个 一个是飞机的正常模型 又做了一份碰撞体用的模型
正常的模型 用的是 碰撞体模型 精简后的 cube 作为 MeshCollider

现在就是性能上说得过去 就是会堆在一起穿模


这个是一个是精简后作为碰撞体的 mesh , 一个展示模型的 mesh

目前就是穿模的问题 不晓得为啥

你用法没问题,已经是最优,
显示和碰撞分开,和我想法是一样。

穿模是什么意思,

你射线没成功?还是碰撞体没生效?

物理的mesh,你得用physx或者bullet 试试

image

模型从高处随机生成 往下掉落 然后落在地面
模型交叉在了一起

物理引擎用的 bullet physx 也试了 都会发生这种情况

我没试过引擎的mesh 碰撞,

不知道实际使用的精确性如何,

你可以适当调节下物理面板参数