轉自:http://gad.qq.com/article/detail/33199
《合金裝備:復仇》里面,有一個很有趣的設定,游戲里大部分的場景和物件都可以用主角的刀動態切割。 UE4中的ProceduralMeshComponent這個組件可以很容易的就實現這種功能,下面就給大家介紹下UE4中動態切割模型實現的方法。
准備模型
首先我們准備一個模型。
我做了一個簡單的圓柱體,用來測試。注意需要切割的地方,為了保證細節,多放點頂點。
為了能夠動態切割,我們要勾選這個模型的Allow CPUAccess選項。
新建藍圖
新建一個Actor藍圖,為它添加兩個組件,一個是StaticMeshComponent,一個是ProceduralMeshComponent,在Construct Script中,將StaticMesh的模型數據拷貝到ProceduralMesh中去。
調整ProceduralMesh參數
出於優化的目的,ProceduralMeshComponent默認勾選了UseComplexAs SimpleCollision這個屬性,為了實現我們切割下來的能正常的進行物理模擬,需要把這個屬性給取消勾選。
實現切割
SliceProceduralMesh實現模型的切割。說下幾個參數:
* PlanePosition是切割平面的位置
* PlaneNormal 是切割平面的法線,也就是朝向
* Create Other Half 切割下來的部分,是否創建新的ProceduralMesh
* Cap Option No Cap,切面不縫合,Create New Section For Cap; 縫合,使用自定義的材質來貼補縫合的面; Use Last Section for Cap,使用模型的材質來貼補縫合的面。
使用ProceduralMeshComponent實現模型實時切割
轉自:http://www.52vr.com/article-875-1.html
這篇文章介紹了如何使用UE4.13的ProceduralMeshComponent來實現針對一個模型的實時切割。
背景說明
在游戲潛龍諜影崛起:復仇 中,主角可以針對場景中的大部分物體進行實時切割。在游戲中,玩家需要指定一個切割平面,在主角揮刀后,對應的物體便可以根據這個平面進行切割。
在UE4中可以使用Apex Destruction來實現物體的破碎效果,但由於該破碎效果是離線生成的,換句話說一個DM只能夠有一種破碎效果,因此無法達成實時切割的效果。
在UE4.13中,Epic加入了ProceduralMeshComopnent插件,使用這個插件可以進行針對於模型的實時切割操作。
前置准備工作
首先准備好需要進行切割的模型,我這里使用的是UE4示例中的人頭模型。值得一提的是,由於要達成實時切割的目的,因此需要啟用StaticMesh中的AllowCPUAccess屬性。



SliceProceduralMesh(plane) create two maps of base vert index to vert index m1,m2 for each vertice∈{v} if (vertice on the positive side of the plane) m1←vertice else m2←vertice create two sections s1,s2 for each face∈{(v1,v2,v3)} if (v1,v2,v3on the positive side of the plane ) s1←v1,v2,v3 if (v1,v2,v3on the negative side of the plane ) s2←v1,v2,v3 else s1← positive vertices s2← negative vertices find clipped verticesvclip1,vclip2,vclip3,vclip4 triangulate the clipped polygon create cap geometry for s1,s2 create collision convex shape for s1,s2