HeadlinesBriefing favicon HeadlinesBriefing.com

Bevyアニメーションガイド:プレイヤーとグラフ

Hacker News •
×

無料アセットサイトからアニメーション付き3Dキャラクターの.glbファイルをダウンロードしたとします。基本的なBevyアプリケーションが実行されています。次に、Bevyアプリにキャラクターをスポーンしたいとします。簡単ですね、おそらくそのための関数があります。Bevyのウェブサイトで基本的なAnimated Meshの例を調べると...すぐに、物事が思ったほど単純ではないことが明らかになります。設定することがたくさんあり、アニメーション関連の型の正確な目的は明白ではありません...例を自分のニーズに合わせてかなり速く調整できるかもしれませんが、例に基づいてBevyでアニメーションがどのように機能するかについて実際のメンタルモデルを形成するには、真剣な熟考が必要です。

この投稿は、数週間前にBevyのアニメーションを理解しようとしたときに私が持っていたかったものです。まず、ステップバイステップで、Bevyの基本的なアニメーションを扱うのに十分なメンタルモデルを構築します。次に、公式の例を案内し、それがそのメンタルモデルとどのように関連しているかを説明し、まだ遭遇していないかもしれないメソッドに遭遇したときに手を差し伸べます。BevyのECSの基本に慣れているなら、この投稿の対象読者です。

最初の直感:BevyとECSを少し忘れて、(非常に抽象的に)アニメーション付き3Dモデルを動かすために何が必要かを考えてみましょう。2つの材料が必要です:スポーンされた3Dモデル(またはそれへの何らかの参照)、再生するアニメーション(またはそれへの何らかの参照)。したがって、最初に、アニメーションを再生する方法として期待するのは次のようなものです:my_model.play_animation(my_animation); これまでのメンタルモデルは次のとおりです:これは実際には実際のBevy関数の動作方法にいくぶん近いものです。つまり、AnimationPlayerタイプのplayメソッドです...少なくとも、そのselfが実際に3Dモデルを参照し、そのanimation引数が実際にアニメーションを参照していればそうでしょう。しかし、今のところ、それらがそうであるかは明確ではありません。しかし、2つの材料がBevyでどのように表現されているかを詳しく見てみましょう。そうすれば、直感とplay関数の動作方法を調和させることができるかもしれません。

AnimationPlayer:3Dモデルのアニメーションを制御する方法。.glbファイルから3Dモデルをスポーンするとします。理想的には、スポーンされたエンティティのIDを使用してそれを参照したいところですが、3Dモデルは通常、単一のエンティティとしてスポーンされるのではなく、エンティティの階層としてスポーンされます:モデルをアニメーション化するには、別の方法で参照する必要があります。Bevyには、まさにそれを行うメカニズムがあります—アニメーション用に3Dモデルを参照する—AnimationPlayerタイプの形で。AnimationPlayerは、アニメーション可能な3Dモデルに対応するエンティティ階層のどこかのエンティティに、そのモデルがスポーンされたときに自動的に挿入されるコンポーネントです。AnimationPlayerを取得したら、それにアニメーションの再生/一時停止を指示したり、現在再生中のものにアクセスしたりできます...しかし、それはそもそもアニメーションがあることを前提としています!それらに焦点を当てましょう。

AnimationGraph:アニメーションを保存および結合する方法。Bevyでのアニメーションの表現方法は少し複雑です。なぜなら、通常操作するのは個々のアニメーションではなく、複数のアニメーションを一度に保存し、それらを互いに結合できるデータ構造のインスタンスだからです。その構造がAnimationGraphです。ここでAnimationGraphの使用の詳細には触れません。単純なアニメーションに慣れたら、AnimationGraphの例で一般的なアニメーショングラフについて詳しく学ぶことができます。今のところ、グラフに興味のあるアニメーションが1つだけ含まれている場合に焦点を当てます。その場合、アニメーションを識別するデータは次のようになります:(参照)AnimationGraph、アニメーションがグラフ内のどこにあるかの識別子—それがNodeIndexタイプの目的です。

まとめ:さて、AnimationPlayer、AnimationGraph、NodeIndexがあるとします。アニメーションを再生するためにそれらを接続する方法は次のとおりです:への参照を挿入します....