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