Re: 半透明なモデルの中の不透明モデルの表示 ( No.1 ) |
- 名前:管理人 日時:2014/12/14 22:47
ビューアーでは正常に表示されたのでしたら、ライブラリを使用したプログラムでも
意図通りに表示されないと変ですね・・・
もし不都合が無ければ件の現象が発生するモデルか、若しくは同様の現象が発生する
簡易的なモデルをメールでこちらに送っていただけないでしょうか? m(_ _)m
BQE00322(あっとまーく)nifty.com
( (あっとまーく)を@に置き換えてください )
手元で確認してみれば原因が分かると思いますので・・・
因みに本件は「不透明の物より透明の物の方が先に描画されている」ことが原因だと思います
( Zバッファという機能の仕組みの関係で、半透明のものを先に描画してしまうと、それ以降
半透明のものより奥にあるものが描画されなくなってしまうのです )
ただ、MV1DrawModel はモデル中の不透明のものを先に描画して、その後に半透明のものを描画するので、
本来なら特別な対処をしなくても半透明のものの中にある不透明なものが問題なく描画されるはずなのですが・・・謎です・・・
|
Re: 半透明なモデルの中の不透明モデルの表示 ( No.2 ) |
- 名前:びみょう 日時:2014/12/14 23:02
モデルを添付してメールさせていただいきました。
よろしくお願いします。
|
Re: 半透明なモデルの中の不透明モデルの表示 ( No.3 ) |
- 名前:管理人 日時:2014/12/16 00:57
メールありがとうございます、モデルを拝見しました
手元でそのまま描画した限りではビューアーと同じく中の球も描画されましたが、
MV1SetOpacityRate で半透明の設定にして描画したところ、中の球が描画されなくなりました
これはいただいたモデルを構成するメッシュのデータの順番が
0.半透明の外側のキューブ
1.不透明の内側の球
となっていて、初期状態では不透明の「内側の球」が先に描画されるのに対して、
MV1SetOpacityRate や MV1SetMaterialDrawBlendMode などで「内側の球」の部分も半透明になってしまうと、
描画される順番がメッシュの順番と同じになり「外側のキューブ」が先に描画されてしまい、
後からキューブの奥にある「内側の球」を描画しようとしても前述のZバッファの仕組みの関係で
描画されない、という状態になっているためです
なので、とりあえず初期状態で不透明のものが後から設定の変更によって半透明になった場合は描画の順番を
1.現在も不透明のものを最初に描画
2.初期状態では不透明で、現在は半透明のものを描画
3.最後に初期状態でも半透明で、現在も半透明のものを描画
とすることで、読み込み後に MV1SetOpacityRate などで半透明の設定を変更しても
送っていただいたモデルの「内側の球」が描画されるようになりました
よろしければその変更を加えたこちらのバージョンをお試しになってみてください m(_ _)m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用
http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』を、VCをお使いの場合は『リビルド』を、
Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
|
Re: 半透明なモデルの中の不透明モデルの表示 ( No.4 ) |
- 名前:びみょう(解決済) 日時:2014/12/16 13:36
管理人様、対応ありがとうございます。
試してみたところ、きちんと描画されました。
それに加え、x形式のモデルを読み込んだ時ビューアでは(中のモデルが表示されないのではなく、モデル自体が)透明に表示されていたのに対し、同様に作ったプログラムでは表示されていなかった件も同時に解決しました。
素早い対応、ありがとうございました!
|