L2dSurface      [w]

20200929 サブアプリケーション・スプライト利用時でのチラつきに対応 (20190805追記) ※Live2D 2.x系はAndroid及びiosにおける64bit対応ライブラリが非提供により非対応 http://sites.cybernoids.jp/cubism-sdk2/updatehistory_2-1/cpp いずれ気が向いたら3.x版でも… --------------------------------------------------------------------------------- HTML5動作サンプル https://game.nicovideo.jp/atsumaru/games/gm8782?key=4e49bb5cf45e [Build 20181105] 複数のLive2Dオブジェクトを運用している際に ウインドウサイズの変更でクラッシュする件を修正 [Build 20181101] ウインドウサイズの変更でクラッシュする件を修正 モーションファイルが無い場合にクラッシュする件を修正 ================================================================================ Live2Dを利用する場合にはライセンス規定があるので注意してください http://www.live2d.com/ja/products/cubism_sdk ================================================================================ Live2D Surface Extention ※Live2D 2.1SDK BASE 動作に必要なDLLについて ※Live2D内部で使用されています d3dx9d_43.dll 正規ルートを通るならこのパッケージのインストールが必要 https://www.microsoft.com/ja-jp/download/details.aspx?id=35 ----------------------------------  d3dx9d_43.dllを手動で入れる場合に必要な箇所 c:\windows/system32/d3dx9d_43.dll ここに入れる もしくは・・・ C:\Program Files\Clickteam Fusion Developer 2.5\d3dx9d_43.dll C:\Program Files\Clickteam Fusion Developer 2.5\Runtime\Unicode\d3dx9d_43.dll に配置が必要 ---------------------------------- L2dSurface.mfxを入れる場所 C:\Program Files\Clickteam Fusion Developer 2.5\Extensions\L2dSurface.mfx C:\Program Files\Clickteam Fusion Developer 2.5\Data\Runtime\Unicode\L2dSurface.mfx ----------------------------------------- CF25各種命令について ■actions(呼び出しイベント) LoadModel Live2Dモデルデータの定義書を読み込みます(model.jsonを指定) SetSurfaceSize Live2Dを表示するSurfaceのサイズをリサイズします UpdateViewMatrix Live2D内部の座標系を変更します(Live2D描画の表示位置・拡大縮小など・"カメラ位置の概念") ------------------ startMainMotion startSubMotion motionsに記述されたグループ名と番号を指定してモーションを再生させます("idle"の0番目を再生…のように) SetExpression "expressions"に記述されたnameを指定し、表情の変更します setPartsOpacity モデルデータ内部で使用されているパーツIDに対して透明度を指定できます ------------------ addToParam mulToParam setToParam モデルデータ内部で使用されているパラメーターに対して数値を指定・計算できます ------------------ AutoParameter Subset LookTarget 指定した座標に対して向かせられます(基本的にはXMOUSE,YMOUSEを与える) Natural_Moving 自動で少し動きます(PARAM_ANGLE_X,PARAM_ANGLE_Y,PARAM_ANGLE_Z,PARAM_BODY_ANGLE_X,PARAM_BREATHが自動で操作されます) IdoleMotionRandomPlay "motions":"{idle"}の中からランダムで継続的に再生されます ------------------ Surface SetHotSpot サーフェスに対してのホットスポットを設定します(回転・拡大縮小の中心点) SetRotate サーフェスを回転させます SetScaleX SetScaleY サーフェスを拡大・縮小させます ------------------ ManualDrawMode (これはfpsが出ない場合等の手動描画モードと想定) AutoDrawMode Live2Dがサーフェスに描画するタイミングを手動か自動か決められます(デフォルトでは自動描画モード、下記の毎フレーム更新と描画を行う) ManualUpdate Live2Dモデルの状態を最新に更新します(Live2D内部時間の状態にポーズなどの情報を更新する) ManualDraw Live2Dモデルをサーフェスに描画します(内部時間の状態"現在のポーズ"を描画する) ------------------ ■expressions(数式エディタから呼び出せる命令) HitCheck 当たり判定定義に対して当たっているか調べます(0:当たっていない 1:当たってる) -> "hit_areas":[ {"name":"head"} ] getParamFloat 指定したパラメーターの現在の値を取得します(PARAM_ANGLE_Xなど) getPartsOpacity 指定したパラメーターの現在の値(透明度)を取得します getMainMotionFinish 現在のメインモーションが終了しているか取得します(0:動作中 1:終了) getSubMotionFinish 現在のサブモーションが終了しているか取得します Surface (ここで言うサーフェスとはCFのオブジェクトの事を表す) getRotate 現在のサーフェスの回転値を取得します getScaleX getScaleY 現在のサーフェスのスケールを取得します ■conditions(イベント発生) Main motion finish メインモーションが終了したら発生します Sub motion finish サブモーションが終了したら発生します ------------------------------------------------------------ model.json定義のフォーマットはエクステンション内部で記述されているので下記で固定 動作が組まれているのはサンプルにあるように・・・ "model" "textures" "layout" "hit_areas" "motions" "expressions" "physics" "pose" です ------------------------------------------------------------------------ リップシンクなどは(再生中のボイス音量と口パクを連動させる機能) CFのシステムから再生中の音声を取る方法が判明しなかった為音声連動機能は実装されていません 変わりにサブモーションというメインと合わせ2重にモーションが再生できる機能を入れたので その類はここで表現するといいかもしれません。 当たり判定等の座標位置を取得する命令はいずれ作る予定 ------------------------------------ スペシャルサンクス ASD氏 不具合の発見に感謝 DOWNLOAD