トップページ > 過去ログ > 記事閲覧
3Dポリゴンが表示されない
名前:チルチル 日時: 2009/06/05 21:10

DrawPolygon3D関数を使って 3Dポリゴンを描画したいのですが、 消失点が中心にある場合と SetUseZBufferFlagを有効にした場合に 3Dポリゴンが表示されなくなってしまいます・・ 画像がロードできていないとか 他の画像に隠れていると言う事はありません 消失点を動かしZバッファを無効にすれば 正常に?描画されます

Page: 1 | 2 |

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

正常に描画できました! 横から突っ込んできた感じになってしまったのに、 ここまでして頂いてありがとうございます! そして結局チルチルさんの問題の解決には協力できなくて申し訳ないです……

Page: 1 | 2 |