インポータの詳細解説(「SpriteStudio6」モード) - SpriteStudio/SS6PlayerForUnity GitHub Wiki
インポータの「SpriteStudio6 Player」モードには、下記のオプション群があります。
- 「Basic」オプション
- 「PreCalculation」オプション
- 「Collider」オプション
- 「Overwrite Confirm」オプション
- 「Checking SSxx Version」オプション
- 高度(Advanced)なオプション
上記の中で、注意していただきたいのが「高度(Advanced)なオプション」の中にあるオプション群です。
基本的に「高度(Advanced)なオプション」の中にあるオプション群は、通常の状態でSS6Player for Unity(以降「SS6PU」)を使用している分には設定を変更する必要のないオプション群です。
むしろ、SS6PUの詳細な仕様を十分に理解していない状態で操作すると誤動作を招きかねないオプション群となります。
これらの値を変更する時には、十分な注意を払うようにしてください。
「Basic」オプション
このグループには、基本的なインポート状態を設定するためのオプションがまとめられています。
Create Control-Prefab
チェックされている場合、「制御プレハブ」を作成します。
制御用プレハブの仕様は、SS6PUの「Ver.2.1以降」と「Ver.2.1未満」とで異なっていますので注意してください。
「制御プレハブ」(の目的と役割)についてはこちらを参照してください。
Use Script For "Control-Prefab" (Ver.2.1.0以降)
チェックされている場合、「制御プレハブ」を「Ver.2.1未満」の仕様で作成します(Ver.2.0.x系までのバージョンと同じ制御用プレハブを作成するための、後方互換用オプションです)。
Create Project Folder
チェックされている場合、指定されたインポート先のアセットフォルダの直下にインポートしたsspjファイルのボディ名のアセットフォルダを作成して、その下に全てのデータを(各サブフォルダを作成して)格納します。
チェックされていない場合は、指定されたインポート先のアセットフォルダの下に全てのデータを(各サブフォルダを作成して)格納します。
"Invisible" part to "Hide" attribute
チェックされている場合、SpriteStudio6上でパーツが不可視(フレームコントロールのパーツ名の前の目のアイコンが閉じている)場合、そのパーツは「全てのフレームが非表示」としてインポートします(パーツが削除されるわけではありません)。
チェックされていない場合、SpriteStudio6上でのパーツの可視状態に関わらず、非表示のキーデータに従ってアニメーションをインポートします。
Set Texture "Read/Write Enable"
チェックされている場合、インポートしたテクスチャを「読み書き可能」状態にします。
読み書き可能なテクスチャにすると、ランタイムでの使用メモリが増える可能性がありますので、注意してください。
Tracking Assets
チェックされている場合、最初にインポートした後に、データ群の一部(例えばテクスチャのみ)を別のアセットフォルダなどに移動したりした場合でも、再インポート時にアニメーション用プレハブとエフェクト用プレハブの内容を見て、データの移動先を追跡して上書インポートを行います。
チェックされていない場合、データの移動先の追跡を行わず、指定したアセットフォルダの下に(最初のインストールと同じように)データを作成します。
注意点としては、アニメーション用プレハブとエフェクト用プレハブ(初期状態では「PrefabAnimation」「PrefabEffect」の中のプレハブ群)については、最初のインポート時と同じサブフォルダとファイル名でないと、追跡を行いません(この2種類のプレハブが、追跡の起点となるためです)。
また、制御用プレハブを作成する指定であった場合は、制御用プレハブも同様になります。
削除されていたデータ等があった場合、最初のインポートと同じサブフォルダ名とファイル名で新規にデータが作成されます。
Set disable Renderer's lighting
チェックされている場合、アニメーションオブジェクトが持つ描画用の「MeshRenderer」のライト設定を全て「無効」に設定します。
通常の2Dアニメーションオブジェクトとして扱う場合、基本的にはライティングが必要ないと思われますので、シーン上の光源などを反映させたいアニメーションオブジェクトに対してのみ非チェックにすることを推奨します。
Take over Renderer's light setting
チェックされている場合に、「MeshRenderer」のライト設定を(上書される側のプレハブから)引き継ぎます。
Convert Attribute "Signal"
チェックされている場合に、SpriteStudio6の「シグナル」のアトリビュートを変換して所持します(非チェックの場合、「シグナル」の内容は一切無視します)。
※「シグナル」はデータ的に重いのと、β機能としての実装のため、本オプションが設置されています。
Delete Material Unreferenced(Ver.1.x系)
チェックされている場合に、アニメーションデータから参照されていない生成マテリアルを削除します。
※本設定は、実行時にマテリアルを動的生成するVer.2.0以降では廃止されています。
「PreCalculation」オプション
このグループには、インポート時に事前計算やデータの加工を行うことでプレーヤーの動作などを軽くするためのオプションがまとめられています。
Trim transparent-pixels
チェックされていた場合、セルのデータを事前に検査して、透明ピクセルを部分をなるだけ含まないセルの大きさに変更することで、GPUのフィルレートを稼ぎます。
ただし、チェック時には以下のようなデメリットが生じますので、目的にあわせて運用を判断してください。
- 頂点変形の効果状態が変わる可能性があります。
- パーツカラーや動的パーツカラー(AdditionalColor)の効果状態が変わる可能性があります。
- 動的セル変更・動的セルマップ変更の機能を使用した場合に結果が変わる場合があります。
- ランタイムでのマテリアルやテクスチャの変更が(ほとんどの場合)想定・期待通りの結果になりません。
「Collider」オプション
このグループには、「当たり判定」データをインポートする時の設定を行うためのオプションがまとめられています。
「当たり判定」を使用する際の注意点については、こちらを参照してください。
Attach Collider
チェックされていた場合、SpriteStudio6上でパーツにあたり判定を設定していた場合に、パーツに対応するGameObjectにコライダが付加されます。
チェックされていない場合、SpriteStudio6上でのパーツの当たり判定設定に関わらず、GameObjectにコライダがつきません。
Attach Collider(Ver.2.0.0以降)
チェックされていた場合、当たり判定に使用するコライダを2D用(Collider2D)にします。 チェックされていない場合、当たり判定に使用するコライダを3D用(Collider)にします。
Attach Rigid-Body
チェックされていた場合、コライダにRigid-Bodyを設定します。
Rigid-Bodyが設定されているか否かでUnityの衝突判定の特性やSS6PUのアニメーションデータに指定する衝突時のコールバックの種類が変わるので、目的と実装にあわせて指定してください。
Set "Is Trigger"
チェックされていた場合、コライダにトリガーを設定します。
オブジェクト同士が「接触しているかどうかだけ検知したい(物理的衝突処理を行わない)」場合にトリガーを使用することが多いです。
Collider Size-Z
パーツが描画面に正対している(X軸回転やY軸回転していない)時のコライダのZ軸方向の厚みです。
当たり判定が円形である場合、コライダはカプセルになり、その円柱部の長さになります。
当たり判定が四角形である場合、コライダはボックスになり、直方体の厚みになります。
「Overwrite Confirm」オプション
このグループには、データを更新インストールする際にデータの上書きの確認を行うかどうかのオプションがまとめられています。
Prefab-Animation
チェックされていると、アニメーション用プレハブを上書しようとした場合に確認ダイアログが出ます。
Prefab-Effect
チェックされていると、エフェクト用プレハブを上書しようとした場合に確認ダイアログが出ます。
Data-CellMap(Ver.2.0.0以降)
チェックされていると、プロジェクトの静的データを上書しようとした場合に確認ダイアログが出ます。
Data-CellMap
チェックされていると、セルマップの静的データを上書しようとした場合に確認ダイアログが出ます。
Data-Animation
チェックされていると、アニメーションの静的データを上書しようとした場合に確認ダイアログが出ます。
Data-Effect
チェックされていると、エフェクトの静的データを上書しようとした場合に確認ダイアログが出ます。
Data-Sequence(Ver.2.1.4以降)
チェックされていると、シーケンスの静的データを上書しようとした場合に確認ダイアログが出ます。
Materials for Animation(Ver.2.1.4未満)
チェックされていると、アニメーション用のマテリアルを上書しようとした場合に確認ダイアログが出ます。
※Ver.2.0.0~Ver.2.1.2においては、設定できますが実際に機能していません(機能する状況が存在しません)。
Materials for Effect(Ver.2.1.4未満)
チェックされていると、エフェクト用のマテリアルを上書しようとした場合に確認ダイアログが出ます。
※Ver.2.0.0~Ver.2.1.2においては、設定できますが実際に機能していません(機能する状況が存在しません)。
Textures
チェックされていると、テクスチャを上書しようとした場合に確認ダイアログが出ます。
「Checking SSxx Version」オプション
このグループには、データのバージョンチェックを行って対応していないデータの無効バージョンのチェックなどを行うかどうかのオプションがまとめられています。
チェックされている場合は、「SpriteStudio6のデータであるに関わらず、対応バージョンではない」データである場合に警告を出します(主にアプリケーション開発時でのデータミスのチェッカになると思います)。
チェックされていない場合は、原則的に「対応しているデータより古いバージョンを検知した場合は、対応している最も古いバージョンとして」「対応しているデータより新しいバージョンを検知した場合は、対応している最も新しいバージョンとして」扱います。
※ただし、このオプションの設定をもってSpriteStudio5のデータを読むことはできません(SpriteStudio5のデータは互換性の関係で「読むことができません」ので、必ずSpriteStudio6で保存しなおしてからインポートしてください)。
※本オプションは、(現状では対応していないSpriteStudio6のデータはないため)将来的な予備のために搭載されていますので、現在は本オプション群は未チェック状態で構いません。
SSPJ(Project)
チェックされていると、SpriteStudio6のプロジェクト(sspj)の無効バージョンチェックを行います。
SSCE(CellMap)
チェックされていると、SpriteStudio6のセルマップ(ssce)の無効バージョンチェックを行います。
SSAE(Animation)
チェックされていると、SpriteStudio6のアニメーション(ssae)の無効バージョンチェックを行います。
SSEE(Effect)
チェックされていると、SpriteStudio6のエフェクト(ssee)の無効バージョンチェックを行います。
SSQE(Sequence)
チェックされていると、SpriteStudio6のシーケンス(ssqe)の無効バージョンチェックを行います。
高度(Advanced)なオプション
基本的に本オプション群はみだりに変更しないでください。
また、変更する際でもSS6PUの詳細な仕様を十分に理解してから行うようにしてください(設定を間違えると誤動作などを起こす可能性があるオプション群です)。
- 「Naming Assets」オプション
- 「Naming Asset-Folders」オプション
- 「Attribute data Packing」オプション
- 「Preset Material」オプション(Ver.1.x系)
- 「Holder Asset」オプション(Ver.2.0以降)
「Naming Assets」オプション
各データのアセット名を付ける際に、データ種別やsspj名を接頭語として付与するためのオプション群です。
主に、アセットバンドルなどにデータを格納する際に名前が重複しないようにするためのものですが、初期設定の段階で基本的には重複しないように設定されています(「Add SSPJ-Name」以外は、原則として変更する必要のないオプションです)。
通常の使用方法では回避できないアセットバンドルへの格納状態などを制御する際に使用してください。
指定によってどのようなアセット名になるかは、「State of Assets-Naming」のフォールドアウト(折りたたみ)を開くと表示されます。
現在設定されているモード以外のモードの設定は操作できません。
Add SSPJ-Name
インポートしたSpriteStudio6のプロジェクト(sspj)のファイル名を追加します。
Texture
テクスチャに付ける接頭句を指定します(空欄にすると何も付与しません)。
Prefab-Animation
アニメーション用プレハブに付ける接頭句を指定します(空欄にすると何も付与しません)。
Prefab-Effect
エフェクト用プレハブに付ける接頭句を指定します(空欄にすると何も付与しません)。
Data-Project(Ver.2.0.0以降)
プロジェクト(SSPJファイルに相当)の静的データに付ける接頭句を指定します(空欄にすると何も付与しません)。
Data-CellMap
セルマップの静的データに付ける接頭句を指定します(空欄にすると何も付与しません)。
Data-Animation
アニメーションの静的データに付ける接頭句を指定します(空欄にすると何も付与しません)。
Data-Effect
エフェクトの静的データに付ける接頭句を指定します(空欄にすると何も付与しません)。
Data-Sequence(Ver.2.0.0以降)
シーケンスの静的データに付ける接頭句を指定します(空欄にすると何も付与しません)。
Material-Animation(Ver.2.1.4未満)
アニメーション用マテリアルに付ける接頭句を指定します(空欄にすると何も付与しません)。
※Ver.2.0.0~Ver.2.1.2においては、設定できますが実際に機能していません(機能する状況が存在しません)。
Material-Effect(Ver.2.1.4未満)
エフェクト用マテリアルに付ける接頭句を指定します(空欄にすると何も付与しません)。
※Ver.2.0.0~Ver.2.1.2においては、設定できますが実際に機能していません(機能する状況が存在しません)。
「Naming Asset-Folders」オプション
各データ別の格納サブフォルダ名を変更することができるオプション群です。
本グループも「Naming Assets」オプションと同様に、特殊な格納状態が必要になった時以外は変更する必要のないオプションです。
Texture
テクスチャを格納するサブフォルダ名を指定します。
Prefab-Animation
アニメーション用プレハブを格納するサブフォルダ名を指定します。
Prefab-Effect
エフェクト用プレハブを格納するサブフォルダ名を指定します。
Data-Project(Ver.2.0.0以降)
プロジェクト(SSPJファイルに相当)の静的データを格納するサブフォルダ名を指定します。
Data-CellMap
セルマップの静的データを格納するサブフォルダ名を指定します。
Data-Animation
アニメーションの静的データを格納するサブフォルダ名を指定します。
Data-Effect
エフェクトの静的データを格納するサブフォルダ名を指定します。
Data-Sequence(Ver.2.0.0以降)
シーケンスの静的データを格納するサブフォルダ名を指定します。
Material-Animation(Ver.2.1.4未満)
アニメーション用マテリアルを格納するサブフォルダ名を指定します。
※Ver.2.0.0~Ver.2.1.2においては、設定できますが実際に機能していません(機能する状況が存在しません)。
Material-Effect(Ver.2.1.4未満)
エフェクト用マテリアルを格納するサブフォルダ名を指定します。
※Ver.2.0.0~Ver.2.1.2においては、設定できますが実際に機能していません(機能する状況が存在しません)。
「Attribute data Packing」オプション
アニメーションの各アトリビュートデータの格納形式(データ圧縮方式)を変更するためのオプション群です。
このオプションは、変更に際してSS6PUの格納データ仕様への理解が必要になります。
各アトリビュートに対して使用不可能なデータ形式は選択できないようになっていますが、これらのデータ格納形式はデータの大きさやパフォーマンスに直結することに注意してください(デフォルトの設定は、パフォーマンス優先の設定になっています)。
各格納形式の特性はこちらを参照ください。
Status
非表示・左右上下反転・イメージ反転や描画チェイン情報の格納形式を選択します。
Cell
参照セルの格納形式を選択します。
Position
X/Y/Z座標の格納形式を選択します。
Rotation
X/Y/Z軸回転の格納形式を選択します。
Scaling
X/Yスケールの格納形式を選択します。
ScalingLocal
X/Yローカルスケールの格納形式を選択します。
RateOpacity
不透明度の格納形式を選択します。
このアトリビュートは、ローカル不透明度・マスク強度と格納領域を共有します。
※本項目に「CPE & Interpolate(変化点抽出+補間式)」を指定した場合、「不透明度」を格納する際には「Stadard CPE(変化点抽出)」が適用されます(「ローカル不透明度」「マスク強度」は設定通りになります)。
理由の詳細はこちらの解説を参照してください。
PartsColor
パーツカラーの格納形式を選択します。
VertexCorrection
頂点変形の格納形式を選択します。
OffsetPivot
原点オフセットの格納形式を選択します。
PositionAnchor
X/Yアンカー座標の格納形式を選択します。
※設定項目は存在しますが、SS6PUはアンカーには非対応なので設定しても意味はありません(将来での対応もしくは拡張用に予約してあります)。
SizeForce
X/Yサイズの格納形式を選択します。
PositionTexture
UV X/Y移動の格納形式を選択します。
RotationTexture
UV回転の格納形式を選択します。
ScalingTexture
UV X/Yスケールの格納形式を選択します。
RadiusCollision
当たり半径の格納形式を選択します。
UserData
ユーザーデータの格納形式を選択します。
Instance
インスタンス(再生設定)の格納形式を選択します。
Effect
エフェクト(再生設定)の格納形式を選択します。
Deform
デフォームの格納形式を選択します。
※デフォルトの(初期設定から変更していない)状態では、本項目だけ「CPE+Interpolate」になっています。これは、デフォームのデータが他のアトリビュートに比べて単位データが大きいために、データが容易に肥大化する可能性が高いので初期状態の圧縮方法を変えています。
「Preset Material」オプション(Ver.1.x系)
アニメーションのターゲット合成に使用するマテリアルを設定するためのオプション群です。
本項目は、Ver.1.x系にしか存在しません(Ver.2.x系から描画に使用するマテリアルは、実行時に動的に作成されるために静的データとして保持していません)。
それぞれの合成方式用に専用のシェーダを結びつけたマテリアルが設定されています(デフォルト状態のマテリアル群は「Assets/SpriteStudio6/Material/SS6PU/」の中にオリジナルが格納されています)。
ここにデフォルト以外のマテリアルを設定することによって、インポート時に独自のシェーダを割り当てることができます。
ただし、代替となるマテリアルに割り当てるシェーダは、SS6PUが「SS6Player」モード専用に持っているシェーダ(「Custom/SpriteStudio6/SS6PU/~」)と機能・プロパティ名(及びその変数型と対値の振る舞い)が互換である必要がありますので、独自で作成する時にはその点に注意を払ってください(互換性がないシェーダを使用した場合、表示が正常な結果にならない可能性が非常に高くなります)。
ここで指定されたマテリアルは、実際のインポート時に複製され・テクスチャなどを割り当てられて、それぞれのアニメーション用のマテリアルとして生成されます。
「for parts Non-Masked」「for parts Masked」の2階層に分かれており、それぞれSpriteStudio6のパーツ設定で「マスク対象」のチェック状態用のマテリアルです(Non-Maskedが非チェック・Maskedがチェック状態)。
※2つの階層下の設定項目は同じ構造になっています。
[Mask]Pre-Draw
マスクパーツの描画前描画に使用するマテリアルです。
※「描画前描画」は、マスクを正常に効果させるために描画の前に行う特別な描画の工程のことをさします。
[Mask]Draw
マスクパーツの描画で使用するマテリアルです。
[Sprite]Mix
通常パーツの「ミックス」に使用するマテリアルです。
[Sprite]Add
通常パーツの「加算(Add)」に使用するマテリアルです。
[Sprite]Sub
通常パーツの「減算(Subtract)」に使用するマテリアルです。
[Sprite]Mul
通常パーツの「アルファ乗算(Multiple)」に使用するマテリアルです。
[Sprite]MulNA
通常パーツの「乗算(Multiple-NonAlpha)」に使用するマテリアルです。
[Sprite]Scr
通常パーツの「スクリーン(Screen)」に使用するマテリアルです。
[Sprite]Exc
通常パーツの「除外(Exclude)」に使用するマテリアルです。
[Sprite]Inv
通常パーツの「反転(Inverse)」に使用するマテリアルです。
[Effect]Mix
エフェクトパーツの「ミックス」に使用するマテリアルです。
[Effect]Add
エフェクトパーツの「加算(Add)」に使用するマテリアルです。
「Holder Asset」オプション(Ver.2.0.0以降)
ここで設定する「アセットホルダ」は少々特殊な目的を持っています。
「アセットホルダ」自体の詳細はこちら(アセットホルダ用インスペクタ詳細解説)を参照ください。
このアセットホルダのプレハブを独自で拡張定義したり・内容を変更したりしたものを、あらかじめインポートしたアニメーションに定義しておくために、本項目が設置されています。
- 独自でアセットホルダのプレハブを作成したり・内容を変更したものを別に設置している場合、そのアセットホルダを本項目にドラッグ&ドロップすることで、インポートしたアニメーションのプレハブと指定したアセットホルダが関連付けされます。
- また、シェーダなどのコンパイル管理をアプリケーションの側などで行い、本アセットホルダが必要ない(邪魔になる)場合には、本設定を「None」(なし)にすることで、アセットホルダとの関連付けが行われていない(インポート後の)アニメーションが作成されます。
初期状態では、本項目には(SS6PUが格納されているフォルダ=「SpriteStudio6」の下の)「Prefab/Holder」に格納されている「HolderAssetSS6PU」が設定されいます。
アトリビュートの格納形式の特性について
SS6PUの「アトリビュートの格納形式」は「アトリビュートデータの圧縮方法」と直結しています。
その上で、下記の注意点があります。
- それぞれの格納形式で「目的や特性」が異なりますので、(最低限でも下記の仕様を理解した上で使い分けない限り)「望んだパフォーマンス(実行速度)が出ない」「データサイズが肥大する」ような場合が少なくありません。
- アトリビュート毎で、対応している格納形式が異なります(全てのアトリビュートにおいて、全ての格納形式が選択使用できる……ということではありません)。
「Stadard Uncompressed」(非圧縮)
完全非圧縮のデータで、全フレーム分のデータが展開された形で保持されます。
この形式は実装しており・設定可能にしてありますが、実際に指定することは現実的ではありません。
また、「設定することによって、著しくパフォーマンスを落とすことが解りきっている」アトリビュートについては、予め設定できないよう(非対応扱い)になっています。
- 非対応アトリビュート
- X/Y/Z座標
- X/Y/Z軸回転
- X/Yスケール
- 当たり半径
- ユーザーデータ
- インスタンス(再生設定)
- エフェクト(再生設定)
現実的には、(SS6PUの内部実装で)各形式の格納をするための「格納前の生(RAW)データ」を作成する「最基底」のデータ構造としての存在意義が一番大きい形式です。
使用機会があるとすれば、「データ容量がどれだけ大きくなっても構わないから、アニメーションの再生のCPU負荷ができるだけ最低限になるように保証したい」場合程度でしょう(様々なコストを度外視できる状態でないと実用になりません)。
「Standard CPE」(変化点抽出: Changing-Point Extract)
現状、唯一「全てのアトリビュート」に対応した格納形式で、「SS6PUの基礎データ格納形式」です。
アトリビュート毎に、キーデータ間の補間を全て展開した上で、「値が変化している」箇所を抽出・辞書化して格納しています。
ただし、常に補間が発生しているようなデータに対しては、データサイズが非圧縮に漸近するというデメリットを持っています。
現在設定可能な格納方式の中で、現実的にプレーヤーの動作が最も高速な格納形式です(他の格納形式は、主に本形式のデータサイズ面でのデメリットを緩和するための派生形式ともいえるため、本形式よりも処理量が増えています)。
「CPE + Flyweight」(変化点抽出 + GoF's Flyweight pattern)
(※廃止予定)
Standard CPEでのデータの増加を抑えるために「GoF's Flyweight pattern」を併用して、同じデータ値の重複格納を抑制した格納形式です(「(Standard CPEでは)各アニメーション中の各アトリビュート毎で持っている変化点での値辞書を、複数のアニメーションとアトリビュート間での共通辞書に変えた」と言い換えることができます)。
加えて、CPE+Interpolateと同様にタプル(ベクトルなどの複数の値をまとめて持っているもの)については、できるだけ成分別に格納してあります。
主に、同じデータ値が出現することが多いデータをターゲットにした特性を持っています。
辞書部を同じssaeのアニメーション間でグローバル(共通)に持っているため、データが大きく・かつ重なる値が少なすぎる場合などに辞書への定義数がオーバーフローする場合があります。
辞書定義数がオーバーフローした場合、
「SS6PU Error: Convert (Data-Animation): Failure Packing Attribute ~」
のエラーログが出て・インポートが中断されます。
このエラーが出る場合、本形式に割り当てられているアトリビュートの一部を他の形式に設定してください。
1データあたりの基本情報(辞書参照などの情報符号)がStandard CPEに比べ大きくなっています(タプルの各成分毎に分割されているため、Standard CPEにくらべ基礎情報数が増えているためです)が、増分を考慮しても、Standard CPEよりもデータが小さくなることは担保されています。
- 非対応アトリビュート
- ステータス(非表示などチェック状態のアトリビュートの集合+副次情報)
- 参照セル
- ユーザーデータ
- インスタンス(再生設定)
- エフェクト(再生設定)
※注釈:
辞書の構成は下記になります(オーバーフロー時や、最適な設定組み合わせの参考にしてください)。
- Int値(現在使用しているアトリビュートはありません。将来拡張用に確保してあります)
- float/Vector2共通float値(通常のアトリビュート用)
- Vector3(X/Y/Z座標・X/Y/Z軸回転)専用float値
- 頂点変形座標専用float値
- パーツカラー色成分専用Color値
同じfloat(浮動小数)の辞書が3分割されているのは、これらを全てひとつの辞書に集めてしまうと辞書のオーバーフローが相当な頻度で起こるため、それを緩和する目的で辞書の使用状態を分散させているためです。
「CPE & Interpolate」(変化点抽出 + 補間式)
Standard CPEでのデータの増加を抑えるために、「直線」「加速」「減速」のCPU負荷が低い補間式を用いている箇所は補間式のまま格納し・その他のリアルタイムで計算すると負荷が大きい補間式については展開した後にCPEを適用する方式です。
※「直線」「加速」「減速」補間のみを用いている場合、SpriteStudio6上のキーフレームのデータのみが格納される方式となります。
ただし、「補間をすることができない」「一部の、継承ができる(親子のパーツで影響が伝搬する)」アトリビュートには使用できません。
そのため、主にローカル不透明度や座標・スケール(下記「※注釈」参照)などに用いることでデータ容量を抑える目的を持っています。
「補間をすることができないアトリビュート」は、例えば「参照セル」「ユーザーデータ」などで、本形式で保存する意味がなく・かつデータ自体もStandard CPEと同じ結果になるため、最初から非対応としてあります。
「一部の、継承ができるアトリビュート」は、親パーツの値に子パーツが影響を受けるために「最終的な値の変化が計算で表現できない」ために使用できません。これが「RateOpacity」の格納領域に対して、「ローカル不透明度」「マスク強度」は本形式で格納できても・「不透明度」だけがStandard CPEに置き換えられる理由です。
デメリットとしては、タプル(ベクトルなどの複数の値をまとめて持っているもの)は各要素をばらばらに格納しておき、ランタイムでそれぞれ別々に計算してから最終的な値に合成する必要があるため、CPU負荷がStandard CPEに比べて高くなる側面があります。
- 非対応アトリビュート
- ステータス(非表示などチェック状態のアトリビュートの集合+副次情報)
- 参照セル
- 不透明度(強制的にStandard CPEを使用)
- ユーザーデータ
- インスタンス(再生設定)
- エフェクト(再生設定)
※注釈:
上記「一部の、継承ができるアトリビュート」の「一部」を具体的に説明すると
「X/Y/Z座標・X/Y/Z軸回転・X/Yスケール以外で、親パーツの影響を子パーツが受ける」
ものを指し、実例としては「不透明度」「左右反転」「非表示」などが挙げられます。