インスタンス機能の使い方

インスタンス機能

インスタンス機能はアニメーションの「参照」情報を持つ「インスタンスパーツ」を配置し再生する機能です。
参照先のアニメーションを「ソースアニメーションーション」と呼び、アニメーションの参照情報を持つパーツを「インスタンスパーツ」と呼びます。

ひとつの背景の上で、再生タイミングが異なる複数のキャラクターがいるようなアニメーションを作成するのに非常に便利です。

解説動画

インスタンス機能の基本的な導入方法

インスタンスパーツの基本的な導入方法について解説している動画です。

 

インスタンス機能の実例

SpriteStudioに搭載されているインスタンス機能を使ってアニメーションを作成するまでの流れを解説した動画です。

動画内で使用しているデータは「エフェクトのサンプル(エフェクト機能未使用)」のデータを使用しています。

サンプルファイルのダウンロード

 

インスタンス機能の特徴

インスタンスパーツはパーツの1種です。
そのため、通常のパーツと同様、フレームコントロール上の任意の階層に配置することができます。
インスタンスが持つ「座標」「回転」「スケール」等のアトリビュートはソースアニメーションに継承されます。
つまりソースアニメーションのrootパーツの親パーツの様に振る舞います。(rootパーツのアトリビュート値を上書きするわけではありません。)

インスタンスパーツの情報には、ソースアニメーションの名前だけが保存されるため、単純にパーツをコピーした場合に比べ、データのサイズを大幅に小さくすることができます。

「X/Y サイズ」はソースアニメーションの基準枠のサイズになります。
また、インスタンスパーツは独立したタイムラインを持ちます。
組み込まれているアニメ―ションデータのフレームカウンタとは別に、インスタンスパーツ毎にフレームカウンタを保持するため、非同期で再生させることができます。
例えば、親アニメのフレームが1フレームで停止中に、インスタンスパーツは無限ループで再生します。

主な用途

インスタンス機能を活用することで、以下のようなアニメーションを作成することができます。

  • インスタンスパーツにパラメータを指定することで、同じアニメを流用し複数のバリエーションを作る。
  • バラバラに作成した背景・キャラクタ・エフェクトなどのアニメーションを複数組み合わせ、シーンを構築する。
  • A-B区間を再生した後にCをn回再生し、Dへ移行する、といったシーケンスを作る。
    (※区間再生が終了次第、任意のラベルへジャンプする、といった制御はできません。終了タイミングに合わせてキーフレームを打つ必要があります。)
  • 常に回転するプロペラ部分と胴体部分の様にそれぞれが独立した動きをするヘリコプターの様なアニメーションを作る。

インスタンスパーツの基本的な使い方

インスタンスパーツの元となるアニメーションデータを作成する

インスタンスパーツはアニメーションデータを参照するパーツです。
そのため、組み込むためのアニメーションデータを作成する必要があります。
アニメーションデータを作る手順は通常のssae(アニメーションファイル)を作成する手順と同じです。

今回はハートが拡縮するループアニメをインスタンスパーツとして作成します。

ssae(アニメーションファイル)を新規で追加します。
ここで追加したアニメーションデータがインスタンスパーツの「ソースアニメーションーション」となります。

instans_01
アニメーションを作成します。
5フレーム目にハートが拡大するように設定し
ハートが拡縮する10フレームのアニメを作成しました。

instans_02

インスタンスパーツをアニメーションに組み込む

作成したアニメーションデータをインスタンスパーツとして組み込みます。
上記で作成したハートが拡縮するループアニメを配置します。

インスタンスパーツを組み込みたいssae(アニメーションファイル)を選択し、セルリストのWindow_celllist_icon03_ver5.6.1をクリックして「アニメリスト」に切り替えます。
アニメリストに上記で作成したアニメーションデータが表示されます。

instans_03

セルを配置するのと同様に、「アニメリスト」からドラッグして配置を行います。
右図ではフレームコントロールウィンドウにドラッグしていますが、レイアウトウィンドウ上にドラッグすることでも配置可能です。

instans_04
これでインスタンスパーツの組み込みは完了です。
ハートが拡縮するアニメが、インスタンスパーツとして組み込まれました。
instans_05

インスタンスパーツは特殊なパーツではありますが、通常のパーツと同様に編集することが可能です。

さまざまなアトリビュートを設定することで、1種類のインスタンスパーツから様々な表現を作成することができます。

右図では2つ配置したうちの1つのハートに、5フレーム目にZ軸回転で角度をつけて、動きに変化をつけています。

instans_06

インスタンスにおけるアトリビュートの設定

「インスタンス」アトリビュート

インスタンスに限り再生時のパラメータを指定することができます。Window_Attribute_instans_ver5.6.1_02

アトリビュートウィンドウで「インスタンス」アトリビュートを設定できます。
このアトリビュートでは

  • 再生区間
  • 再生速度
  • ループ回数
  • 再生方向

を指定できます。
再生区間はラベルによる指定、およびオフセットの指定が可能です。

配置しているアニメーションよりも長尺のインスタンスパーツを非同期再生させる

フレームコントロールウィンドウで、インスタンスパーツの先頭にキーを作り、そのキーのアトリビュートに「独立動作」のチェックを入れると、SS5Player を利用した各エンジンでの表示が、非同期再生となります。
自動車のタイヤを回ったままにするような表現をしたい場合は、加えて「無限ループ」にもチェックを入れてください。

ただし、「独立動作」にチェックを入れていても、SpriteStudio上ではキーがあるフレームに到達した時点で、再生中のフレームがリセットされてしまいますのでご注意ください。
これは、SpriteStudioでは、あくまでフレームコントロールウィンドウ上の設定どおりに再生を行う仕様のためです。

インスタンスパーツに設定できるアトリビュート

インスタンスパーツは通常のパーツ同様、フレームコントロール上で制御することができますが、
使用できるアトリビュートは以下に限られます。

  • X/Y座標
  • X/Y/Z回転
  • X/Yスケール
  • 不透明度
  • 優先度
  • 非表示

インスタンスにおけるラベル機能について

フレームコントロールウィンドウの「ラベル機能」を活用することで、「インスタンス」アトリビュート上でインスタンスパーツの再生範囲を指定することができます。

インスタンスパーツで「ラベル」を利用して再生区間を設定したい場合、ソースアニメーションにラベルを設定する必要があります。

フレームコントロールウィンドウのルーラー部でラベルを設定することができます。

Window_FrameControl_label02_ver5.6.1
ラベルはフレーム単位で設定することができ、ルーラー部分に表示されます。
ラベルを選択し、左右にドラッグする事で、別のフレームに移動することが可能です。
選択しているラベルは黄緑色にハイライトされます。

ラベルを利用してインスタンスパーツの再生区間を設定したい場合、まずはインスタンスパーツのソースアニメーションにラベルを設定する必要があります。

フレームコントロールウィンドウにある

Window_frame_souce_iconをクリックし、ソースアニメーションの編集に移動します。

Window_instans_label_03_ver5.7.0
フレームコントロールウィンドウのルーラー部分で、設定したいフレームを選択し、右クリックでコンテキストメニューを開きます。
コンテキストメニュー内の「ラベルの追加」を選択します。
Window_FrameControl_labelmenu_ver5.6.1
ラベル名を設定するダイアログが表示されるため、任意の名前を設定します。

ひとつのアニメーションの中で、同じ名前のラベルを重複して設定することはできません。

Window_instans_label_ver5.6.1
これでソースアニメーションのラベルの追加は終了です。
削除したい場合は削除したいラベルを選択し、コンテキストメニューの「ラベルの削除」を選択してください。
Window_instans_label_02_ver5.7.0

フレームコントロールウィンドウにある

Window_frame_origin_iconをクリックし、インスタンスパーツを配置しているアニメーションデータの編集に移動します。

Window_instans_label_04_ver5.7.0

ソースアニメーションにラベルを設定すると、「インスタンス」アトリビュートの再生区間のプルダウンボックスに、設定したラベルが追加されます。

Window_instans_label_05_ver5.7.0

この機能を活用することで、A-B 区間を再生した後に、Cをn回再生し、Dへ移行する……といったシーケンスを作ることが出来ます。

※区間再生が終了次第、任意のラベルへジャンプする、といった制御はできません。
 終了タイミングに合わせてキーを打つ必要があります。

注意点

  • インスタンスを使用する場合は、事前設定として
    ファイルメニューの「プロジェクトの設定」ウィンドウの「互換性」を開き、「Ver.4 互換機能に制限する」のチェックが外れているかをご確認ください。
  • インスタンス機能で作成したアニメーションをアプリケーションに組み込む際は、アプリケーション側の対応が必要になります。
    こちらは仕様や再生するプラットフォームによっては制限を受けることがありますので、作成前にアプリケーションの仕様の確認を取ることをお勧めいたします。
    (弊社提供プレイヤーでは、SS5P for Unity・SS5P for Cocos2d-x・SS5P for UE4・SS5 SDKが対応しております)
  • インスタンスパーツを配置したアニメーションデータのfps設定で再生されます。
  • 「A.ssae」に「B.ssae」を、「B.ssae」に「A.ssae」を参照するインスタンスパーツを配置、といった様に相互に参照しあい、循環するインスタンスは配置できません。
  • 同じssaeに所属しているアニメーションデータを参照するインスタンスパーツを配置することはできません。
  • 配置できないアニメ―ションデータはアニメリストに表示されません。
  • インスタンス機能を使用すると多数のパーツが表示されるため、高性能のハードウェアスペックを要求されることがあります。
    事前に、想定されるアニメーション量を割り出し、ベンチマークをとることをお勧めします。
  • 異なるフォルダにある同じ名前のssaeをインスタンスパーツとして配置すると、正常にssaeを参照する事が出来ません。(下記ダイアログが表示されます)
    インスタンス機能を使用するssaeのファイル名は、配置するssaeとは別のファイル名を設定してください。
    faq_ss_faq_animation08

関連ページ