ゲーム作りが大好きな人のブログ

ゲームを作るのが大好きな人のブログ。UE4とBlender、MAYA(LT)、3DCoatを使用しています!

【UE4 Anim Node】自作アニメーションノードで独自のLookAtを制作

f:id:toofu0:20190704094745p:plain

※確認バージョンはUE4.22.3。中級者向け、C++を使用します。

※間違えていたらゴメンナサイ。

UE4標準のLookAtだと少し機能が足りないため自作ノードで独自LookAtを作ることにしました。アニムノードの自作は初めてなのでドッキドキです。

 

 

 

◆ 動画

 youtu.be

 

◆ やり方

① 下記のファイルをローカルにコピー。クラス名、モジュール名等をリネーム。

 ・AnimGraphNode_LookAt.h(エディターモジュールに入れる事)

 ・AnimGraphNode_LookAt.cpp(エディターモジュールに入れる事)

 ・AnimNode_LookAt.h(ランタイムモジュールに入れる事)

 ・AnimNode_LookAt.cpp(ランタイムモジュールに入れる事)

② AnimNode_LookAt.cppのEvaluateSkeletalControl_AnyThread辺りを

 自分の好みで改変する。

 

以上なのですが単純にコピーしただけだとモジュール周りでエラーが出ます。詳細は下記サイト様で大変丁寧に説明されておりますので参考にしましょう。ありがたや~。

https://qiita.com/go_astrayer/items/accf6772c38979ffecb5

 

◆ 自作アニメーションノードの利点 

なんといっても自分が作ったアニメーションインスタンスクラスがアニメーションノードクラス内部で使えるのが最大の利点です。

Initialize_AnyThread関数で

m_AnimInstance = Cast<UMyBaseAnimInstance>(Context.AnimInstanceProxy->GetAnimInstanceObject());}

みたいな感じでGetして使いまわせます。

 

UE標準のLookAtは外部の変数を取得するためUPROPERTYを多用していますが自作のノードの場合は「どのアニメーションインスタンスクラスを使用しているか」が分かる為、UPROPERTYの使用も最小限で済ませる事が出来ます。

 

◆ 自作アニメーションノードの難点

マルチスレッドで駆動させる為、やや敷居が高くなるのが難点です。オプションでシングルスレッドで動かせるようですがマルチスレッドの恩恵を受けやすい箇所ですので出来ればマルチスレッド化したい所ですね。