Re: 3Dポリゴンが表示されない ( No.14 ) |
- 名前:チルチル 日時:2009/06/14 18:49
>>メールは無事届きました
「送信できませんでした」みたいなメッセージが表示されたので心配でしたが届いたようなので安心しました
>>宜しければお試しになってみてください
すごいです、今までの問題が全部解決しました!!
本当にありがとうございます
>>今回の修正でこちらも改善されたかもしれません
亀裂が入る問題も見た感じ解決したようです
>>Zバッファも使うと表示されなくなります
こっちの方はうまく行きませんでした・・
SetUseZBufferFlag(TRUE);
SetWriteZBufferFlag(TRUE);
DrawPolygon3D
SetUseZBufferFlag(FALSE);
SetWriteZBufferFlag(FALSE);
のようにしたのですが・・
>>こちらで実行したところ・・
ところで送ったプロジェクトですが
ゲームとしてはどうだったでしょうか・・
|
Re: 3Dポリゴンが表示されない ( No.15 ) |
- 名前:チルチル 日時:2009/06/19 23:53
とりあえずZソートで代用しましたが
やはりZバッファも使えた方が良いですよね・・
上の書き方では間違っているのでしょうか?
ちなみにZバッファって更新するだけで初期化とかはしないんでしょうか?
|
Re: 3Dポリゴンが表示されない ( No.16 ) |
- 名前:管理人 日時:2009/06/20 01:07
すいません、ご返信したつもりになっていました orz
> こっちの方はうまく行きませんでした・・
具体的にはどのようにうまくいかなかったのでしょうか?
No.13 で申し上げましたとおり現状の描画順序のままZバッファを有効にしても
正常な見た目にはなりませんので、半透明のものを不透明の物の後に描画するように
処理を変更する必要があります
> ゲームとしてはどうだったでしょうか・・
「遊び」の部分はまだ作り始めという感じでしたので判断はできません・・・
> ちなみにZバッファって更新するだけで初期化とかはしないんでしょうか?
はい、内部で初期化されていますので、特に初期化関数のようなものを呼ぶ必要はないようになっています
|
Re: 3Dポリゴンが表示されない ( No.17 ) |
- 名前:チルチル 日時:2009/06/21 19:14
SetUseZBufferFlag(TRUE);
SetWriteZBufferFlag(TRUE);
for(i=1;i<=48;i++)DrawPolygon3D( Vertex[i] , 2 , StageGraph[2] , TRUE );
SetUseZBufferFlag(FALSE);
SetWriteZBufferFlag(FALSE);
このように書くと何も表示されないです・・
画像は不透明なものです
|
Re: 3Dポリゴンが表示されない ( No.18 ) |
- 名前:管理人 日時:2009/06/24 12:39
うーん、そうですか・・・
そういえば、現在のバージョンでも DrawPolygon3D のサンプルでZバッファを
有効にしただけでも表示がされなくなるのでしょうか?
もしそうだとしますと・・・謎は深まるばかりです
DXライブラリ固有の不具合なのかどうかを確かめてみたいと思いますので、
宜しければこちらの DirectX7 の Direct3D のサンプルプログラムの描画が
正常に行われるかどうかお試し頂けないでしょうか?m(_ _)m
http://homepage2.nifty.com/natupaji/temp/Direct3DSample.zip
|
Re: 3Dポリゴンが表示されない ( No.19 ) |
- 名前:チルチル 日時:2009/06/27 01:01
サンプルは正常に描画されているようです
しかしサンプルのクオリティがすごいですね・・
私もいつかはこのレベルのものが作ってみたいです
|
Re: 3Dポリゴンが表示されない ( No.20 ) |
- 名前:管理人 日時:2009/06/27 23:23
DirectXのサンプルは正常に描画されましたか・・・
うーん、では、サンプルとDXライブラリの実装での差異点をチェックしていきたいと思います
ちょっと長くなるかもしれませんが、宜しければお付き合い下さい m(_ _)m
とりあえず実験的なサンプル用実行ファイルを3つ用意しました
こちらの圧縮ファイルの中には Test0.exe, Test1.exe, Test2.exe の3つファイルがあります
動作は基本的に前回お試し頂いた bend.exe とウネウネしている物体の色以外は同じで、
Test1.exe だけ背景の色が青色にしています( 他は黒 )
http://homepage2.nifty.com/natupaji/temp/DrawPolygon3DTest.zip
こちらの3つの実行ファイルが、それぞれ正常に描画されているかお試し頂けないでしょうか?
|
Re: 3Dポリゴンが表示されない ( No.21 ) |
- 名前:チルチル 日時:2009/06/30 00:12
手間をかけてしまってすいません・・
実行ファイルは全部正常に表示されました
Test2.exeだけ×で消すと動作を停止しましたが・・
|
Re: 3Dポリゴンが表示されない ( No.22 ) |
- 名前:管理人 日時:2009/07/01 20:38
正常に表示されましたか・・・ちょっと意外な結果です・・・
となるとZバッファの精度が原因かもしれません
というわけでZバッファの精度をテストするプログラムをアップしましたので
よろしければダウンロードしてみてください
http://homepage2.nifty.com/natupaji/temp/DrawPolygon3DTest2.zip
こちらのファイルの中にある DrawPolygon3DTest2.exe を実行すると、
前回お試しいただいたのと同じ物体が画面中心に表示されます
ここで
方向キーの左右で Far Clip の値が
方向キーの上下で物体の奥行き方向の位置が変更できます
Far Clip とは、ご存知かもしれませんが、奥行き方向の「どこまで描画するか」の値です、
値が大きければ大きいほど遠くまで描画されますが、その分Zバッファの精度は悪くなります
ここで、精度を調べるために、とりあえず左キーを押して Far Clip の値を 66500 にしてください
その上で、上キーを押して物体を画面奥方向に移動して、Far Clip で消えるところまで移動して下さい
そして、消えるか消えないかのギリギリのところを見つけたら、画面上部に表示されている
"Pos"の右側3番目のZ値がどのくらいになっているか確認してみてください
精度的に問題がないと思われる私の環境では、この値が 20615.000 という値でした
もし精度が低い場合は、もっと小さい値の時点で画面から物体が消えてしまうと思います
|
Re: 3Dポリゴンが表示されない ( No.23 ) |
- 名前:チルチル 日時:2009/07/02 00:52
実行してみると予想外の制度の悪さに驚きました・・
奥行きがデフォルトだとFar Clipが1600.000
Far Clipがデフォルトだと奥行きが23.000で
画面から消えました・・
|
Re: 3Dポリゴンが表示されない ( No.24 ) |
- 名前:稲塚 日時:2009/07/03 18:10
始めまして。
同じ問題にぶつかり解決策を探っていたところここに辿りついたので、
解決の参考になればと思い、自分の状況を報告いたします。
私の場合、SetUseZBufferFlagをTRUEにした所、
ポリゴンが描画されなくなりました。
(上記の通り必要箇所以外はFALSEにしてあります)
過去に別のPCでVer2.24で製作したZバッファを使ったプログラムを引っ張り出してくると、
それも正常に描画されませんでした。
過去のPCで正常だったものが現在のPCで描画されないとなると、環境依存の問題かもしれません。
チップセットは、正常に動いたPCはSISのオンボード、正常に動かないPCはRadeonHD3450でした。
上記のうねうねする物体のサンプルではtest0.exeのみ画面が真っ黒の状態で描画されませんでした。
|
Re: 3Dポリゴンが表示されない ( No.25 ) |
- 名前:チルチル 日時:2009/07/03 23:40
そういえばZバッファの精度って何で決まるんでしょうか?
PCの性能で決まるとしたら
自分のPCでは描画されても他のPCでは描画されないといった問題が出てくるのでしょうか?
そうだとすると危なくて使えないですね・・
|
Re: 3Dポリゴンが表示されない ( No.26 ) |
- 名前:管理人 日時:2009/07/04 13:58
Zバッファの精度はZバッファのビット深度が同じであればどの環境でも同じ精度になりそうですが、
どうもそういうわけではないみたいですね・・・
> 自分のPCでは描画されても他のPCでは描画されないといった問題が出てくるのでしょうか?
はい、仰るとおりです
ただ、DXライブラリはできるだけ多くのPCで利用できると思われる機能を使っていますが、
「自分以外のPCでは正常に表示されないかもしれない」というのはZバッファに限ったことではありません
私の環境では奥行きがデフォルトの場合、Far Clipは・・・とりあえず 196400.0 にしても消えませんでした
Far Clip がデフォルトの場合は奥行きが 97.0 で物体が消えました
まだ確定したわけではありませんが、チルチルさんの環境でZバッファをONにすると何も
描画されない原因はZバッファの精度にあることはほぼ間違いなさそうですね
こちらは Near Clip ( 手前はどこまで描画するか ) の値を変更することである程度対処できますので、
先日お試し頂いたサンプルの Near Clip の値を変更できるようにしたバージョンを作ってみました
http://homepage2.nifty.com/natupaji/temp/DrawPolygon3DTest3.zip
左シフトキーを押しながら左右キーを押すことで Near Clip の値を変更することができます
Near Clip の値を上げれば上げるほど手前の部分が描画されなくなりますが、その分画面奥方向の
Zバッファの精度が上がりますので、Near Clip を調整することによってもっと奥まで描画されるようになると思います
という理屈通りになれば、Near Clip の値を上げれば 奥行きがデフォルトの状態で Far Clip を 1600.0
以上にしても物体が消えることはなくなる筈ですので、よろしければ試してみてください m(_ _)m
あと、今後の参考のためにお使いのグラフィックスデバイスの名称を教えていただけないでしょうか?
グラフィックデバイスの名称は WindowsXP でしたら画面のプロパティのデスクトップ画面の解像度を
変更するタブで確認することができます
> 稲塚さん
ご報告ありがとうございます
Test0.exe と Test1.exe はどちらも DirectX7 を使用していますが、画面クリアの仕方が違います
Test0.exe が現在のDXライブラリの画面クリアの仕方なのですが、こちらでは少なくとも RadeonHD3450 では
正常にZバッファがクリアできないみたいですね・・・
画面クリアの仕方を Test1.exe にしたライブラリをアップしてみましたので、よろしければ
試してみてください m(_ _)m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
|
Re: 3Dポリゴンが表示されない ( No.27 ) |
- 名前:稲塚 日時:2009/07/05 03:41
Zバッファの制度をチェックするサンプルを色々弄った所、
言葉で説明しにくい状態になったのでスクショを取ってみました
ttp://www.dotup.org/uploda/www.dotup.org201980.jpg
特定の位置で↑のようになります。
それ以外では画面は真っ黒なままです。
あと、ライブラリをアップして頂いたものに差し替えてもポリゴンは描画できませんでした。
画面をクリアする関数を入れなくても描画されないので、多分別の原因かと……
やっぱり相性問題なんですかね?
|
Re: 3Dポリゴンが表示されない ( No.28 ) |
- 名前:管理人 日時:2009/07/05 14:03
あ、No.26でアップした DrawPolygon3DTest3.zip はまだ DirectX7 の今までとは違う画面クリアの方式に
変更する前にコンパイルしたものですので、稲塚さんの環境では正常な表示がされないと思います
画面クリア方式を変更した上で DrawPolygon3DTest3.zip と同じ動作をする実行ファイルをアップしましたので、
宜しければこちらでも同じような表示結果になってしまうかお試しになってみてください m(_ _)m
http://homepage2.nifty.com/natupaji/temp/DrawPolygon3DNearFarTest.zip
そして、ライブラリを変更してもポリゴンが描画されなかったということで・・・
RadeonHD3450 でもチルチルさんの環境と同じZバッファの精度の問題が発生しているのかもしれません
宜しければ No.22 の私の書き込みにあるテスト( 物体が Far Clip 幾つの時に奥行き方向にどのくらい
移動すると消えるか )を稲塚さんもお試しになってみていただけないでしょうか?
> やっぱり相性問題なんですかね?
今の時点では相性の問題なのかDXライブラリのプログラムの問題なのかはわかりません・・・
|
Re: 3Dポリゴンが表示されない ( No.29 ) |
- 名前:稲塚 日時:2009/07/05 16:26
↑のテストを試してみました。
Far Clipが66500の時には66500を超えるまでは消えませんでした。
それ以上に設定した場合でも、その値を超えない限りはちゃんと描画されていました。
環境自体は、他のゲームを遊ぶ時などでも表示がおかしくなることはないので、
チルチルさんの問題とは別の原因かも知れませんね……
こちらの問題が別の問題のようでしたら、
こちらの方はまだ製作に入っていない段階なので、後回しでも構いません。
どのライブラリを使うか選んでいた時に気づいただけなので……
出来れば慣れ親しんだDXライブラリで製作したい気持ちはありますが……
|
Re: 3Dポリゴンが表示されない ( No.30 ) |
- 名前:管理人 日時:2009/07/05 18:16
今回のテストは正常な結果が出たということでしょうか?
もしそうだとしますと、Far Clip と Near Clip の値によっては期待する描画結果が得られる
ということですので、CreatePerspectiveFovMatrix 関数と SetTransformToProjection 関数を
使用して、稲塚さんがお作りのプログラムに合った Near 値、Far 値を設定すれば
今回の現象を回避できるかもしれません
というわけで、もしよろしければ下記二つの関数を稲塚さんのプログラムで使用してみて頂けないでしょうか?
// 射影行列を作成する
// Out : 結果を格納する行列のアドレス
// fov : 視野角、デフォルト値は DEFAULT_FOV
// zn : Near Clip の値
// zf : Far Clip の値
int CreatePerspectiveFovMatrix( MATRIX *Out, float fov, float zn, float zf ) ;
// 投影変換用行列をセットする
// Matrix : セットする射影変換用行列のアドレス
int SetTransformToProjection( MATRIX *Matrix ) ;
例:Nearクリップ面を 200.0f、 Farクリップ面を 65535.0f にする
MATRIX ProjMatrix ;
CreatePerspectiveFovMatrix( &ProjMatrix, DEFAULT_FOV, 200.0f, 65535.0f ) ;
SetTransformToProjection( &ProjMatrix ) ;
あと、もしかしたら私の手違いでクリアの方式を変更する前のライブラリをアップしてしまったかも
しれませんので、もう一度コンパイルしたものをアップしました
もし CreatePerspectiveFovMatrix , SetTransformToProjection を使用しても期待する結果が
得られなかった際はこちらをお使いになってみてください
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
|
Re: 3Dポリゴンが表示されない ( No.31 ) |
- 名前:稲塚 日時:2009/07/05 19:03
上記の方法を、値を色々変えてみてためしましたが、うまく描画されませんでした。
その後で、アップしていただいたライブラリのBCC用に差し替えようとしたのですが、再構築時に
「外部シンボル 'DxLib::BeginScene()' が未解決」
というエラーが出てしまいました。
|
Re: 3Dポリゴンが表示されない ( No.32 ) |
- 名前:管理人 日時:2009/07/05 22:11
申し訳ありません、新しい画面クリア方式用のコードでBCC版のみコンパイルが通らないように
なってしまっていました
修正したものを再度アップしましたので、お手数ですがよろしければお試し下さい m(_ _)m
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用
|
Re: 3Dポリゴンが表示されない ( No.33 ) |
- 名前:稲塚 日時:2009/07/05 23:19
正常に描画できました!
横から突っ込んできた感じになってしまったのに、
ここまでして頂いてありがとうございます!
そして結局チルチルさんの問題の解決には協力できなくて申し訳ないです……
|