トップページ > 過去ログ > 記事閲覧
DrawPolygon3Dで遠くまで描画するには?
名前:Dixq 日時: 2009/07/31 23:38

DrawPolygon3D関数で描画する時、Zが300付近になると描画されなくなりますよね。 これをもっと遠くまで描画出来るようにしたいのですが、どうすればいいでしょうか? 「DrawPolygon3D」と「Far Clip」という言葉を過去ログで見つけたのですが解決には結びつきませんでした。 また、ヘッダファイルに VectorRotationX( VECTOR *Out, VECTOR *In, double Angle ) ; と書いてあったのですが、このOutとInの使い方も合わせて教えていただけると有り難く思います。 よろしくお願いしますm(_ _)m

Page: 1 |

Re: DrawPolygon3Dで遠くまで描画するには? ( No.1 )
名前:稲塚 日時:2009/08/01 03:49

※以前の管理人様の書き込みからコピペ // 射影行列を作成する // 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 ) ; ※ここまでコピペ ↑の方法で手前が200まで、奥に65535まで表示されるようになります ただ、Nearクリップ面の値にDEFAULT_NEAR(0.0F)を指定すると問題が起こるみたいです(私のPCで確認、原因不明) VectorRotationX( VECTOR *Out, VECTOR *In, double Angle ) ; などのOut、Inについては、上記の関数のようにアドレスを引数として渡します 例:VINの行列を約45度回転させた行列をVOUTに代入 VectorRotationX( &VOUT , &VIN , 0.25F * 3.14159265F) ; うーん説明がわかりにくい気がしますw
Re: DrawPolygon3Dで遠くまで描画するには? ( No.2 )
名前:Dixq 日時:2009/08/01 07:42

ご回答ありがとうございます。 まさに求めていた情報でした。 ただ、実行しても、奥行きがかわらない・・。 何故なのでしょう・・。 後、Nearクリップ面の値に負の値を入れると表示されなくなるのですが、 負の値は入れられないのでしょうか?
Re: DrawPolygon3Dで遠くまで描画するには? ( No.3 )
名前:wish 日時:2009/08/01 15:47

>Nearクリップ面の値に負の値を入れると表示されなくなるのですが 物理的に考えてカメラの後ろ方向にある物を、 カメラが撮ることはできませんから。。。 そうなるとおもいます。 うーん、説明するのは苦手なのですが、 DirectXの視野の設定を調べるとわかるかと。 ttp://www5d.biglobe.ne.jp/~ochikko/HSPde3DKakuge/nyuumon/frustum.htm この辺りを見るとイメージがつかみやすいかも。
Re: DrawPolygon3Dで遠くまで描画するには? ( No.4 )
名前:稲塚 日時:2009/08/01 21:21

>ただ、実行しても、奥行きがかわらない もしかして SetTransformToProjection(); の後、 SetDrawScreen(); を呼んでいませんか? SetDrawScreen(); を呼ぶと、セットした行列の状態がデフォルトの状態に戻ってしまうみたいです >後、Nearクリップ面の値に負の値を入れると表示されなくなる こっちの方は私もよく把握してないんですよね……
Re: DrawPolygon3Dで遠くまで描画するには? ( No.5 )
名前:Dixq 日時:2009/08/02 23:09

>wishさん ありがとうございます。 なるほど、そういうことでしたか・・。 >稲塚さん 単に私の計算式のミスでした; ご迷惑をおかけしました。 回答してくださったお二方ありがとうございました><

Page: 1 |