HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2023
0921
SultionLive2Dモデルを扱う方法4未解決


Sultion

リンク

2023/9/21(Thu) 20:39:00|NO.100062

Live2Dキャラと、AIでおしゃべりできる作品を作りたいと思っています。
AI部分はChatGPTのAPIを使うとして、キャラの見た目を実装するのが課題です。
Live2Dのキャラを表示・制御する方法はありますか?
MMDだとキャラのモデルデータがないのでできればLive2Dがいいです...



この記事に返信する


inovia

リンク

2023/9/22(Fri) 12:03:52|NO.100065

HSPからDXライブラリを使えば、比較的容易にLive2Dが扱えそうです。

【動画イメージ】
https://hsp.moe/txt/dxlib/Live2D.mp4
※ 本動画イメージのキャラクターには株式会社Live2Dの著作物が用いられています。

【説明】
以下のファイルの入手が必要です
※ 32bit版のみ動作を確認しています。PCが64bitでも32bit版のDLLを必ず使用してください。

・DXライブラリ(Dxlib.dll)
・HSP用DXライブラリヘッダファイル(DxLib.as)
・Live2D Cubism SDK for Native(Live2DCubismCore.dll)
・任意のモデルデータ(*.model3.json)

【DXライブラリ入手先】
※ VisualC# 版の Dxlib.dll が必要です。C++版ではありません。
https://dxlib.xsrv.jp/dxdload.html

【DXライブラリLive2D関連リファレンス】
https://dxlib.xsrv.jp/function/dxfunc_live2D_cubism4.html

【HSP用DXライブラリヘッダファイル】
https://hsp.moe/download/DxLib.as
もしくは
https://hsp.moe/download/DxLib_324b.as

【Live2D Cubism SDK for Native】
https://www.live2d.com/sdk/download/native/

【モデルデータ】
https://www.live2d.com/learn/sample/

【サンプルコード】

#include "DxLib.as" #uselib "user32.dll" #func SetProcessDPIAware "SetProcessDPIAware" WINDOW_SIZE_W = 480 WINDOW_SIZE_H = 720 // 高DPI環境だと、先にSetProcessDPIAwareを実行しないとタイトルバーが描画されないケースあり SetProcessDPIAware screen 0, WINDOW_SIZE_W, WINDOW_SIZE_H SetUserWindow hwnd SetUserWindowMessageProcessDXLibFlag 0 ChangeWindowMode TRUE Live2D_SetCubism4CoreDLLPath "Live2DCubismCore.dll" if (stat == -1) { dialog "Live2DCubismCore.dll が読み込めませんでした" end } DxLib_Init if (stat == -1) { dialog "初期化エラー" end } // Live2Dモデルの読み込み Live2D_LoadModel "hiyori_free_jp/runtime/hiyori_free_t08.model3.json" if (stat == -1) { dialog "モデルロードエラー" end } ModelHandle = stat title "ESCキーで終了します" // 拡大 Live2D_Model_SetExtendRate ModelHandle, 3.0, 3.0 repeat SetDrawScreen DX_SCREEN_BACK // 背景描画 GetColor 0, 0, 0 DrawBox 0 ,0, WINDOW_SIZE_W, WINDOW_SIZE_H, stat, 1 // モーション再生が終了していたらアイドリングモーションをランダムで再生 Live2D_Model_IsMotionFinished ModelHandle if (stat == TRUE) { GetRand 8 rndVal = stat Live2D_Model_StartMotion ModelHandle, "Idle", rndVal } // モデルの状態を60分の1秒分進める Live2D_Model_Update ModelHandle, 1.0 / 60.0 // Live2D描画の開始 Live2D_RenderBegin // モデルの描画 Live2D_Model_Draw ModelHandle // Live2D描画の終了 Live2D_RenderEnd // 裏画面の内容を表画面に反映 ScreenFlip // ESCキーで終了 CheckHitKey KEY_INPUT_ESCAPE if (stat == TRUE) : break ProcessMessage if (stat < 0) : break await 0 loop goto *exit stop *exit // Live2D モデルの削除 Live2D_DeleteModel ModelHandle // DXライブラリ使用の終了処理 DxLib_End end



Sultion

リンク

2023/9/22(Fri) 22:44:20|NO.100070

描画までできました!
詳しくありがとうございます!
ところで、待機モーション以外を再生ってできないんでしょうか?
"CubismViewerForUnity"のようにマウスカーソルを目で追うとか、あるいはうごかすとか。
使えそうな関数とかだけ教えていただければ...(すべてコードを書くと申し訳ないので)



inovia

リンク

2023/9/23(Sat) 01:07:31|NO.100071

以下のリファレンスを見て、サンプルコードを作成していますね。
https://dxlib.xsrv.jp/function/dxfunc_live2D_cubism4.html

私も昨日、初めてLive2D関連をインストールして動かしてみただけなので、
詳しいわけではないですが、意図したとおりに動いている模様。

マニュアルやSDKがきちんと整備されているはありがたい。


#include "DxLib.as" #uselib "user32.dll" #func SetProcessDPIAware "SetProcessDPIAware" WINDOW_SIZE_W = 480 WINDOW_SIZE_H = 720 // 高DPI環境だと、先にSetProcessDPIAwareを実行しないとタイトルバーが描画されないケースあり SetProcessDPIAware screen 0, WINDOW_SIZE_W, WINDOW_SIZE_H SetUserWindow hwnd SetUserWindowMessageProcessDXLibFlag 0 ChangeWindowMode TRUE Live2D_SetCubism4CoreDLLPath "Live2DCubismCore.dll" if (stat == -1) { dialog "Live2DCubismCore.dll が読み込めませんでした" end } DxLib_Init if (stat == -1) { dialog "初期化エラー" end } // Live2Dモデルの読み込み Live2D_LoadModel "hiyori_free_jp/runtime/hiyori_free_t08.model3.json" if (stat == -1) { dialog "モデルロードエラー" end } ModelHandle = stat title "マウスカーソルを移動すると目線も移動します" // 拡大 Live2D_Model_SetExtendRate ModelHandle, 3.0, 3.0 SetDrawScreen DX_SCREEN_BACK cx = 0 : cy = 0 repeat // 背景描画 GetColor 0, 0, 0 DrawBox 0 ,0, WINDOW_SIZE_W, WINDOW_SIZE_H, stat, 1 // モーション再生が終了していたらアイドリングモーションをランダムで再生 Live2D_Model_IsMotionFinished ModelHandle if (stat == TRUE) { GetRand 8 rndVal = stat Live2D_Model_StartMotion ModelHandle, "Idle", rndVal } // マウスの座標 normalized_x = (1.0 * mousex - WINDOW_SIZE_W/2) / (1.0 * WINDOW_SIZE_W/2) * 10.0 normalized_y = (1.0 * WINDOW_SIZE_H/2 - mousey) / (1.0 * WINDOW_SIZE_H/2) * 10.0 // title strf("%2.2fx%2.2f", normalized_x, normalized_y) Live2D_Model_SetParameterValue ModelHandle, "ParamAngleX", normalized_x // 角度X Live2D_Model_SetParameterValue ModelHandle, "ParamEyeBallX", normalized_x // 目玉X Live2D_Model_SetParameterValue ModelHandle, "ParamBodyAngleX", normalized_x // 体の回転X Live2D_Model_SetParameterValue ModelHandle, "ParamAngleY", normalized_y // 角度Y Live2D_Model_SetParameterValue ModelHandle, "ParamEyeBallY", normalized_y // 目玉Y // モデルの状態を60分の1秒分進める Live2D_Model_Update ModelHandle, 1.0 / 60.0 // Live2D描画の開始 Live2D_RenderBegin // モデルの描画 Live2D_Model_Draw ModelHandle // Live2D描画の終了 Live2D_RenderEnd // 裏画面の内容を表画面に反映 ScreenFlip // ESCキーで終了 CheckHitKey KEY_INPUT_ESCAPE if (stat == TRUE) : break ProcessMessage if (stat < 0) : break await 0 loop goto *exit stop *exit // Live2D モデルの削除 Live2D_DeleteModel ModelHandle // DXライブラリ使用の終了処理 DxLib_End end



Sultion

リンク

2023/9/24(Sun) 16:38:46|NO.100078

うーん
動きませんでした
自分で頑張ってみます



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.100062への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2023(c) All rights reserved.