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