? 殴一级黄片在线播放,久久精品免费看一,无码纯肉视频在线观看免费
聯(lián)系我們

給我們留言

聯(lián)系我們

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

郵箱:info@narkii.com

電話:0595-82682267

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

當(dāng)前位置:主頁(yè) > 3D教程 > 圖文教程

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

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

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

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

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

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

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

 
參數(shù)介紹:
 
Plane Position: 世界坐標(biāo)系下該平面的中心位置
Plane Normal: 世界坐標(biāo)系下該平面的發(fā)現(xiàn)
Create Other Half: 是否將切下來(lái)的那一塊模型獨(dú)立出來(lái)
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時(shí)自定義的材質(zhì)
效果如下: 
 
 
 
原理分析
 
在UKismetProceduralMeshLibrary::SliceProceduralMesh()函數(shù)中,可以看到它實(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
簡(jiǎn)單來(lái)說(shuō),就是遍歷所有的面和點(diǎn),找到切割平面正向和負(fù)向的點(diǎn),并且補(bǔ)好三角面即可。
 
運(yùn)用以及注意事項(xiàng)
 
被切割的模型面數(shù)不宜太高,一方面是效率考慮,另一方面是切面的表現(xiàn)會(huì)有些奇怪。
被切割的模型的拓?fù)浣Y(jié)構(gòu)不宜太復(fù)雜,否則碰撞體的構(gòu)建容易表現(xiàn)的很怪異。
實(shí)際運(yùn)用的時(shí)候,可以考慮在切面處生成一個(gè)力場(chǎng)將兩個(gè)section分開一些,否則有可能因?yàn)橄嗷サ哪Σ炼绊懕憩F(xiàn)。

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

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

關(guān)閉

全部評(píng)論:0條

推薦
熱門