2016-05-31 13 views
1

私はロードしたモデル(Blenderの猿の顔)をモデル空間からワールド空間へvboに移すためにモデル行列だけを使用しています。しかし、モデルは信じられないほどゆがんでいます(無限に伸ばす)、なぜこれが起こっているのか困惑しています。OpenGL - Matrix Logic Error

This videoは、問題をはっきりと表示しようとする試みとして、y軸の周りを常に回転するモデルを示しています。私はロードされたOBJモデルが有効であることを確信しています。溶岩テクスチャがモデルに結合されて見やすくなりました。

ビデオには、私が頂点シェーダーに送信している現在のマトリックスを表示したコンソールも表示されます。

{1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 0, 0, 0, 1} 

を私と信じている:

|1 0 0 0 | 
|0 1 0 0 | 
|0 0 1 10| 
|0 0 0 1 | 

浮遊++ Cの次の配列として私の頂点シェーダに送られ、次の行列がのでメモリにおいて、マトリックスは、行優先順で表され私の数学では初心者の誤りです。モデルだけを見るだけで気付くことができる明らかなエラーはありますか?

「MVP」は、ビデオおよび位置で見られる結果の行列である
gl_Position = mvp * vec4(position, 1.0); 

が処理されているモデルの現在の頂点の位置を(含まれています。私の頂点シェーダ(GLSL)で、私は次のコード行を使用しますモデル空間で)。これらの歪みがなぜ発生しているのか分かりません。プログラムの別の面でエラーになる可能性があります(コードが十分ではないなど)。

+0

行方向行列を送信するときに 'traspose'フラグを使用しますか? – BeyelerStudios

+0

私の例では'10 'の値は4番目の列で、4番目の列ではないので、モデルが見えなくなりました。これは正しく覚えていればOpenGLの命令に反しています。 – Harrand

+0

いいえ、あなたのデータがクリップ空間の単位立方体内になく、クリップされていることを意味します – BeyelerStudios

答えて

1

結果の行列の必要な転置。以前は、位置がデフォルトのファークリップを超えたため、モデルがクリップされていたため、問題は解決されませんでした。