2017-10-03 9 views
0

Iは三角形アップ構成う頂点コーディネーションと形質転換されていない構造体を有する:「カメラ」のZ位置を変更するとプリミティブが表示されないのはなぜですか?

struct utVertex ut_Vertex[] = 
{ 
    { 2.5f, -3.0f, 0.0f, D3DCOLOR_XRGB(0, 0, 255), }, //a 
    { 0.0f, 3.0f, 0.0f, D3DCOLOR_XRGB(0, 255, 0), }, //b 
    { -2.5f, -3.0f, 0.0f, D3DCOLOR_XRGB(255, 0, 0), },//c 
}; 

enter image description here

べき(わからない、z軸を反転することができるので、+多分上記画像どこにいてもいいですか):

D3DXMatrixLookAtLH(&matView, 
     &D3DXVECTOR3(0.0f, 0.0f, 10.0f), 
     &D3DXVECTOR3(0.0f, 0.0f, 0.0f), 
     &D3DXVECTOR3(0.0f, 1.0f, 0.0f)); 
    d3dDevice->SetTransform(D3DTS_VIEW, &matView); 

上の画像の青い点は、このコードに基づくカメラの位置にする必要があります。 (私が間違っていると教えてください)。

これは、画面上に三角形を正しく描きます。

enter image description here

私は(と思う)の代わりに10.0f-10.0fにカメラの位置を変更した場合、カメラがあるべき場所さて、これは次のとおりです。

enter image description here

しかし、それ必要がありますまだ0.0f, 0.0f, 0.0fを見ている。 「カメラ」のZ位置を変更するとプリミティブ(三角形)が表示されないのはなぜですか?

何も示しています enter image description here

+0

2Dビュー変換を考慮して3Dをレンダリングしようとすると、2Dの "World2Screen"表現をするために正規直交ベースを計算する必要があると思います。 –

+0

私は投影変換を行っています –

+0

あなたは変換方法にいると思いますが、アニメーションを作成するには投影と変換が必要です。 –

答えて

1

使用しているポリゴンは片面ですので、後ろから見たとき、彼らは表示されません。カメラを逆転させたときに三角形を表示させるには、同じポイントのポリゴンを追加する必要がありますが、(a、b、c)の代わりに - (a、c、b) ut_Vertex配列のこれらの2つのポイントを交換してください。

+0

またはバックカリングのカリングを無効にすることができます – Asesh

+0

*背後から見たとき*なぜ*表示されないのか説明できますか? –

+0

Oh nvm。 '三角プリミティブは、その頂点が時計回りの順序で与えられている場合にのみ描画されます。それを反転すると反時計回りになるので、表示されません。 –

関連する問題