Creature Animation Extension       [w,a,i,h]

※アーカイブにはwin版のみです ================================================================================ * Creature Animation Extension * * ツールの開発・配布元 * https://creature.kestrelmoon.com/ * このプラグインの利用・作品公開の際には「正式なcreatureライセンスの所持」が条件になります*公式見解 * ================================================================================ 20200929 サブアプリケーション・スプライト利用時でのチラつきに対応 20190104 β版としてCF25-Discordコミュニティへ公開 ■現仕様 ----------------------------------------------------------------------- json形式のみ対応、ロード時に "default"のアニメーションデータが必要 (SetCreatureData時に初期化されます) アニメーションの速度は default 0.01 SetTextureはSetCreatureDataの後で無いと反映されない ================================================================================ 設置と操作・動作仕様 ================================================================================ ■creature_ext.mfxを入れる場所(ランタイム) エディット時に必要な配置(Extensions) C:\Program Files\Clickteam Fusion 2.5\Extensions\Unicode\creature_ext.mfx ビルド時に必要な配置(Runtime) C:\Program Files\Clickteam Fusion 2.5\Data\Runtime\Unicode\creature_ext.mfx ---------------------------------- ■d3dx9d_43.dllの配置箇所(エディット時に必要) C:\Program Files\Clickteam Fusion 2.5\d3dx9d_43.dll C:\Program Files\Clickteam Fusion 2.5\Runtime\Unicode\d3dx9d_43.dll (テクスチャロード時に使用) 手動配置以外なら、このパッケージのインストール https://www.microsoft.com/ja-jp/download/details.aspx?id=35 ---------------------------------- 動作仕様について CF側ではレンダーテクスチャー(Surface)を配置し、そこに3DデータとしてのCreature Animationを描画しています。 Surface内部、Creature Animationの座標データは Creature Animationデータの作成ツールで扱われている小数点をベースとした座標となっています。 (中央を(0.0,0.0)とした左をマイナス方向、右をプラス方向とした座標系・・・と思われる) ※レンダリング表示のサイズ感についてはUpdateViewMatrixで指定できます。 CFのオブジェクト毎にテクスチャやクリーチャーデータを読み込む方式では無く グローバルなエリアにデータを読み込んでおき、CFオブジェクトから使用データを指し示す方式を採用しています。 ------------ まずグローバルにロード -クリーチャーデータを0番にロード -テクスチャーデータAを0番にロード -テクスチャーデータBを1番にロード ----- CF上のオブジェクト └クリーチャーデータ0番を使用 └テクスチャ0番を使用 ※その為、テクスチャのみの変更も可能  └テクスチャ1番に変更 ------------ データの管理が少し大変になりますが、それなりの数が出るゲームシーンを考えると メモリの節約が必要になるのでこの方式になっています。 =============================================================================== 各種命令について(CF2.5) =============================================================================== ■actions(呼び出しイベント) --------------- グローバルなデータプール方式 : id部分は 0-254までを指定 LoadCreaturePool( id , filename ) id番号のクリーチャーデータ用プールにロードします LoadTexturePool( id , filename ) id番号のテクスチャ用プールにロードします ReleaseTexturePool( id ) id番号のロード済みテクスチャを解放します ReleaseCreaturePool( id ) id番号のロード済みクリーチャーデータを解放します ReleaseAllPool 全てのプールを解放します (アプリケーション終了時にも全て解放されます) --------------- SetCreatureData( id ) クリーチャーデータ用プールにあるデータで初期化します("default"のアニメーションデータを初期化します) SetTexture( id ) テクスチャー用プールにあるテクスチャを指定します *[現在の仕様ではSetCreatureData後でないと反映されません] InitAnimation( animation name ) クリーチャーデータ内のアニメーションデータを有効にします(初期化) PlayAnimation( animation name ) 有効済みのアニメーションデータを再生します SetAnimationSpeed( spd ) # default 0.01 アニメーションの速度を設定します SetAnimationBlending( Animation name , spd ) 現在再生中のアニメーションとのブレンドを行ったアニメーションを再生します(アニメーション位置は0に戻る[恐らく仕様?]) SetMirrorY( flg ) 描画を反転します setAnimetionTime( time ) アニメーションの経過時間を指定します --------------- UpdateViewMatrix( left , right , top , bottom ) 描画するサイズを指定します fitMatrixtoSurface 現在指定中のCreatureAnimationのデータを元に、描画の中央に収まるViewMatrixを指定します(割合指定付き) --------------- LoadMetaFile( filename ) 現在適用しているクリーチャーデータにメタファイルを読み込みます SetSkinSwap( name ) メタデータ内の着せ替えデータを適用します setMorphTargetFlg( flg ) モーフィングターゲットモードを切り替えます(0:off 1:on) setMorphTargetPos( base_x , base_y , target_x , target_y ) モーフィングターゲットの座標を指定します --------------- SetSurfaceSize( width , height ) CF側サーフェスのサイズを指定します SetHotSpot( x , y ) CF側、拡大縮小回転の中心点を指定します SetRotate( angle ) CF側サーフェスを回転させます SetScaleXY( scale_x , scale_y ) CF側サーフェスを拡大・縮小させます --------------- setDebugDraw( flg ) デバッグ用・サーフェスの枠・CreatureAnimationのボーンを表示します =============================================================================== ■expressions(数式エディタから呼び出せる命令) =============================================================================== getScaleX CF側、X方向の拡大値を得ます getScaleY CF側、Y方向の拡大値を得ます getRotate CF側、回転角度を得ます --------------- getAnimetionTime CreatureAnimetion再生中の時間を得ます getBoxPoint_X(0-3) CreatureAnimetionキャラクターのBoundingBoxの頂点x座標を得ます (0:左上 1:右上 2:左下 3:右下) getBoxPoint_Y(0-3) CreatureAnimetionキャラクターのBoundingBoxの頂点y座標を得ます (0:左上 1:右上 2:左下 3:右下) hitTestBoundingBox( XMouse, YMouse ) 指定ポイントに対して描画矩形内にあるか判定します(0:なし 1:あり) hitTestPolygons( XMouse, YMouse ) 指定ポイントに対して描画ポリゴン内(頂点)にあるか判定します(0:なし 1:あり) =============================================================================== そのほか、作者の疑問・覚書など… =============================================================================== 画面外オブジェクトに対してCF処理上、描画処理は弾かれている事を確認 (必要以上に処理をしていない) ご意見・フィードバックなどお待ちしております。 ご支援も受け付けております。(Donate) http://amzn.asia/gIxy6LV WEBGL版(開発・テスト版) https://game.nicovideo.jp/atsumaru/games/gm9300?key=6328b4089601 ********************************************************************************* * * メモ・覚書・ライセンス関係など * ********************************************************************************* ■ツール・価格について 現在の所ではSpineやLive2Dまでの知名度では無いが それら同等の機能を有しているアニメーションツールです https://creature.kestrelmoon.com/purchase.html 無料での試用も可能ですが、データ出力まで行うには購入する必要があります(月額ライセンス) ※20191117 -> ライセンス形態が変更されたようで買い切りになっている様子? ********************************************************************************* * 更新情報 ********************************************************************************* [20181220] モーフィング機能の追加(ターゲットを見る動作) 内部的にアニメーションブレンドと干渉するらしく 通常のPlayAnimationではブレンドアニメーションにならないよう仕様の変更 ※setMorphTargetPosの座標計算が少し怪しい気はするが… アクション指定メニュープルダウンの整理 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*---*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* [20181216] 当たり判定の反転時の計算で狂っていた部分の修正 [20181215] expressions式の getBoxLeft,getBoxRight,getBoxTop,getBoxBottom を 廃止 DebugViewにおいて、内部BoundingBoxを赤線で表示 getBoxPoint_X(0-3) getBoxPoint_Y(0-3) CreatureAnimetionキャラクターのBoundingBoxの頂点座標を得ます (0:左上 1:右上 2:左下 3:右下) ●expressions式において内部ポリゴンへの当たり判定検出を追加 hitTestBoundingBox( XMouse, YMouse ) 指定ポイントに対して表示矩形内にあるか判定します(0:なし 1:あり) hitTestPolygons( XMouse, YMouse ) 指定ポイントに対して表示ポリゴン内にあるか判定します(0:なし 1:あり) [20181213] CFエディタ中 プロパティ → エフェクト → アンチエイリアス で、アンチエイリアスが掛かるように調整(CF転送) -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*---*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* [20181212] LoadCreaturePool -> ロード済みCreatureプール番号に対して別ファイルをロードした場合上書きされるように変更 *テクスチャも同様に上書きされる為 これはシーンを変更した際、番号が被っている場合に意図した動作に成り難かった為に変更 [20181210] 反転時、setDebugDrawによるボーン情報も反転するように調整 [20181208] アニメーション切り替えがシームレスに繋がるように設定を調整変更 初期化するアニメーションがjson内に無い場合にクラッシュしないように修正 初期化していないアニメーションを再生しようとした場合にクラッシュしないように修正 [20181206] アンチエイリアスが掛からないバージョンに変更中(内部テクスチャ設定) DOWNLOAD