新しいLive2D公式コミュニティ(日本向け)が公開されました!
ぜひご利用ください!
Live2D公式コミュニティ

■このコミュニティの今後について
このコミュニティ(forum.live2d.com)につきましては、しばらくの間新コミュニティと並行して運営しますが、2023年夏ごろを目処に方針を決定する予定です。
(2022/12/27追記 2022年内を目処に閉鎖 から変更しております)
内容については決定次第お知らせいたします。
海外向けコミュニティについては変更ございません。
Live2Dに関するユーザーのみなさま同士の交流・ご質問・不具合の報告・提案・要望などについて是非お寄せください。
※Live2D公式スタッフからの発言や回答については確約できないことを予めご了承ください。

Live2D ヘルプ

Cubism Editorダウンロード / 動作環境
Cubism SDKダウンロード / 対応表
Cubism 製品利用ライセンス(SDK含)

Cubism 製品のライセンスについてのお問い合わせはこちら
nizima 及び nizima 製品についてのお問い合わせはこちら
【各最新OSの対応状況について】
Cubism Editorは 4.1.02 正式版以降でWindows 11 及び macOS Monterey に対応しております。ぜひ最新版をご利用ください。
※macOSをお使いの方でOSアップデートする際は必ずCubism Editorのライセンスを解除してください。
Cubism EditorをインストールしているmacOSをアップグレードしたい
Cubism SDKについては各SDKのREADMEまたはNOTICEをご確認ください。

【Mac各機種への対応状況について】
現在、Cubism EditorはApple M1チップ搭載機種には対応しておりません。
詳細は 動作環境 をご参照ください。
関連するお問い合わせへの対応はこの文章をもって代えさせていただきます。
Cubism 製品のマニュアル・チュートリアルはこちら
 
Cubism Editorマニュアル    Cubism Editorチュートリアル    Cubism SDKマニュアル    Cubism SDKチュートリアル

Live2Dモデルをテクスチャにレンダリングできない

編集済: 11月 2016 Cubism SDK 2.1
お世話になります。

CubismSDKのバージョンを変更したところ、IDirect3DDevice9::SetRenderTarget()を用いて、テクスチャにレンダリングする際に、Live2Dモデルが描画されなくなりました。
以前は、VS2010+DirectX2010June+CubismSDK_2.0.06_1という環境で開発しており、その際本事象は発生しませんでした。
今回、開発環境のバージョンアップに伴い、CubismSDKのバージョンを変えた(2.0.06_1→2.1.04_1)ところ、
本事象が発生しました(ソースの変更はありません)。
下記動作確認結果から、CubismSDKのバージョンアップ(2.0→2.1)で何かが変わったものと推察されますが、
現状原因が分からず、問い合わせさせて頂きました。

〇動作確認結果
・VS2010+DirectX2010June+CubismSDK_2.0.06_1は〇
・VS2010+DirectX2010June+CubismSDK_2.1.00_1は×
・VS2010+DirectX2010June+CubismSDK_2.1.01_1は×
・VS2010+DirectX2010June+CubismSDK_2.1.04_1は×
・VS2015+DirectX2010June+CubismSDK_2.0.06_1は×(コンパイル時リンクエラー)
・VS2015+DirectX2010June+CubismSDK_2.1.04_1は×

〇参考サイト
http://d.hatena.ne.jp/taiyakisun/20100228/1267312271


お手数ですが、ご調査頂けると幸いです。
以上です。よろしくお願いします。

開発環境
------------------------------------------
Windows10 Pro 64bit
Microsoft Visual Studio Professional 2015 Update 3
C++
DirectX9.0c SDK (June 2010)
Live2D Cubism SDK for DirectX Version 2.1.04_1

Debugモード時設定
ランタイムライブラリ:マルチスレッドデバッグ(/MTd)
追加の依存ファイル:live2d_directX_mtd.lib
ライブラリパス:Live2D_SDK_DirectX_2.1.04_1_jp\lib\x86\140
------------------------------------------

コメント

  • @gama55 さん

    >〇動作確認結果
    こちらの内容ですが、SDK付属のサンプルプロジェクトでの結果でしょうか?

  • y_a_s_(Dev Staff) 様

    ご質問ありがとうございます。
    こちらはサンプルプロジェクトではなく、自作のプロジェクトでの結果となります。
  • @gama55 さん

    > こちらはサンプルプロジェクトではなく、自作のプロジェクトでの結果となります。
    ありがとうございます。
    念のための確認ではありますが、SDK付属のサンプルプロジェクトは動作すると考えてもよろしいでしょうか?
    もし動作する場合、こちらで調査した結果、初回の live2DModel->draw() の直前に設定されていたレンダーターゲットをSDK内でキャッシュしてしまいます。
    そのため、その後でアプリケーション側でレンダーターゲットを切り替えても、Live2Dは最初にキャッシュしたターゲットに描画を行っています。
    対処法ですが、予め描画するレンダーターゲットが変わらないのであれば、初回描画の直前に描画したいレンダーターゲットをメインに設定していただければ想定した動作が可能です。
  • y_a_s_(Dev Staff) 様

    ご回答ありがとうございます。

    > 念のための確認ではありますが、SDK付属のサンプルプロジェクトは動作すると考えてもよろしいでしょうか?
    はい。サンプルプロジェクト(Simple_MTプロジェクトで確認)は正常に動作することを確認しています。

    > もし動作する場合、こちらで調査した結果、初回の live2DModel->draw() の直前に設定されていたレンダーターゲットをSDK内でキャッシュしてしまいます。
    > そのため、その後でアプリケーション側でレンダーターゲットを切り替えても、Live2Dは最初にキャッシュしたターゲットに描画を行っています。
    なるほど。そういうことでしたか。今回の事象では、バックバッファからテクスチャに、途中でレンダーターゲットを切り替えたときに発生していたので、合点がいきました。

    > 対処法ですが、予め描画するレンダーターゲットが変わらないのであれば、初回描画の直前に描画したいレンダーターゲットをメインに設定していただければ想定した動作が可能です。
    レンダーターゲットが途中で変わる場合は、どうしたらいいでしょうか?

    今回やりたかったことというのが、Live2Dモデル全体のフェードイン、フェードアウトでして、通常はバックバッファに描画しているモデルを、フェードする際にテクスチャにレンダーターゲットを変更して、テクスチャの透明度を変更することで実現していました。
    最初からモデルをテクスチャに描画して、そのテクスチャをバックバッファに書くようにすればいいんでしょうか?
  • @gama55 さん

    > 最初からモデルをテクスチャに描画して、そのテクスチャをバックバッファに書くようにすればいいんでしょうか?
    現状のSDKではこの方法で回避していただくのが最良かと思います。
  • 編集済: 11月 2016
    y_a_s_(Dev Staff) 様

    ご回答ありがとうございます。

    > もし動作する場合、こちらで調査した結果、初回の live2DModel->draw() の直前に設定されていたレンダーターゲットをSDK内でキャッシュしてしまいます。
    上記動作ですが、バグではなく2.0→2.1での仕様変更ということでしょうか(これから変更されることは無い動作?)?
    あと、Live2Dモデルだけでなく、それ以降に描画したBMP画像なども、レンダーターゲット変更できなくなっているようです(キャプチャを取るとLive2Dモデルよりも奥の背景のみ描画される状態)。
  • @gama55 さん

    > 上記動作ですが、バグではなく2.0→2.1での仕様変更ということでしょうか(これから変更されることは無い動作?)?
    2.1実装時に入ってしまったバグになります。誠に申し訳ありません。
    時期は未定ですが、下記の件も含め対応を検討させていただきます。

    > あと、Live2Dモデルだけでなく、それ以降に描画したBMP画像なども、レンダーターゲット変更できなくなっているようです(キャプチャを取るとLive2Dモデルよりも奥の背景のみ描画される状態)。
    こちらもバグが原因の動作となっております。
    内部でレンダーターゲットを変更する処理を行っているのですが、その処理後に設定し直すレンダーターゲットをキャッシュしたターゲット(live2DModel->draw()直前に設定されていたターゲット)にしてしまっていました。
    live2DModel->draw() の直後に、レンダーターゲットを任意のものに設定していただければ回避が可能です。
  • y_a_s_(Dev Staff) 様

    ご回答ありがとうございます。
    対応検討の件、回避方法の件了解しました。
    ご対応お待ちしております。
コメントするにはサインインまたは登録して下さい。