? 91视频精选,久久亚洲综合色区无码
聯(lián)系我們

給我們留言

聯(lián)系我們

地址:福建省晉江市青陽街道洪山路國際工業(yè)設(shè)計園納金網(wǎng)

郵箱:info@narkii.com

電話:0595-82682267

(周一到周五, 周六周日休息)

當前位置:主頁 > 3D教程 > 圖文教程

使用ProceduralMeshComponent實現(xiàn)模型實時切割

來源: 52vr | 責任編輯:傳說的落葉 | 發(fā)布時間: 2019-06-13 08:19 | 瀏覽量:
這篇文章介紹了如何使用UE4.13的ProceduralMeshComponent來實現(xiàn)針對一個模型的實時切割。
 
背景說明
 
在游戲潛龍諜影崛起:復仇 中,主角可以針對場景中的大部分物體進行實時切割。在游戲中,玩家需要指定一個切割平面,在主角揮刀后,對應(yīng)的物體便可以根據(jù)這個平面進行切割。
 
在UE4中可以使用Apex Destruction來實現(xiàn)物體的破碎效果,但由于該破碎效果是離線生成的,換句話說一個DM只能夠有一種破碎效果,因此無法達成實時切割的效果。
 
在UE4.13中,Epic加入了ProceduralMeshComopnent插件,使用這個插件可以進行針對于模型的實時切割操作。
 
前置準備工作
 
首先準備好需要進行切割的模型,我這里使用的是UE4示例中的人頭模型。值得一提的是,由于要達成實時切割的目的,因此需要啟用StaticMesh中的AllowCPUAccess屬性。
 

Unreal Engine 4 —— 使用ProceduralMeshComponent實現(xiàn)模型實時切割

 
新建ActorBP,添加Procedural Mesh Component,調(diào)用CopyProceduralMeshfromStaticMeshComopnent方法來生成一個Procedural Mesh Component.
 

Unreal Engine 4 —— 使用ProceduralMeshComponent實現(xiàn)模型實時切割

 
模型切割
 
ProceduralMeshComponent有Slice Procedural Mesh函數(shù),這個函數(shù)可以將Procedural Mesh進行切割,并且生成另外的一半模型塊。
 

Unreal Engine 4 —— 使用ProceduralMeshComponent實現(xiàn)模型實時切割

 
參數(shù)介紹:
 
Plane Position: 世界坐標系下該平面的中心位置
Plane Normal: 世界坐標系下該平面的發(fā)現(xiàn)
Create Other Half: 是否將切下來的那一塊模型獨立出來
Cap Option: 切面狀態(tài) 
No Cap: 切面不縫合,模型中空
Create New Section for Cap: 切面縫合,使用自定義的材質(zhì)
Use Last Section for Cap: 切面縫合,使用與模型一樣的材質(zhì)
Cap Material: 如果Cap Option是Create New Section for Cap時自定義的材質(zhì)
效果如下: 
 
 
 
原理分析
 
在UKismetProceduralMeshLibrary::SliceProceduralMesh()函數(shù)中,可以看到它實現(xiàn)的方法如下:
 

[代碼]:

01 SliceProceduralMesh(plane)
02 1. create two maps of base vert index to vert index m1,m2
03 2. for each vertice∈{v}
04 3.     if (vertice on the positive side of the plane)
05 4.         m1←vertice
06 5.     else
07 6.         m2←vertice
08 7. create two sections s1,s2
09 8. for each face∈{(v1,v2,v3)}
10 9.     if (v1,v2,v3on the positive side of the plane )
11 10.         s1←v1,v2,v3
12 11.     if (v1,v2,v3on the negative side of the plane )
13 12.         s2←v1,v2,v3
14 13.     else
15 14.         s1← positive vertices
16 15.         s2← negative vertices
17 16.         find clipped verticesvclip1,vclip2,vclip3,vclip4
18 17.         triangulate the clipped polygon
19 18. create cap geometry for s1,s2
20 19. create collision convex shape for s1,s2
簡單來說,就是遍歷所有的面和點,找到切割平面正向和負向的點,并且補好三角面即可。
 
運用以及注意事項
 
被切割的模型面數(shù)不宜太高,一方面是效率考慮,另一方面是切面的表現(xiàn)會有些奇怪。
被切割的模型的拓撲結(jié)構(gòu)不宜太復雜,否則碰撞體的構(gòu)建容易表現(xiàn)的很怪異。
實際運用的時候,可以考慮在切面處生成一個力場將兩個section分開一些,否則有可能因為相互的摩擦而影響表現(xiàn)。

相關(guān)文章
網(wǎng)友評論

您需要登錄后才可以發(fā)帖 登錄 | 立即注冊

關(guān)閉

全部評論:0條

推薦
熱門