カーテンのアニメーションbpを再生したい

カーテンが開くアニメーションを3dsmaxで作り、fbxで出力しました。

そのfbxのアニメーションを、イベントを起こしたときに再生できるようにしたいです。

レベルBPで制御しようとしたのですが、途中で詰まってしまいました。


以下行ったことです。


・アニメーションBPを該当するスケルトンを元に作成

・アニメーションBP内にて resultにカーテンのアニメーションシーケンスを結ぶ

・アニメーションBP内にて アニメーションシーケンスのループを外す

その後、レベルBPにて、イベントノードからアニメーションBPを再生できそうなノードを探してみたのですがうまくいきません。

どうすればよいでしょうか。レベルBPを使っていなくても構いません。

初歩的な質問ですが、回答よろしくお願いいたします。



基本的にAnimGraph上のノードは再生されっぱなしのため、この状態だとゲーム開始時に即再生されソレっきりになってしまうと思います。

一つの方法としては、開けるアニメーション・閉じるアニメーションを用意し、ステートマシンの中で切り替えるというものです。

311148-c06a3690e5f8af9bd1f281ad74df059c.png

それぞれの行き来のためのフラグを作成し、外部でその値を変えることで開け閉めをコントロールすることができるはずです。

そのフラグの変え方に関してですが、以下のようにスケルタルメッシュからGetAnimInstance関数を使うことで使用しているアニメーションBPを取得できるので、コレをキャストしてフラグを変更することが可能です。

ご回答ありがとうございます。


早速、max上で閉じるアニメーションを作りました。

使用したカーテンのオブジェクトは先と同じもので、開くアニメーションの後に閉じるアニメーションを入れ、

閉じる部分のキーのみを出力して作りました。

しかし出力後、スケルトンが違うためかAnimGraphのCloseノードに

閉じるアニメーションシーケンスを入れることが出来ませんでした。



開閉アニメーションを一連の流れで書き出し、UE4上で分断する方がうまくいくのでしょうか。

そういうことは可能なのでしょうか。


また、2枚目のセットノードはどこで変数を定義しているものなのか(どこからでてきたのか)、教えていただけると幸いです。

アニメーションBPにおいて、スケルトンが違うことの問題はUE4で置換することに成功し、自己解決できました。

自分なりに最後まで形にしてみたのですが、プレイすると勝手にOpenアニメーションがループしてしまいます。

よろしければご指南をお願い致します。


①ステート内のノード

シーケンスから変数を昇格して、レベルBPで使用・再生できる変数を作った(つもり)


②Open⇔Closeのルールは大丈夫か。

再生中じゃなければ遷移可能、という設定にすればOKのはずなのでそれを意図


③レベルBPの変数はこれで良いのか

311206-opentocloseルールの中身.png

※不具合?により再度投稿。連続になっていたらすみません。

ひとまず組んでみたのですが、プレイするとOpenアニメーションがループしている状態のままでした。

引き続きアドバイスをお願い致します。

①Openステートの中身

シーケンスを変数に昇格し、レベルBPで使用しています

②Open→Closeのルールの中身

③レベルBP

311206-opentocloseルールの中身.png

返信が遅くなり申し訳ありません。

まず自分の2枚めのスクリーンショットのFlag変数についてですが、これはアニメーションBPで宣言されたものです。

そして、アニメーションがループされ続ける問題については「LoopAnimation」というフラグがあるため、

コレのチェックを外すことでそのステートに移動したときに1度再生して止まるアニメーションにできます。

Open↔Closeの中身についてはこのようにしています

これにより、AnimationBPで宣言していた変数「Flag」をTrueにすることでCloseアニメーションが再生され、FalseにすることでOpenアニメーションが再生されるという挙動をとります。

-----------------------------おまけ---------------------

試してもらっていた事について補足ですが、アニメーションを変数にする必要はなく、ドラッグ&ドロップしたものを入れるだけで問題ありません。

LoopAnimationをオフにするだけでいいです。

丁寧な解説をありがとうございます!!
キーボードでアニメーションを切り替えることができました。

プレイした時にループしていたのは、レベルに配置していたオブジェクトタイプがアニメーションシーケンスだったからでした……。
アニメーションBPを置くと、ループはしなくなりました。

最後に、プレイ開始時に一度だけですが勝手にCloseアニメーションが開始してしまうので、
「①開始時は閉じた状態で停止→②キーボードアクションで初めてOpenアニメーション開始→③以降キーボードでアニメーション切り替え」
という流れにしたいのです。

静止アニメーションをmaxで新たに作るのは今回できませんので、
UE4内で解決できる方法があれば教えていただけないでしょうか?

CreateAnimation>CurrentPoseから0フレームのアニメーションシーケンスを作ったりしてみたものの、うまいこといきません……。

よろしくお願いいたします。

311851-animgraph.png

311852-poseステートの中身.png

まず、勝手にCloseが再生されてしまうという問題について

おそらくOpenからCloseに行く条件(Flag)を最初から満たしている可能性があります。
条件を見直してみるか、Flagのデフォルトを変更してみましょう。

静止したアニメーション(今回でいうとPoseにあたるアニメーション)についてですが、
アニメーションの設定のPlayRateを0に、StartPositionを止めたいフレーム数に設定することで実現できます。

ご返信ありがとうございます。

カーテンの最初のポーズは閉じている状態ですので、Entry→Pose→Close⇔Openの順序に組み直すと直りました。
また、Poseステート内のアニメーション設定を使用することで、ポーズを新たに作らずに済みました!

これで無事全部解決できました。
ご協力ありがとうございました!