思路
1确定切割平面
2遍历对象网格的所有面,判断每个三角面片相对切割平面的位置(相交或不相交,不相交又分为在平面左侧和平面右侧)
3在三角面与平面相交处生成新的顶点
4将两组新的顶点,法线,面片信息分别赋值给两个网格
遇到的坑:
unity由于使用的左手坐标系,导致使用Vector3.Cross()方法的时候算出来的向量的方向是服从左手定则的,而我一直以为是右手定则。
不要直接给mesh.vertices数组赋值。
项目源码:https://github.com/dfeng306/UnityTest/tree/master/MeshCutDemo
最终效果

本文详细介绍了一种在Unity中实现三维模型网格切割的方法。通过确定切割平面,遍历对象网格的所有面,判断三角面片相对切割平面的位置,并在相交处生成新的顶点。最后,将新顶点信息赋值给两个网格,实现模型切割。文章还分享了在Unity左手坐标系下使用Vector3.Cross()方法的注意事项。
6825

被折叠的 条评论
为什么被折叠?



