spritestudio / ssbplib Goto Github PK
View Code? Open in Web Editor NEWSpriteStudio5のアニメーションをゲーム、アプリで使用するための汎用C++ライブラリです。
License: MIT License
SpriteStudio5のアニメーションをゲーム、アプリで使用するための汎用C++ライブラリです。
License: MIT License
SS5ではインスタンスパーツにするソースアニメーションに当たり判定やユーザーデータを含むような使用方法は推奨しておりません。
インスタンスパーツを配置したアニメーションの再生時間と、インスタンスパーツによって再生されるソースアニメーションの再生時間は別で管理されるため意図したデータを取得する事ができません。
インスタンスパーツに当たり判定やユーザーデータを付加する場合は、インスタンスパーツの子パーツとしてNULLパーツやセル参照なしの通常パーツを配置し、そちらへゲーム用データを設定してください。
v1.1.3で修正いたしました。
v1.1系ではDXライブラリの3D機能を使用してスプライトを表示するように変更しました。
こちらの座標系は画面下が0、上方向がプラスとなっておりY座標が逆になっております。
DXライブラリで使用する場合は、void Player::setPosition(float x, float y)関数ないで
_state.y = 画面サイズ - y; と変更する事で2D座標系に合わせる事ができます。
いつもお世話になっております。
一点、ご相談が御座いまして。
ssbpLibで扱うバイナリデータですが、
現状ツール側で設定できる「描画優先度」が格納されていない認識なのですが、
(コンバートする時にパーツが優先度で並び替えられる認識です)
こちらをアプリケーション側で載せるテキスト等との優先度付けの値に使用させて頂きたく、
数値としてバイナリに含めて頂くことは可能でしょうか?
用途としては、
1つのsspjの中のパーツの間に外部の別の描画物を差し込む、とった内容となります。
(※ssのパーツ① -> テキストや2Dエフェクト -> ssのパーツ②の順番で描画したく、
そのために、パーツ側の優先度を使いたい)
何卒ご検討いただけると幸いです。
以上となります。
宜しくお願い致します。
ssbpLib Ver1.1.0の変更点
・SS5.5に搭載されたエフェクト機能に対応しました。
エフェクトのパラメータを動的に加算して動作する性質上、順再生中のみ正しく再生されます。
・参照セルの動的差し替え機能が付きました
setPartCell関数によってゲーム側から特定パーツのセルをssceに登録されている別のセルに差し替える事ができます。
・頂点バッファの情報を見直し、3D描画との相性を高めました。
state.quadに格納されている頂点情報を3D描画時の頂点情報に利用する事ができます。
v1.1.0から対応されたエフェクト機能を使用する場合の制限についてです。
・逆再生には対応しておりません。
エフェクトの性質上前回の値にパラメータを加算して位置を決定しますので、再生フレームが戻った場合は、
先頭からそのフレームまでの起動を再計算する事になります。
そのさいに乱数が再設定されますので、乱数を固定していない場合は違う結果になります。
差分フレームが大きくなる程、計算の負荷が大きくなります。
例えば前回が0フレームを再生し、今回が100フレームを再生する場合、一度に100フレーム分の軌道を
再計算する事になりますので、処理負荷がかかります。
再生時間を戻した場合は0フレーム目から計算しなおす事になり負荷かがかかります。
先頭からエフェクトの軌道を計算し直す際に非表示アトリビュートを考慮しません。
エフェクトパーツは非表示になると動作がリセットされる仕様となっており、本来であれば表示になった
フレームからの現在までの差分を計算する事でエフェクトが再現されるのですが、先頭からアニメーションを
再生しなおして非表示状態を検出する事は非常に高負荷となり、実運用を考えると現実的ではないため、
過去の非表示状態を考慮しない実装となっております。
・アニメーションの再生速度を変更しても、再生フレーム単位の更新になります。
上にもあった様にエフェクトはキーフレームではない事と、内部時間がフレームで管理されている事により
アニメーションの再生速度を0.5に設定した場合、2フレーム毎にエフェクトが更新される形で再生されます。
・エフェクトエディタのFPSはプレビューの値になり、アニメーション配置時の再生速度ではありません。
エフェクトエディターで設定するFPSはプレビュー時のFPSであり、エフェクトの再生速度ではありません。
エフェクトの動作速度は配置するアニメーションのFPSに依存します。
例えばエフェクトの生存時間が30であれば、アニメーションの30フレーム目で消える事になり、
エフェクトエディター上のFPSによってこのタイミングが変化する事がありません。
・エフェクトが再現されない場合
プレイヤーでは実用性を考慮してスプライトバッファのサイズを本体より小さくしています。
それによってエフェクトが再現されない場合ssplayer_effect.hに定義されている定数を変更してください。
#define SSEFFECTRENDER_EMMITER_MAX (128) //エミッターバッファ数
#define SSEFFECTRENDER_PARTICLE_MAX (512) //パーティクルバッファ数
を本体と同じ設定
#define SSEFFECTRENDER_EMMITER_MAX (1024)
#define SSEFFECTRENDER_PARTICLE_MAX (4096)
に変更する事で再現されると思います。
ただしアニメーションの再生時にバッファの確保が行われますので、サイズに応じて負荷がかかります。
実際の環境でパフォーマンスを確認した上で運用していただきますようお願いいたします。
お世話になっております。
SS5Player(ssbpLib)の組み込み検証を行っておりまして、
一点質問がございます。
テストデータにて、アニメーションの再生テストをしていたのですが、
インスタンスを使ったアニメーションを再生した時に、
正しくパーツが表示されない症状となっており、原因が分からない状況です。
「Ss5Converter」にて作成したバイナリをssbpLibにて読み込んでおりますが、
インスタンスアニメーションの参照Cellのindexがキーに入っていないように見受けられます。
ドキュメントを参照したところ、
以下のような記載がありましたが、本症状はこちらに該当するものでしょうか?
>>>>
インスタンス機能で作成したアニメーションをアプリケーションに組み込む際は、
アプリケーション側の対応が必要になります。
こちらは仕様や再生するプラットフォームによっては制限を受けることがありますので、
作成前にアプリケーションの仕様の確認を取ることをお勧めいたします。
(弊社提供プレイヤーでは、SS5P for Unity・SS5P for Cocos2d-x・SS5P for UE4・SS5 SDKが対応しております)
<<<<
また、その場合、
SS5Playerで対応するにあたり、どのような対応を施す必要があるか、
ご教授頂くことは可能でしょうか?
以上となります。
宜しくお願い致します。
セル名、パーツ名に全角文字を使用する事はできません。
半角英数にて名前を付けてください。
UVスケールとUV回転を使用した場合に表示結果がSpriteStudioと異なります。
Ver1.3.7で対応しました。
・モーションブレンド再生が追加されました。
motionBlendPlay関数でアニメーションを再生するとプレイヤーで前回アニメーションを再生している場合に
前のアニメーションとこれから再生するアニメーションのパーツ情報を合成してアニメーションをつなげながら再生します。
この機能を使用するための制限は以下になります。
・遷移前、遷移後のアニメーションが両方とも同じssbp内に含まれている事
・同じパーツ構成(パーツ順、パーツ数)である事
これらの条件を満たすアニメーションをモーションブレンド再生すると、両方のアニメーションに含まれるパーツの中間地点を補間してアニメーションを切り替える事ができます。
これによって厳密にモーションがつながっていないアニメーションでも違和感なくアニメーションをつなぐ事ができます。
アニメーションのプロジェクトの設定>互換性の項目は次にチェックをつけて使用してください。
・エフェクト機能を使用するをオン
・親子の座標変換にマトリクスを使用しない(Ver4互換)をオン
・それ以外の互換性設定をオフにする
SpriteStudioの表示方法が変更され、プレイヤーの挙動と同じ結果になります。
ssbpLib Ver.1.3.0の更新内容です。
・SpriteStudio5.7.0のエフェクト機能に対応しました。
7月上旬にアップデートを予定しております、SpriteStudio5.7.0ではエフェクト機能への要望や再現性を高めるために大幅な変更を行いました。
SpriteStudio5.7.0の変更点はこちらを参照してください。
SpriteStudio5.6.1とはエフェクトの挙動が異なるため、ssbpLib Ver.1.3.0を使用する場合は、エフェクトアニメーションをSpriteStudio5.7.0で確認、調整し使用してください。
・ssbpファイルのフォーマットが変更になりました。
要望に対応するためssbpフォーマットを変更いたしました。ver1.2系のプレイヤーからアップデートする場合は、ssbpファイルの再コンバートが必要となります。
・座標値を16bit整数からfloatに変更しました。
座標アトリビュートに-3200~3200を超える座標を入力すると正常に表示されない現象に対応しました。
・アニメーションのループ範囲してい機能を実装しました。
アニメーションの開始位置、終了位置をフレームもしくはラベル名で設定できるようになりました。
UP_MINUS有効時にYサイズ、頂点変形が再現されない問題はv1.3.8で対応しました。
お世話になっております。
一点ssplayerでの機能的な質問がございます。
特定のパーツに対して、アニメーション(.ssae)を作成後、
さらにその中に以下のようなアニメーションを追加した場合に、
①スライドインしてくるワンショットアニメーション
②【①】とは非同期で動く明滅ループアニメーション
これらを共存させたいのですが、実現する方法はありますでしょうか?
(①、②には重複したアニメションキーは入れない想定です)
ssplayerのブレンド機能は
基本はA→Bへの遷移が前提のようでして、
二つ以上のアニメーションを共存させる方法がありましたら、ご教授頂きたく存じます。
宜しくお願い致します。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.