當前位置:成語大全網 - 漢語詞典 - [UE]混沌粉碎方案分析

[UE]混沌粉碎方案分析

混沌是UE開發的新壹代物理引擎,核心目標是提供影視級別的實時碾壓方案。但是,它的最終目的不僅僅是為所有主流的物理特性提供壹套完整的方案,包括流體模擬、玩偶模擬和布料模擬。但是它的粉碎方案目前在展示,開發完成度很高,這也是我們介紹的主體。

UE更換了原有的Physx物理組件希望有所突破,那麽混沌相比Physx方案有什麽優勢?

壹般來說,它的優勢可以概括為以下四個方面:

碎片化的表現在之前UE發布的宣傳視頻中就可以看到。

Epic還向大家展示了GDC2019中混沌與遊戲性的互動表現:

我們來看看混沌的實現過程,主要分為五個部分。

首先是幾何收集。什麽是幾何收藏?這是UE專門為物理碾壓增加的資產。它由壹個或多個StaticMesh組成,用於表示需要粉碎的對象。在Geometry集合中,所有材質相同的StaticMesh都會在兩個DrawCall中繪制,壹個繪制破碎對象的外部面片,另壹個繪制破碎對象的內部面片。

混沌粉碎的實現從幾何集合的劃分開始,如下圖所示。

UE提供多種劃分模式,包括標準Voronoi劃分、徑向劃分等。這個分區可以根據需要進行遞歸,如下圖所示。

我們通常會再次細分壹些大的碎片,直到分區方案符合我們的需求。

分割後,我們將每個片段分組為壹個簇,簇可以級聯,這樣壹個幾何集合的所有簇就會形成壹個樹形結構,樹的不同級別對應不同的分割粒度,如下圖所示:

在編輯分割階段,我們可以指定壹個物體的碾壓等級,下面的動畫給出了不同等級碾壓對應的效果。

這裏並不局限於所有的集群都按照相同的級別進行碾壓。事實上,我們可以為每個集群設置壓碎強度。通過為不同的簇設置不同的強度,可以得到更隨機的碾壓效果。例如,我們可以將最粗簇的壓碎強度設置為1。最細粒簇的壓碎強度設置為10,這樣當力逐漸增大時,壓碎粒度會越來越小,從而獲得更真實的壓碎感。當然,在實際情況下,為了讓壓碎表現更加自然,我們通常會針對不同的團簇設置壹個更加隨機的壓碎強度,而不是如此統壹地設置壓碎強度。

剛才我說了壓碎力,那麽壓碎力是怎麽起作用的呢?這就要介紹到連接圖了,連接圖是由多個簇(非葉簇,葉簇指多個片段)之間的連線組成的圖,如左圖所示,在這個圖中,每個節點對應壹個簇。每條邊代表壹個簇和相鄰簇之間的連接強度。當力超過設定的閾值時,該邊緣將斷開。當壹個集群的所有邊都斷裂後,會根據力度計算出下壹個移動軌跡,從而完成碾壓效果。

上圖顯示了最粗簇的連接圖。事實上,每個簇中也應該有相應的子連接圖,以實現更精細的粉碎粒度。

連接圖給出了碎片之間的連接關系,那麽如何指定碎片之間的連接強度以及子彈等物體碰撞時產生的破碎力?這壹切都取決於我們最後在這裏提到的領域。場是壹個具有壹定形狀的體積,這個體積會對其覆蓋範圍內的簇施加影響,比如在連接圖中指定連接強度,比如在這個體積內部施加壹個隨著離中心點距離的增加而減小的徑向破壞力。如果把這個場附著在壹個殼上,就可以達到碎片向四面八方飛濺的效果。

領域有很多種。下面是壹些常用的:

前面介紹了混沌的實現過程,下面簡單介紹壹下混沌是如何在如此大範圍的碎片化下保持壹個實時幀率的,主要有以下幾個原因:

[1]UE4中混沌-毀滅的秩序| GDC 2019 |虛幻引擎

[2]混沌破壞概述

【3】如何評價虛幻引擎4.23版混沌物理和毀滅系統?

[4]虛幻引擎5中的混沌物理

[5]異步節拍物理概述