★お知らせ(2023/12/27)
いつもLive2D公式コミュニティをご利用いただき誠にありがとうございます。
本コミュニティは2023年12月27日 11:00をもって閉鎖いたしました。
今後の運営はすべて新Live2D公式クリエイターズフォーラムに移行します。
閉鎖に伴い、以下機能は利用不可となります。
・アカウントの新規作成
・トピック投稿、返信
たくさんのご利用誠にありがとうございました。

新Live2D公式クリエイターズフォーラムは以下バナーよりご利用いただけます。
Live2D公式クリエイターズフォーラム

なお、本コミュニティに投稿されたトピックはすべて残りますが、今後削除する可能性がございますので予めご了承ください。
閉鎖に関するお問い合わせにつきましてはLive2D公式クリエイターズフォーラムへご連絡ください。

テクスチャステージステートの設定について

DirectXにて、3D空間に以下のオブジェクトを描画しています。
・2Dのテクスチャ
・3Dモデル
・3Dポリゴン
・Live2D(2D描画、ソースコードはウェブのマニュアルを参照)

ここで、2Dモデルにテクスチャを貼ってアルファ値を入れて透過処理をしていました。
ですが、Live2Dモデルを一緒に描画するとアルファ値が1フレーム目だけ適用され、2フレーム目以降は適用されません。
レンダラーステート、テクスチャステージステートの設定は(Live2DのDrawを処理しないと適用されるので)間違ってないです。
Live2D内で描画関係の設定を変更されたままになっているのでしょうか?

コメント

  • kiki_merissa 様

    上記、お問合せに関してですが、DirectXのSDKは、Live2Dの描画により内部で状態の変更を行います。
    現状、Live2Dの描画後には状態を戻す処理をしておりませんので
    アプリ側でLive2Dの描画前に事前に状態を保持しておきLive2D描画後に復元するか、
    アプリ側の描画前に明示的に必要な状態になるよう設定をしていただく必要があります。

    SDK内部で変更している具体的なステートは下記になります。
    ・SetSamplerState()
       Stage 0~1
       D3DSAMP_MINFILTER
       D3DSAMP_MAGFILTER
       D3DSAMP_MIPFILTER
       D3DSAMP_MAXANISOTROPY
    ・SetTexture
       Stage 0~1
    ・SetRenderState()
       D3DRS_SEPARATEALPHABLENDENABLE
       D3DRS_SRCBLENDALPHA
       D3DRS_DESTBLENDALPHA
       D3DRS_SRCBLEND
       D3DRS_DESTBLEND
       D3DRS_CULLMODE
  • satok様
    ありがとうございます
    早速試してみます!
コメントするにはサインインまたは登録して下さい。