IT评测·应用市场-qidao123.com技术社区
标题:
【BEPU V1物理】碰撞形状重中心化 汉化笔记#2
[打印本页]
作者:
海哥
时间:
2025-4-16 00:10
标题:
【BEPU V1物理】碰撞形状重中心化 汉化笔记#2
全部碰撞形状均以局部坐标系原点为中心。当从顶点/模型构建复杂形状(如凸包近况或移动网格形态)时,近况结构函数会自动计算质心、体质中心,并通过偏移全部形状数据使其与局部原点对其。这些形状构造函数会输出计算得到的数据位置(即从全部顶点坐标中减去该值以实现对齐)。
注意: 底子形状(盒,球)本身就以多少中心为原点,无需重中心化操作。由于这些近况是近似表示,偏移量也属于近似值。可通过以下方式确定偏移量: 对比图形的困绕盒(AABB或球体),其他测量方法,目测估算。确定偏移量后,图形与近况的对齐逻辑与复杂近况雷同。
一、题目现象
由于重中心化操作,碰撞形状不再与原始图形数据对齐。若直接利用Entity.WorldTransform同时变更图形和碰撞形状,由于初始不对齐,会出现图形"绕远处质心旋转"的异常现象,常表现为:
1.图形穿透墙壁/地板
2.物理表现与视觉严峻不符
现实上碰撞形状本身活动完全正常
解决方案
需对图形施加局部空间偏移使其与碰撞形状对齐。形状构造函数已提供所需的精确偏移量。
预制实体注意事项:利用ConvexHull/MobileMesh等预制实体类型时,其内部创建的碰撞形状会通过entity.Position自动对齐天下空间。但若通过指定天下位置的构造函数创建实体,则entity.Position将不再代表偏移量。
实现方法
1.创建逆向偏移变更矩阵(将图形移回原点)
2.组合变更公式:
effect.World = localOffsetTransform * entity.WorldTransform
复制代码
二、进阶本事
若必要以图形原点作为实体旋转中心,可通过entity.CollisionInformation.LocalPosition偏移碰撞形状。该方法可使:
图形与碰撞形状保持对齐
旋转中心位于建模软件中的原点位置
详见技术帖:《设置旋转中心的方法》
参考资源
示例项目:BEPUphysicsDemos中的GraphicMatchingDemo
相关技术讨论:
https://forum.bepuentertainment.com/viewtopic.php?f=4&t=1511
https://forum.bepuentertainment.com/viewtopic.php?f=4&t=1516
https://forum.bepuentertainment.com/viewtopic.php?f=4&t=1513
https://forum.bepuentertainment.com/viewtopic.php?f=4&t=1517
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/)
Powered by Discuz! X3.4