废话不多说,我直接上代码了。
链接:https://pan.baidu.com/s/1tUu7c0nkMN7qRq3r49rgbA
提取码:mama
切割的思路大概是。
1、把网格分成两部分A B。
2、把与切割平面相交得三角形单独提出来C。
3、把单独提出来的相交三角形C,重新切割,分为左右两部分 分别加入A B。
4、这里已经做好了两个网格的分组。接下来是封口
6、保存有第3步新生成的顶点(他们都已经加入了A B),把属于A的新顶点全部连起来,
具体就是,随机找一个中心点,其他点全部连他。 B同样。
7、连好之后,也是把三角形分别加入A B两组。
8、通过Laya生成网格得接口,传入参数,生成新的Mesh。
…………………………………………
实际上还是会遇到很多问题,
1、例如三角形,连接的时候,如果不是按逆时针的话,会有面片显示不出来。(具体是因为相机渲染,法向量朝外得面,顺时针,是向内的)。具体解决方案的话,需要用已有得顶点,求出他们的中心,利用 新生成得三角形得法向量 与 中心点与新生成三角形的某个顶点相连得 向量做一个点积……来判断三角形的法向量方向。
2、……记不得了。
写的一般,性能的话,如果是简单的模型会很舒服。
复杂的网格,在小游戏平台,会有卡顿,可以把上面的步骤分帧计算一下,或者自己写一个性能更好的。
可以给大家参考参考。