Visual Effect Graph——屬性和事件

一 屬性

屬性是可編輯的字段,您可以使用屬性工作流(Property workflow)將其連接到圖形元素。它們可以在圖元素上找到,比如環境(Contexts)、塊(Blocks)和操作符(Operators)。

1 使用屬性

屬性顯示在圖形元素上,並將相應地將其值更改爲圖形中的實際值:將另一個屬性連接到屬性槽將顯示所連接屬性的計算值。

注意:斷開已連接的屬性後,該字段將恢復到以前設置的屬性值。

2 屬性類型

視覺效果圖中的屬性可以是用戶定義的任何類型,從基本數據類型,如布爾、整數、浮點數、矢量、紋理、動畫曲線或梯度。

3 訪問屬性的組件

由多個組件(如矢量或顏色)組成的屬性可以單獨顯示每個組件,以便將這些組件與其他兼容類型的屬性連接起來:爲此,請使用屬性旁邊的箭頭展開組件。

4 構造屬性

屬性可以在基類型之間連接以執行強制轉換。爲了更改正在處理的數據類型以繼承它的特定屬性,強制類型轉換非常有用:例如,將浮點數強制轉換爲整數以受益於整數除法。

從一種類型向另一種類型的強制類型轉換遵循以下規則:

所有來自HLSL的鑄造規則適用:

  • 除了不能強制轉換的布爾類型
  • 通過設置所有成分,標量將投射到向量中

向量將通過只取前N個分量來轉換成更小的向量

5 複合屬性類型

複合屬性類型由基本數據類型構成,以便描述更復雜的數據結構。例如,一個球體由一個位置(Vector3)和一個半徑(float)組成。

可以擴展複合屬性類型以訪問它們的組件。

6 Spaceable屬性

Spaceable屬性是特定的屬性類型,它攜帶一個空間信息(本地/世界)及其值。graph使用此信息在需要時執行自動空間轉換。

空間修飾符在屬性字段左邊是可見的,可以通過單擊它進行更改。

例如:Position類型攜帶一個Vector3值和一個空格:將屬性設置爲Local[0,1,0]將告訴graph我們在本地空間中引用0,1,0值。

根據系統模擬空間(System Simulation Space)的不同,如果需要,值將自動轉換爲模擬空間。

提示:可以使用Change Space操作符手動更改屬性空間

7 屬性節點

屬性節點是允許訪問黑板(Blackboard)中定義的圖形範圍屬性的特殊操作符節點(Operators)。使用這些屬性可以使您在整個圖的不同位置重用相同的值。

  • 如果屬性被公開,屬性節點將在屬性名左側顯示一個綠點。
  • 你可以創建一個屬性節點:
  1. 通過將節點從黑板面板拖到工作區中。
  2. 通過使用右鍵單擊上下文菜單中的創建節點菜單,並從屬性類別中選擇所需的屬性。
  • 您可以通過右鍵單擊屬性節點並選擇“轉換爲內聯”,將屬性節點轉換爲相同類型的內聯節點。
  • 從黑板中刪除一個屬性也將從圖中刪除它的所有屬性節點實例。

二 事件

事件是視覺效果圖的處理工作流輸入。通過事件,一種視覺效果可以:

  • 開始和停止產生粒子
  • 讀取從c#發送的屬性有效載荷

事件在圖中用作生成環境和初始化的輸入。

1 創建事件

可以使用事件環境創建事件。這些環境沒有輸入流,只能連接生成或初始化環境。

爲了創建一個事件環境,右鍵單擊工作區的空白空間並選擇Create Node,然後從節點創建菜單中選擇Event (Context)。

2 默認事件

視覺效果圖提供了兩個默認事件,它們被隱式地綁定到衍生上下文的開始和停止流輸入:

  • OnPlay的意圖是啓用粒子的生成,是隱式綁定到任何生成環境的開始輸入流。
  • 爲了停止粒子的生成,OnStop被隱式地綁定到任何生成環境的停止輸入流。

連接生成環境的啓動和停止輸入流上的事件環境將刪除到OnPlay和OnStop事件的隱式綁定。

3 自定義事件

可以使用事件環境在視覺效果圖中創建自定義事件。

要創建自定義事件,請使用“創建節點(Create Node)”菜單創建事件,然後在“事件名稱(Event Name)”字段中更改其名稱

4 事件屬性載荷

事件屬性有效載荷是附加在一個事件上的屬性。您可以在視覺效果圖中使用 Set [Attribute] Event Attribute>塊在生成環境中設置這些屬性,但是您也可以使用組件API(Component API)將它們附加到場景中發送的事件上。

EventAttribute有效負載是一些屬性,它們將隱式地在圖中通過事件傳播,通過生成系統,並且可以在初始化環境中使用Get Source Attribute OperatorsInherit [Attribute] Blocks來捕獲

5 默認視覺效果事件

默認的視覺效果事件定義了在視覺效果實例上執行重置時隱式發送的事件的名稱(這可以在第一次啓動時發生,也可以在效果的任何重新啓動時發生)。                          

默認的VisualEffect事件在Visual Effect Graph Asset Inspector中定義,但是可以在場景中任何實例的任何Visual Effect Inspector中重寫。

6 GPU事件

GPU事件是視覺效果圖的一個實驗特性:它支持基於其他粒子的生成粒子。您可以在視覺效果(Visual Effect Preferences)設置中啓用此選項。

GPU事件是事件環境,依賴於從其他系統發送的數據,例如當一個粒子死亡,或其他條件。以下更新塊可以發送GPU事件數據:

  • 死亡觸發事件(Trigger Event On Die):當一個粒子死亡時,在另一個系統上產生N個粒子
  • 觸發事件率(Trigger Event Rate):根據系統中的一個粒子每秒產生N個粒子(或每移動一段距離)
  • 總是觸發事件(Trigger Event Always ):每幀生成N個粒子。

這些塊連接到GPUEvent環境。此環境不處理任何塊,而是連接到子系統的初始化環境。

爲了從父粒子收集數據,子系統必須參考源屬性( Source Attributes)的初始化背景下,通過使用源屬性操作符(Get Source Attribute Operator),或繼承屬性塊(Inherit Attribute Block),如圖所示,在上面的示例中:子系統繼承了源創建它的粒子的位置,並繼承了約50%的速度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章