トップページ > 記事閲覧
Live2Dのモーション再生時にフェード無効設定がほしい
名前:つらリーヌ 日時: 2023/12/09 20:08

DXライブラリとLive2Dを用いてwindows向けアプリの作成を行っている者です。 Live2D付録のCubism Viewerでは「ループ再生時のフェードイン」なるチェックボックスがあり、このチェックを外している場合はループ再生時のみフェードイン・アウトされずにループ再生ができます。 (別モーションへの切り替え時のみフェードイン・アウトの時間が更新され、同モーションへのループではフェードイン・アウトの時間の更新が行われません。) DXライブラリ側でもこれと同等の機能を実装しようと考えています。 @ Ver3.24bで上記の機能は実現可能でしょうか。 Live2D_Model_StartMotion()では必ずフェードイン・アウトが行われてしまうようで、Live2D_Model_Update()に負の数を与えるなど色々試しましたが方法が見つかりませんでした。 A (@が見つからなかったため)DxLibMakeで自作したDxLib.libを用いてビルドを行おうとしたところ、下記のエラーが出てしまいました。 1>DxUseCLib_vs2015_x86_MTd.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル "int __cdecl DxLib::Graphics_Image_MakeGraph_UseGParam(struct SETUP_GRAPHHANDLE_GPARAM *,int,int,int,int,int,int,int)" (?Graphics_Image_MakeGraph_UseGParam@DxLib@@YAHPAUSETUP_GRAPHHANDLE_GPARAM@@HHHHHHH@Z) が関数 "int __cdecl TheoraDecode_SetupImage(unsigned long,int,int,int,int)" (?TheoraDecode_SetupImage@@YAHKHHHH@Z) で参照されました。 1>DxUseCLib_vs2015_x86_MTd.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル "void __cdecl DxLib::Graphics_Image_InitSetupGraphHandleGParam(struct SETUP_GRAPHHANDLE_GPARAM *)" (?Graphics_Image_InitSetupGraphHandleGParam@DxLib@@YAXPAUSETUP_GRAPHHANDLE_GPARAM@@@Z) が関数 "int __cdecl TheoraDecode_SetupImage(unsigned long,int,int,int,int)" (?TheoraDecode_SetupImage@@YAHKHHHH@Z) で参照されました。 1>DxUseCLib_vs2015_x86_MTd.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル "void __cdecl DxLib::Graphics_Image_InitSetupGraphHandleGParam_Normal_NonDrawValid(struct SETUP_GRAPHHANDLE_GPARAM *,int,int,int)" (?Graphics_Image_InitSetupGraphHandleGParam_Normal_NonDrawValid@DxLib@@YAXPAUSETUP_GRAPHHANDLE_GPARAM@@HHH@Z) が関数 "int __cdecl TheoraDecode_SetupImage(unsigned long,int,int,int,int)" (?TheoraDecode_SetupImage@@YAHKHHHH@Z) で参照されました。 DxLib.libを更新する場合、「DxUseCLib.lib のコンパイル」も必ずしなければなりませんか? @Aどちらかのみで良いので、ご教示いただけますか。
メンテ

Page: 1 |

Re: Live2Dのモーション再生時にフェード無効設定がほしい ( No.1 )
名前:管理人 日時:2023/12/10 23:37

> @ Ver3.24bで上記の機能は実現可能でしょうか。 Live2D の機能の実装に使用したサンプルプログラムでも「ループ再生時のフェードイン」についての処理がありましたので、 Live2D_Model_StartMotion の引数で指定できるようにしてみました よろしければこちらの暫定最新バージョンをダウンロードしてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 11.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい) Live2D_Model_StartMotion に第4引数 isLoopFadeIn を追加しました // Live2D のモデルの指定のモーションを再生する int Live2D_Model_StartMotion( int Live2DModelHandle, char *group, int no, int isLoopFadeIn = TRUE ) ; デフォルトでは TRUE となっていますので、FALSE を指定してみてください m(_ _)m > ADxLib.libを更新する場合、「DxUseCLib.lib のコンパイル」も必ずしなければなりませんか? 現在の DxUseCLib.lib は Visual Studio 2015 でビルドしているので、それ以外のバージョンで DxLib.lib をビルドした場合は DxUseCLib.lib もビルドしないと駄目かも知れません…
メンテ
Re: Live2Dのモーション再生時にフェード無効設定がほしい ( No.2 )
名前:つらリーヌ 日時:2023/12/11 16:35

早々にご対応いただき本当にありがとうございます。 上記の暫定最新バージョンで試してみたのですが、変わりませんでした。。。 (FALSEにしてもフェードイン・アウトが適応されていました。) こちらなのですが、Live2DのバージョンやSDKのバージョンが限定されてる等ってありますか? Live2D5.0のエディターでSDK4.2とSDK5.0で出したモーションファイルで試したところ、結果が変わりませんでした。 (DLLもSDK4とSDK5に付随の物でそれぞれ試しましたが、変わりませんでした。) Aについて、vs2015を持っていないのでこちらのアプローチは一旦やめようと思います。 ご回答いただきありがとうございます。
メンテ
Re: Live2Dのモーション再生時にフェード無効設定がほしい ( No.3 )
名前:管理人 日時:2023/12/11 22:21

すみません、追加した引数は引数名の通り『モーションループ時にフェードしない』ためのものでした スレッドタイトルを改めて拝見したら、『モーション再生時( 開始時 )にフェードしない』をご所望だったんですね というわけでそれを実現するための引数を追加しましたので、何度も申し訳ありませんが よろしければこちらをダウンロードしてください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 11.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい) 前回追加した isLoopFadeIn を第5引数に移動して、第4引数として fadeInSeconds を追加しました // Live2D のモデルの指定のモーションを再生する int Live2D_Model_StartMotion( int Live2DModelHandle, char *group, int no, float fadeInSeconds = -1.0f, int isLoopFadeIn = TRUE ) ; こちらがデフォルトでは -1.0f となっていますが、0.0f を渡すことでモーション開始時の フェード時間が 0.0f秒( つまりフェード処理をしなくなる )になりますので、よろしければお試しください m(_ _)m
メンテ
Re: Live2Dのモーション再生時にフェード無効設定がほしい ( No.4 )
名前:つらリーヌ 日時:2023/12/13 20:09

こちらでやりたいことが出来ました、本当にありがとうございます。 ついでの要望で申し訳ないのですが、この機能ってフェードアウト時間に対しても出来ますか? もし可能であればフェードアウトに対しても欲しいです。
メンテ
Re: Live2Dのモーション再生時にフェード無効設定がほしい ( No.5 )
名前:管理人 日時:2023/12/13 22:22

了解です、フェードアウトの引数も追加しましたので、よろしければダウンロードしてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 11.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい) 前回追加した fadeInSeconds の後ろに fadeOutSeconds を追加しました // Live2D のモデルの指定のモーションを再生する int Live2D_Model_StartMotion( int Live2DModelHandle, char *group, int no, float fadeInSeconds = -1.0f, float fadeOutSeconds = -1.0f, int isLoopFadeIn = TRUE ) ; よろしければお試しください m(_ _)m
メンテ
Re: Live2Dのモーション再生時にフェード無効設定がほしい ( No.6 )
名前:つらリーヌ 日時:2023/12/15 07:49

こちらで出来ました! ご対応いただき、本当にありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存