トップページ > 過去ログ > 記事閲覧
頂点シェーダーで得られるディフューズカラーのα値について
名前:みょも 日時: 2012/11/25 22:49

お世話になっております、みょもです。 『サンプルプログラム 3Dアクション基本+深度値を利用した影表現基本』 ttp://homepage2.nifty.com/natupaji/DxLib/program/dxprogram_3DAction_DepthShadow.html を使用すると、テクスチャなし・ディフューズカラーのアルファが半透過設定のマテリアルが透過してくれない現象に悩んでいます。 最初にこちらのモデルをダウンロード、表示しました。 ttp://nebusokummd.blog.shinobi.jp/Entry/13/ テクスチャの使われていない、大きな立方体です。 外面には以下のマテリアルが設定されているようです。(PMDediterで確認) 拡散色 R:0.73 G:0.8 B:0.78 A:0.2 反射色 RGB:0 強度:5 環境色 R:0.55 G:0.6 B:0.59 立方体内部に適当な別モデルを配置、別モデル→立方体の描画順で 立方体の外から撮すと DXライブラリの標準シェーダーでは立方体の外面をガラスのように(半)透過して 立方体中に配置されたモデルが描画されました。 これが想定どおりの描画です。 次に、サンプルプログラムのシャドウマップシェーダーをそのまま適用しました。 立方体内部が影で真っ暗になるのは多分シャドウマップの仕様だと思うので置いておいて・・・ 立方体の外から内部を撮しても、外面がアルファ透過せず内部が覗けません。 調べていったところ、ステップ2の頂点シェーダーの一文に行き着きました。 // ディフューズアルファはマテリアルのディフューズカラーのアルファをそのまま使う VSOutput.Diffuse.w = cfMaterial.Diffuse.w ; 試しに固定値0.5fを与えてみると、立方体全体が半透過して内部配置した別モデルも表示されるので、 cfMaterial.Diffuse(c11 マテリアルディフューズカラー)からアルファ値 1.0fを得てしまっているように思います。 この場合、正しくは0.2fを得るはずだと思うのですが、そもそも何か大きな勘違いしているのでしょうか? それともう一つ、この掲示板のスレッドで(解決済み)とよくあるのですが、 あれは名前設定を変えて書き込めばいいのでしょうか?(^^;

Page: 1 |

Re: 頂点シェーダーで得られるディフューズカラーのα値について ( No.1 )
名前:管理人 日時:2012/11/26 00:43

みょもさんがされた処理の再現手順を教えて頂けないでしょうか? 1.張って頂いたリンクのサイトにはPMDファイル形式では配布されていないようですが、   みょもさんはmqoファイルとxファイルのどちらを使用されたのでしょうか? 2.配布されているファイルをサンプルプログラムでそのまま表示すると基準とする単位が   違う為に画面にはものすごく小さく立方体のモデルが表示されると思うのですが、   こちらは MV1SetScale などで拡大して表示されたということでしょうか? > この場合、正しくは0.2fを得るはずだと思うのですが、そもそも何か大きな勘違いしているのでしょうか? いえ、そう考えて頂いて間違いないはずです > それともう一つ、この掲示板のスレッドで(解決済み)とよくあるのですが、 > あれは名前設定を変えて書き込めばいいのでしょうか?(^^; はい、皆さんその方法で(解決済み)の表記をされているようです もとからこの掲示板にあった慣習ではないので、専用の機能はありません (^ ^; ( 多分「C言語何でも質問掲示板」が源流だと思います )
Re: 頂点シェーダーで得られるディフューズカラーのα値について ( No.2 )
名前:みょも 日時:2012/11/26 04:17

>1.張って頂いたリンクのサイトにはPMDファイル形式では配布されていないようですが、 >  みょもさんはmqoファイルとxファイルのどちらを使用されたのでしょうか? xファイルを使用していました。 さきほどmqoを試してみたところ、こちらはちゃんと透過しました。 うむむ・・・? DxLibModelViwerでMV1形式にしてもみましたが、変換後も元の形式と同じ状態ですね。 ただ、mqoを読み込むと(DxLibModelViwerでも)妙に白っぽいので、 データが違うのかとメタセコでmqo形式をx形式で保存しなおしてみたのですが、やはり状況はかわらず。 (ファイルのハッシュもダウンロードしたxファイルと一致しました) メタセコでx形式出力時に差違がでているのか、DXライブラリの処理で差が出ているのかちょっとわからないですが・・・ >2.配布されているファイルをサンプルプログラムでそのまま表示すると基準とする単位が >  違う為に画面にはものすごく小さく立方体のモデルが表示されると思うのですが、 >  こちらは MV1SetScale などで拡大して表示されたということでしょうか? 別にMMDモデルを使う関係で、MV1SetScaleで10倍に拡大していました。 再確認してみましたが、スケール変更なしでも同じ現象が発生するようです。 MV1LoadModel と MV1DrawModel 以外使わなくても同様でした。 >もとからこの掲示板にあった慣習ではないので、専用の機能はありません (^ ^; なるほど。では皆さんに習っておくことにします。 既に解決していたスレッドが浮上して申し訳ないですが(__;
Re: 頂点シェーダーで得られるディフューズカラーのα値について ( No.3 )
名前:管理人 日時:2012/11/28 00:33

ご返答ありがとうございます mqoファイルとxファイルで含まれているマテリアル情報の形態が若干違うので、 それが描画結果の差となっているのだと思います できれば平日中に調べたいですが、恐らく今回も週末になってしまいそうです 申し訳ありませんが、少々お待ちください m(_ _;m
Re: 頂点シェーダーで得られるディフューズカラーのα値について ( No.4 )
名前:みょも 日時:2012/11/28 22:33

手数おかけしますが、よろしくお願いします(__)
Re: 頂点シェーダーで得られるディフューズカラーのα値について ( No.5 )
名前:みょも 日時:2012/11/29 05:08

xファイルはアンビエントが規定されてなかったんですね。 なるほどmqoより暗く見えるのも道理でした。 xファイルのアンビエントはディフューズを元に適当に捏造してやることにします。
Re: 頂点シェーダーで得られるディフューズカラーのα値について ( No.6 )
名前:管理人 日時:2012/12/02 04:51

調べてみました すみません、xファイルでは透明度を Diffuse のアルファではなく描画ブレンドモードの パラメータとして読み込んでいました DXライブラリではピクセルシェーダーのfloat型定数 c5 の a に割り当てられていて、 0.0f( 完全透明 ) 〜 1.0f( 完全不透明 )の値が割り当てられています サンプルページのピクセルシェーダーコードも全部この c5.a 定数を考慮したものに変更しましたので、 よろしければご覧ください m(_ _;m http://homepage2.nifty.com/natupaji/DxLib/program/dxprogram_3DModelShaderBase.html
Re: 頂点シェーダーで得られるディフューズカラーのα値について ( No.7 )
名前:みょも(解決済み) 日時:2012/12/02 11:23

早速試してみたところ、しっかりと透過してくれました。 ありがとうございました。 サンプルページも何度も参照するので助かります(^^;

Page: 1 |