3Dで、奥にあるはずのモノが手前に描画される
Posted: 2012年7月16日(月) 01:52
こんばんわ。
3D空間での描画処理において、視点に近いオブジェクトは、遠くのオブジェクトよりも優先されて描画されるものと思いますが、
先ほど作ったプログラムでは、どういうわけかそれが逆転して、遠くのオブジェクトが優先して(画面手前側に)表示されます。
(大きい画像の上に、小さい画像が次々と乗っかっているような状態で表示されます。)
コードが煩雑になってしまったので一部掲載となりますが、大まかには以下のような処理を行なっています。
画面正面を向いた画像が、depthの回数だけZ軸奥方向に次々と表示されていくようなものです。
奥の画像が画面手前に表示されてしまう原因がイマイチわかりません。
下例のように、画面奥から画像を表示させるようとしても改善されませんでした。
分かる方いらっしゃいましたら、よろしくお願いします。
3D空間での描画処理において、視点に近いオブジェクトは、遠くのオブジェクトよりも優先されて描画されるものと思いますが、
先ほど作ったプログラムでは、どういうわけかそれが逆転して、遠くのオブジェクトが優先して(画面手前側に)表示されます。
(大きい画像の上に、小さい画像が次々と乗っかっているような状態で表示されます。)
コードが煩雑になってしまったので一部掲載となりますが、大まかには以下のような処理を行なっています。
画面正面を向いた画像が、depthの回数だけZ軸奥方向に次々と表示されていくようなものです。
void Test(){
//カメラポジション
SetCameraPositionAndAngle(VGet(0,0,0), 0,0,0) ;
//描画(テクスチャの枚数分ループ)
for(int depth = 0; depth < 5; depth++){
//テクスチャの位置と向きの計算
CalcObject(depth);
//テクスチャ1枚分を描画
DrawPolygon3D( Object[0].Vertex, 2, Object[0].Img, TRUE );
}
}
void CalcObject(int depth){
for(int i=0;i<6;i++){
Object[0].Vertex[i].pos.x = Object[0].x + Object[0].LargeX * VtPm[i].x ;
Object[0].Vertex[i].pos.y = Object[0].y + Object[0].LargeY * VtPm[i].y ;
Object[0].Vertex[i].pos.z = Object[0].z ;
}
//テクスチャの中心座標設定
Object[0].x = 0;
Object[0].y = 0;
Object[0].z = 600 + 800 * depth;
}
下例のように、画面奥から画像を表示させるようとしても改善されませんでした。
分かる方いらっしゃいましたら、よろしくお願いします。