2017-09-01 3 views
0

を変換:(モデルが正しい位置にないGLMとにviewMatrixを設定することは容易であるmodelMatrix

glm::lookAt(Position, Direction, UpVector); 

が、私はmodelMatrixでfunktionを使用しようとすると、私は値をcomfusingますよ回転も間違っているように見えます)。 カメラを設定するのと同じ方法でオブジェクトを設定したいだけです。 lookAt funktionを使用して後で変更することはできますか?それとも私はそれのために独自の機能をプログラムしなければならないのですか?そしてもしそうなら、どうですか?

私はこれで位置固定:私はこれを使用vertexshaderの内側にも

m_Orientation = glm::lookAtLH(Position, Direction, UpVector); 
m_Orientation[3][0] = -m_Orientation[3][0]; 
m_Orientation[3][1] = -m_Orientation[3][1]; 
m_Orientation[3][2] = -m_Orientation[3][2]; 

を:

CameraMatrixはviewProjectionMatrix、ModelMatrix(私の問題)で、順位がの位置である
gl_Position = CameraMatrix * ModelMatrix * Pos; 

モデル空間内の頂点

+1

モデルをどのように操作しているかのコードを表示します。 – Robinson

+0

[glm - 行列変換関数](https://glm.g-truc.net/0.9.2/api/a00245.html) – Rabbid76

+0

@Robinson私は何を投稿すべきかわからない...それは必要モデル行列を簡単に設定することができます... – Thomas

答えて

1

レンダリングでは、シーンの各メッシュは、通常、モデル行列、ビュー行列、および投影行列によって変換されます。

  • 射影行列:
    射影行列は、ビューポートの2D点に、シーンの3D点からのマッピングを記述する。射影行列は、ビュー空間からクリップ空間に変換され、クリップ空間内の座標は、(-1、-1、-1)から(1,1,1)の範囲の正規化装置座標(NDC)クリップ座標のw成分で除算することによって得られます。

projection

  • ビュー行列:
    ビュー行列は、シーンが見たされた方向及び位置を記述する。ビュー行列は、wolrd空間からビュー(目)空間に変換されます。ビューポート上のコーディネートシステムでは、X軸はビューの左、Y軸上およびZ軸を指します(右手システムでは、Z軸はX軸のクロス積であることに注意してください)軸とY軸)。

view

  • モデル行列:
    モデル行列は位置、oriantationシーンにおけるメッシュの相対的な大きさを定義します。モデル行列は、メッシュの頂点位置をワールド空間に変換します。

model

モデル行列は次のようになります。

関連する問題