0

DirectX11に基づく3dsmaxへのレンダラープラグインを作成しています。

3ds maxから実際のビューポートマトリックスを取得しています。これは、外観を反転した後、次のようになります。[Rx Ry Rz] [Ux Uy Uz] [Dx Dy Dz] [Px Py Pz]

  • ここで、Rは右、Uは上、D id方向、Pは位置です。

このビューマトリックスをDirectXに適用しています(rastertekチュートリアルに基づいています:http ://www.rastertek.com/dx11tut04.html )が、自分でビューマトリックスを作成する代わりに、3dsmaxのこのビューマトリックスを使用しています。同じ構造:[Rx Ry Rz 0] [Ux Uy Uz 0] [Dx Dy Dz 0] [Px Py Pz 1]

max viewportのビューとDirectXウィンドウのレンダリングされたビューはほとんど同じに見えるため、最初はすべて問題ないように見えます。ただし、最大ビューポートとDirectXウィンドウの変換は同じではありません。カメラの位置を最大で移動すると、DirectXのカメラターゲットが代わりに移動し、カメラのターゲット(またはカメラを回転)を最大で移動すると、DirectXのカメラの位置が代わりに移動します。

助けてくれてありがとう...私は3日間それを理解することができません...

4

1 に答える 1

0

私は最終的に解決策を見つけました...

まず、3ds maxマトリックスからUp、Direction、Positionを取得し、手動でビューマトリックスを作成しましたが、ほとんどの問題を解決したD3DXMatrixPerspectiveFovLHとD3DXMatrixLookAtLHの代わりにD3DXMatrixLookAtRHとD3DXMatrixPerspectiveFovRH(投影マトリックス用)を使用しました...

次に、カメラのパン中に3ds maxマトリックスが更新されないことに気付きました(位置のみが更新されました)。そのため、ビューマトリックスのベクトルを見るには、「position-direction」を使用しました...

于 2012-09-19T10:25:18.323 に答える