カーテンが開くアニメーションを3dsmaxで作り、fbxで出力しました。
そのfbxのアニメーションを、イベントを起こしたときに再生できるようにしたいです。
レベルBPで制御しようとしたのですが、途中で詰まってしまいました。
以下行ったことです。
・アニメーションBPを該当するスケルトンを元に作成
・アニメーションBP内にて resultにカーテンのアニメーションシーケンスを結ぶ
・アニメーションBP内にて アニメーションシーケンスのループを外す
その後、レベルBPにて、イベントノードからアニメーションBPを再生できそうなノードを探してみたのですがうまくいきません。
どうすればよいでしょうか。レベルBPを使っていなくても構いません。
初歩的な質問ですが、回答よろしくお願いいたします。
LunaNelis
(ネリスさんMain)
2
基本的にAnimGraph上のノードは再生されっぱなしのため、この状態だとゲーム開始時に即再生されソレっきりになってしまうと思います。
一つの方法としては、開けるアニメーション・閉じるアニメーションを用意し、ステートマシンの中で切り替えるというものです。
それぞれの行き来のためのフラグを作成し、外部でその値を変えることで開け閉めをコントロールすることができるはずです。
そのフラグの変え方に関してですが、以下のようにスケルタルメッシュからGetAnimInstance関数を使うことで使用しているアニメーションBPを取得できるので、コレをキャストしてフラグを変更することが可能です。
ご回答ありがとうございます。
早速、max上で閉じるアニメーションを作りました。
使用したカーテンのオブジェクトは先と同じもので、開くアニメーションの後に閉じるアニメーションを入れ、
閉じる部分のキーのみを出力して作りました。
しかし出力後、スケルトンが違うためかAnimGraphのCloseノードに
閉じるアニメーションシーケンスを入れることが出来ませんでした。
開閉アニメーションを一連の流れで書き出し、UE4上で分断する方がうまくいくのでしょうか。
そういうことは可能なのでしょうか。
また、2枚目のセットノードはどこで変数を定義しているものなのか(どこからでてきたのか)、教えていただけると幸いです。
アニメーションBPにおいて、スケルトンが違うことの問題はUE4で置換することに成功し、自己解決できました。
自分なりに最後まで形にしてみたのですが、プレイすると勝手にOpenアニメーションがループしてしまいます。
よろしければご指南をお願い致します。
①ステート内のノード
シーケンスから変数を昇格して、レベルBPで使用・再生できる変数を作った(つもり)
②Open⇔Closeのルールは大丈夫か。
再生中じゃなければ遷移可能、という設定にすればOKのはずなのでそれを意図
③レベルBPの変数はこれで良いのか
※不具合?により再度投稿。連続になっていたらすみません。
ひとまず組んでみたのですが、プレイするとOpenアニメーションがループしている状態のままでした。
引き続きアドバイスをお願い致します。
①Openステートの中身
シーケンスを変数に昇格し、レベルBPで使用しています
②Open→Closeのルールの中身
③レベルBP
LunaNelis
(ネリスさんMain)
7
返信が遅くなり申し訳ありません。
まず自分の2枚めのスクリーンショットのFlag変数についてですが、これはアニメーションBPで宣言されたものです。
そして、アニメーションがループされ続ける問題については「LoopAnimation」というフラグがあるため、
コレのチェックを外すことでそのステートに移動したときに1度再生して止まるアニメーションにできます。
Open↔Closeの中身についてはこのようにしています
これにより、AnimationBPで宣言していた変数「Flag」をTrueにすることでCloseアニメーションが再生され、FalseにすることでOpenアニメーションが再生されるという挙動をとります。
-----------------------------おまけ---------------------
試してもらっていた事について補足ですが、アニメーションを変数にする必要はなく、ドラッグ&ドロップしたものを入れるだけで問題ありません。
LoopAnimationをオフにするだけでいいです。
丁寧な解説をありがとうございます!!
キーボードでアニメーションを切り替えることができました。
プレイした時にループしていたのは、レベルに配置していたオブジェクトタイプがアニメーションシーケンスだったからでした……。
アニメーションBPを置くと、ループはしなくなりました。
最後に、プレイ開始時に一度だけですが勝手にCloseアニメーションが開始してしまうので、
「①開始時は閉じた状態で停止→②キーボードアクションで初めてOpenアニメーション開始→③以降キーボードでアニメーション切り替え」
という流れにしたいのです。
静止アニメーションをmaxで新たに作るのは今回できませんので、
UE4内で解決できる方法があれば教えていただけないでしょうか?
CreateAnimation>CurrentPoseから0フレームのアニメーションシーケンスを作ったりしてみたものの、うまいこといきません……。
よろしくお願いいたします。
LunaNelis
(ネリスさんMain)
9
まず、勝手にCloseが再生されてしまうという問題について
おそらくOpenからCloseに行く条件(Flag)を最初から満たしている可能性があります。
条件を見直してみるか、Flagのデフォルトを変更してみましょう。
静止したアニメーション(今回でいうとPoseにあたるアニメーション)についてですが、
アニメーションの設定のPlayRateを0に、StartPositionを止めたいフレーム数に設定することで実現できます。
ご返信ありがとうございます。
カーテンの最初のポーズは閉じている状態ですので、Entry→Pose→Close⇔Openの順序に組み直すと直りました。
また、Poseステート内のアニメーション設定を使用することで、ポーズを新たに作らずに済みました!
これで無事全部解決できました。
ご協力ありがとうございました!