Unity2018以后的MeshCollider(网格碰撞体) 下篇

Unity2018以后的MeshCollider(网格碰撞体) 下篇

OK,接着上期的讲。
unity5以后的MeshCollider多了一个Cooking options选项。
最早发现这个玩意的时候兴奋惨了,还以为unity终于可以像UE4那样,自己根据模型就可以烘培一个用于碰撞的物理网格出来。我又有一个可以不学虚幻只学unity的理由啦!!!

然而翻阅了官方手册后才发现是我太天真了。。。

好吧。。。认真读了一番后发现这个选项是用于决定unity内置的物理引擎如何处理这个网格的(Enable or disable the Mesh cooking options that affect how the physics engine processes Meshes.)在这里插入图片描述
有五个选项:
None:禁用所有的烘培选项
Everything:启用所有的烘培选项
Cook for Faster Simulation:似乎是为了更好的模拟效果,当它被启用时,物理引擎会做出一些额外的步骤来保证用于碰撞的网格在运行时是最优的。如果禁用,则系统会选择最快的烘培方法。这样得到的物理网格不一定是最好的。
Enable Mesh Cleaning:启用时清理网格上的退化三角形以及一些几何构件。这将使得网格更适合用于碰撞检测并拥有更加精确的碰撞点。
(补充:退化三角形:即面积为0的三角形,比如三个内角的度数为 (180°,0°,0°) 或 (90°,90°,0°);三边其中一条边的长度为0;一条边的长度等于另外两条之和这些的)
Weld Colocated Vertices:让物理引擎移除掉等顶点,当启用时,物理引擎会合并掉有着相同位置的顶点。这对于发生在运行时的碰撞反馈非常重要!

好吧,白高兴一场,原来MeshCollider的Cooking Options原来是怎么用的。
我重新翻阅了一下官方手册里MeshCoooking的概念:
Mesh cooking changes a normal Mesh into a Mesh that you can use in the physics engine.
也就是说,它能让一个普通的网格变成一个碰撞网格并能在物理引擎中使用

就在我写完这些准备收工的时候在unity的模型载入设置中看到了这个:在这里插入图片描述
当时一惊,想着,“难道最后那个‘生成碰撞体’就是我梦寐以求的自主生成碰撞网格?!”赶紧一个勾选就是Apply。然后才发现这玩意也就是把该模型中所有有网格过滤器(MeshFilter)组件的物体自动加上一个网格碰撞体组件。。。

关于MeshCollider的讨论就在这里告一段落了。不过研究到这里,我开始怀疑,是不是我在虚幻里看到的生成碰撞网格的功能也是需要模型自带的网格?它是基于模型带的网格而不是只需你的模型就能得到一个网格?也许是我以前自学虚幻的时候理解有误?如果有大神知道真相,麻烦指出一下,感谢。

发布了3 篇原创文章 · 获赞 2 · 访问量 210

猜你喜欢

转载自blog.csdn.net/weixin_43740653/article/details/103839394