キャラの髪の毛を半透明にしたい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
cattail
記事: 75
登録日時: 11年前

キャラの髪の毛を半透明にしたい

#1

投稿記事 by cattail » 10年前

DirectX10でキャラを表示し、
テクスチャーのアルファチャンネルを使って
髪の毛を半透明にしようとがんばっているのですが、
透明にしようとしている部分が白くなってしまいます。
いろいろやってもダメだったので、
同じように1枚の正方形ポリゴンで木の葉を作って葉の形のテクスチャーにすると透明になりました。
そこで、髪の毛の部分が白く塗られているのではなくて透明になっいて背景色が見えているのではと思い、
背景色を青に変えたら透明にする部分が青くなりました。
たぶんですが、透明になってはいるけど、キャラやキャラの後ろの背景のポリゴンが透過してしてしまっているように感じます。
木の葉の方は透明になった部分にキャラや背景のポリゴンが見えています。
なぜこのようなことが起こるのか教えて頂けないでしょうか?

初期化部分は以下の通りです。

コード:

 
//アルファブレンディングを設定する
pDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );// アルファ・ブレンディングを行う
pDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );// 半透明処理を行う
pDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );// 透過処理を行う

//アルファブレンディング テクスチャの設定
pDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
pDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);   
pDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE); 
pDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
pDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
pDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
よろしくお願いします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: キャラの髪の毛を半透明にしたい

#2

投稿記事 by softya(ソフト屋) » 10年前

Zバッファの関係じゃないでしょうか。

「その17 Zバッファとアルファブレンドの嫌な関係」
http://marupeke296.com/DXG_No17_ZBuffer ... nding.html

「ポリゴン 半透明 Zソート」あたりで検索してもらうと色々情報が探せると思います。
木の葉がうまく行ったのはレンダリング順序の偶然だと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

cattail
記事: 75
登録日時: 11年前

Re: キャラの髪の毛を半透明にしたい

#3

投稿記事 by cattail » 10年前

ご返事ありがとうございます。
リンク先のページを拝見させて頂きました。
確かに「Zバッファの関係」のような気がします。
大変そうなのですぐには結果を出せないかもしれませんが、
今はキャラを最初にレンダリングしていますので、
背景ポリゴンを先にレンダリングさせてみます。
少しでも改善されましたら報告します。
ありがとうございます。

cattail
記事: 75
登録日時: 11年前

Re: キャラの髪の毛を半透明にしたい

#4

投稿記事 by cattail » 10年前

とりあえず透明になりました!
背景ポリゴンとキャラポリゴンのレンダリングの順番を変えただけで
髪の毛の透明は確認できました!
モノの前後関係やキャラの前髪を透明にしたら顔が見えるかとかはやっていませんが、
色々試してみます。
良かったです。何とか抜け出せそうです!

cattail
記事: 75
登録日時: 11年前

Re: キャラの髪の毛を半透明にしたい

#5

投稿記事 by cattail » 10年前

慌ててお礼を忘れてしまいました。
助かりました、ありがとうございます!

cattail
記事: 75
登録日時: 11年前

Re: キャラの髪の毛を半透明にしたい

#6

投稿記事 by cattail » 10年前

前髪も透明にできて顔が見えるようになりました!
あとはモノの前後関係ですがこれは作っていくうちに少しづつやっていきます。
これで解決とさせて頂きます。
本当にありがとうございました!

閉鎖

“C言語何でも質問掲示板” へ戻る