2012年8月30日 星期四

自訂變形節點

UE的動畫樹(AnimTree)提供動畫混合、變形混合、骨架控制三種功能。它可以讓開發者自訂節點來擴充新的功能,在此篇簡單說明一下如何自訂變形節點。

變形節點的基礎類別叫做MorphNodeBase,其他的變形節點都會直接或間接繼承自此類別。它定義數個C++虛擬函式以供子類別擴充,以下列出重要的成員:
  • NodeName [name] :使用者可自行定義的節點名稱。可以呼叫SkeletalMeshComponent的FindMorphNode()函式找到指名的變形節點。
  • InitMorphNode(SkeletalMeshComponent) :動畫樹會呼叫此函式初始化變形節點。
  • GetNodes(TArray<UMorphNodeBase*>& OutNodes):列出此節點和其下所有節點。
  • GetActiveMorphs(TArray<FActiveMorph>& OutMorphs):列出以此節點算起子樹的所有節點裡,作用中的變形目標和其權重。

2012年8月18日 星期六

自訂編輯器引擎

UEd在開啟編輯器前會先建立一個型別為EditorEngine的編輯器引擎物件,然後將它的位址存放在全域指標GEditor裡。UEd提供讓開發者自訂編輯器引擎的功能,只要繼承UnrealEdEngine自訂引擎類別,然後在DefaultEngine.ini裡指定自訂的類別即可:
[Engine.Engine]
EditorEngine=MyEditor.MyEditorEngine 
EditorEngine類別提供許多虛擬函式可供覆載,以下列出重要的函式:
  • Init():引擎初始化。
  • PreExit():關閉引擎前會呼叫這個函式。
  • Tick( DeltaSeconds ):更新遊戲時會呼叫這個函式。
  • Exec( Command, OutputDevice=GLog ):執行控制台指令。
  • PlayInEditor():在編輯器中啓動試玩功能時會呼叫這個函式。
  • EndPlayMap() :在編輯器中關閉試玩功能時會呼叫這個函式。