シーンのアニメーション

シーンフォームでは、アニメーションを使用してモデルをインポートできます。Sceneform API を使用して、アニメーションの再生と制御を行い、ノードのスケルトンにノードをアタッチできます。

たとえば、シーン アニメーション サンプルには、Android と野球帽のアンディのモデルの作成に使用されるファイルが含まれています。アンディモデルにはアニメーション データが含まれ、野球帽はアニメーション化されていないモデルです。サンプルを実行すると、アンディは腕を振って腕を振って、帽子をノードで頭に固定します。

シーンモデルのアニメーションと Android プロパティ アニメーション

シーンフォームのモデル アニメーションと Android のプロパティ アニメーションを区別することが重要です。

  • モデルのアニメーションは、アーティストがモデリングとアニメーション ソフトウェアを使用して事前に作成します。スケルタル アニメーション データが含まれている。これらのアニメーションは、*.fbx ファイルとしてエクスポートしてから、*.sfb ファイルにインポートしてシーンで使用する必要があります。

  • プロパティ アニメーションは Android の基本的なコンセプトであり、シーン形式に固有のものではありません。この種のアニメーションでは、ゲッターとセッターを持つ Java オブジェクトの可変値を変更できます。アニメーション化された値は動的に設定できますが、*.sfb ファイルにパッケージ化することはできません。

    プロパティとモデルのアニメーションは、どちらも Android の Animator API に対応しています。どちらもリスナー、再生コントロール(開始 / 停止 / 終了 / 一時停止 / キャンセル)、継続時間、開始遅延をサポートします。

    モデルのアニメーションで提供されるのは、TimeInterpolators 再生の限定されたサポートのみです。モデルアニメーションでは逆再生はサポートされていません。

  • シーン アニメーションのモデル化の実例を確認するには、アニメーション サンプルをご覧ください。

  • シーン フォームを実際に使用してプロパティ アニメーションを確認するには、ソーラー システムのサンプルをご覧ください。

モデル アニメーションのコンセプト

アニメーション モデルを使用する前に、スケルト アニメーションに関する特定のコンセプトと、シーンに適用される制限と機能について理解しておくことをおすすめします。

  • アニメーション モデルには、相互に連結されたボーンが含まれ、階層内の親子関係を形成します。アニメーションにより、再生中のボーンの位置と向きが変更されます。

    シーンで親 Node を移動すると、すべての子 Node も移動するのと同じように、シーンで親ボーンを移動すると子も移動します。ボーンは、アニメーションで移動することも、SkeletonNode クラスを介してノードとしてアクセスすることもできます。ボーンに Node がアクセスされる場合、新しい位置が再生されている場合、アニメーションごとに新しい位置がアニメーションごとに上書きされます。

  • スケルトン。スケルトンは、すべての骨を含み、親子関係の階層を形成します。

    例えば、人間の腕のモデルには、「左肩」「左上腕」、「左肘」、および「左前腕」などの骨が含まれる場合があります。この階層の親を起点として、左上腕を子として割り当てます。「左上腕」の子は、左エルボと下骨の場合があります。肩の骨を回転させると、上腕、前腕、肘、下の骨が連動して動きます。

    シーンには、スケルトン内のボーン間の親子関係を変更する API がありません。これは、外部モデリングとアニメーション パッケージで事前に行う必要があります。

    無機物を描くモデルであっても、骨格を活用してリアルさを保つことができます。たとえば、ソファのモデルには骨と骨格があります。

  • スキンスキンは、モデルの描画されたサーフェス メッシュに適用される重みです。スキン メッシュの位置と形状は、近くの骨から計算されます。この骨と肌の接続は、モデルの変形に対応しており、より現実的な動きを実現します。

    モデリングとアニメーション パッケージを使用して、スキンを事前に準備する必要があります。シーンフォームは、スキン メッシュのマテリアルを変更してモデルの外観を変更できます。