? ,,

新锐科创官网-专业室内外高精度人员定位系统厂家及服务商

聯(lián)系我們

給我們留言

聯(lián)系我們

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

郵箱:info@narkii.com

電話:0595-82682267

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

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

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

來源: 52vr | 責(zé)任編輯:傳說的落葉 | 發(fā)布時(shí)間: 2019-06-13 08:19 | 瀏覽量:
這篇文章介紹了如何使用UE4.13的ProceduralMeshComponent來實(shí)現(xiàn)針對一個模型的實(shí)時(shí)切割。
 
背景說明
 
在游戲潛龍諜影崛起:復(fù)仇 中,主角可以針對場景中的大部分物體進(jìn)行實(shí)時(shí)切割。在游戲中,玩家需要指定一個切割平面,在主角揮刀后,對應(yīng)的物體便可以根據(jù)這個平面進(jìn)行切割。
 
在UE4中可以使用Apex Destruction來實(shí)現(xiàn)物體的破碎效果,但由于該破碎效果是離線生成的,換句話說一個DM只能夠有一種破碎效果,因此無法達(dá)成實(shí)時(shí)切割的效果。
 
在UE4.13中,Epic加入了ProceduralMeshComopnent插件,使用這個插件可以進(jìn)行針對于模型的實(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方法來生成一個Procedural Mesh Component.
 

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

 
模型切割
 
ProceduralMeshComponent有Slice Procedural Mesh函數(shù),這個函數(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: 是否將切下來的那一塊模型獨(dú)立出來
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
簡單來說,就是遍歷所有的面和點(diǎn),找到切割平面正向和負(fù)向的點(diǎn),并且補(bǔ)好三角面即可。
 
運(yùn)用以及注意事項(xiàng)
 
被切割的模型面數(shù)不宜太高,一方面是效率考慮,另一方面是切面的表現(xiàn)會有些奇怪。
被切割的模型的拓?fù)浣Y(jié)構(gòu)不宜太復(fù)雜,否則碰撞體的構(gòu)建容易表現(xiàn)的很怪異。
實(shí)際運(yùn)用的時(shí)候,可以考慮在切面處生成一個力場將兩個section分開一些,否則有可能因?yàn)橄嗷サ哪Σ炼绊懕憩F(xiàn)。

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

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

關(guān)閉

全部評論:0條

推薦
熱門
主站蜘蛛池模板: 精品一区久久 | 亚洲 国产 日韩 欧美 | 欧美日韩亚洲精品一区 | 无遮无挡爽爽免费毛片 | 国产欧美日韩综合在线一 | 亚洲99久久久久综合 | 久久综合性| 老司机免费在线观看视频 | 亚洲国产综合在线 | 色屁屁www影院免费观看软件 | 麻豆首页 | 日日摸日日碰人妻无码 | 最近最好的中文字幕2019免费 | 四虎永久在线观看免费网站网址 | 成人综合婷婷国产精品久久蜜臀 | 国产一区二区不卡视频 | 国产精品免费露脸视频 | 日韩亚洲天堂 | 久久精品动漫一区二区三区 | 亚洲人成色777777精品音频 | 一二三四在线视频观看社区 | 国产精品国产自线拍免费软件 | 九九精品激情在线视频 | 免费播放一区二区三区 | 免费高清成人性视频3p网站 | 久久久久国精品产熟女久色 | 久久加久久 | 国产艳妇av在线观看果冻传媒 | 午夜影院在线观看视频 | 日韩在线视频一区 | 欧美成人免费全部观看在线看 | 黄色一级大片免费看 | 国产成人综合久久精品 | 又色又污又爽又黄的网站 | 亚洲高清在线观看看片 | 国产精品亚洲五月天高清 | 夜夜夜高潮夜夜爽夜夜爰爰 | 亚洲综合欧美在线 | 成人国产免费 | 制服丝袜美腿一区二区 | 香蕉人精品视频多人免费永久视频 |