看了一下UKismetProceduralMeshLibrary::SliceProceduralMesh的代码实现, 发现也没想像中的复杂, 只要把网格/三角形/顶点/边的关系理清楚, 逐步分解问题就可以把复杂问题给简化成一个个的小问题...)里去
如果在正面, 保留不动
如果相交, 创建两个空的Section1和Section2
对于每个顶点, 计算到切割面的距离
如果顶点在正面, 添加Index到Set1里
如果顶点在背面,...添加Index到Set2里
对于每个三角形(三个index)
如果三个顶点都在Set1里, 把三角形加到Section1
如果三个顶点都在Set2里, 把三角形加到Section2
如果三角形与切割面相交...里没有东西, 那就可以把这个Section舍弃
根据记录的新生成的边, 创建截面几何体
把3D空间的边投影到切割面上, 变成2D空间的边
根据2D边的集合生成封闭的多边形
对多边形进行三角形化,...但是了解了原理后, 可以自己实现StaticMesh和SkeletalMesh的切割, 比如做全场景任意切割效果, 断肢效果等
向Metal Gear Rising致敬(虽然人家用的Havok-_-