ようこそ!

初めてですか? 参加するには、どちらかのボタンをクリックしてください!

【Live2D Creators Circleのご案内】
Live2Dでは現在、業務をお手伝いしていただけるユーザーの方々を募集しています。
もし、ご興味がありましたら下記URLより詳細をご確認ください。
https://goo.gl/0oBmkq
【いただいたご質問への返信について】
現在、繁忙期に差し掛かっており、いただいたご質問への回答に遅れが発生しております。ご迷惑をおかけして、まことに申し訳ございません。何卒ご理解を賜りますようお願い申し上げます。

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

edited 11月 2016 in Cubism SDK
お世話になります。

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ではこの方法で回避していただくのが最良かと思います。
  • edited 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) 様

    ご回答ありがとうございます。
    対応検討の件、回避方法の件了解しました。
    ご対応お待ちしております。
Sign In or Register to comment.