用手包碰撞体很容易出现瑕疵,比如浮空,用复杂碰撞对于移动端性能消耗和内存都比较大,而且我们服务器是PC和移动端统一,需要统一的物理碰撞,有没有合适的方案推荐呢?
您好, 我看了一下示例资产, 有两个思路可以考虑下:
- 山石的所有物理交互仅用简单碰撞, 即碰撞复杂度设置为 Use Simple Collision As Complex, 这种情况下需要用比较少的凸包更好的匹配外形. 引擎内Geometry模块提供了凸分解工具, 很适合自然界这种不规则的山石 崖壁, 我测试比示例资产中现有的简单碰撞效果更好一些. 如下图, 可以在建模编辑模式 -> Attribs -> Mesh To Collision找到这个凸分解的工具. 而且这个功能也有Geometry Script的接口, 可以写一个蓝图脚本, 批量处理所有的山石资产, 比手动制作容易很多. [Image Removed]
- 山石的物理交互既可用简单碰撞也可用复杂碰撞, 即碰撞复杂度设置为 Simple And Complex, 攀爬时IK位置计算用复杂碰撞, 其他可视化检查之类的交互用简单碰撞. 这样做的好处是, 除攀爬外其他的物理交互开销可以进一步简化, 比如一个山石只用一两个凸包. 攀爬用的复杂碰撞也可以用proxy碰撞体进一步简化. 如下图, 用Geometry工具简化模型后输入给资产的Complex Collision Mesh. 一般来讲, 对比多个凸包, 带凹面复杂碰撞可以用更少的面更好的匹配外形, 我觉得对这种资产来讲, 同时包含简单和复杂碰撞, 不会比方案一内存大很多, 且只要控制好复杂碰撞的面数, 少量使用, trace的开销应该也比较可控. [Image Removed]
碰撞简化这部分有篇文章也可以参考下: 技术美术的Chaos性能优化指南
UE凸分解功能简介: Navigation-Driven Approximate Convex Decomposition
好的,我们来参考下,感谢