Share via


檢視轉換

檢視變換將觀察者定位在世界空間中,將頂點變換到相機空間。 在相機空間中,相機或查看器位於原點,正向 z 方向看。 檢視矩陣圍繞著相機位置 (相機空間的原點) 和方向重新定位世界中的物件。 Direct3D 使用左手座標系統,因此 z 會正面進入場景。

有許多方式可以建立檢視矩陣。 在所有情況下,相機在世界空間中都有一些邏輯位置和方向,用作建立檢視矩陣的起點,該矩陣將應用於場景中的模型。 檢視矩陣平移和旋轉物件以將它們放置在相機空間中,相機位於原點。 建立檢視矩陣的一種方法是將每個軸的平移矩陣與旋轉矩陣組合起來。 在此方法中,應用下列一般矩陣方程式。

equation of the view transform

在此公式中,V 是正在建立的檢視矩陣,T 是重新定位世界中物件的平移矩陣,Rₓ 到 Rz 是沿著 x、y 和 z 軸旋轉物件的旋轉矩陣。 平移和旋轉矩陣是基於相機在世界空間中的邏輯位置和方向。 因此,如果相機在世界的邏輯位置是 <10,20,100>,渲染矩陣的目標是沿著 x 軸移動物件 -10 單位,沿著 y 軸移動 -20 單位,沿著 z 軸移動 -100 單位。 公式中的旋轉矩陣基於相機的方向,即相機空間的軸旋轉與世界空間不對齊的程度。 例如,如果前面提到的相機筆直向下,則其 z 軸與世界空間的 z 軸偏離 90 度 (pi/2 弧度),如下圖所示。

illustration of the view space of the camera in comparison to world space

旋轉矩陣對場景中的模型套用大小相等但方向相反的旋轉。 此相機的檢視矩陣包含 x 軸繞著 -90 度旋轉。 旋轉矩陣與平移矩陣結合,建立一個檢視矩陣,用於調整場景中物件的位置和方向,使它們的頂部面向相機,從而呈現出相機位於模型上方的外觀。

設定檢視矩陣

Direct3D 使用世界矩陣和檢視矩陣來配置多個內部資料結構。 每次設定新的世界或檢視矩陣時,系統都會重新計算關聯的內部結構。 設定這些矩陣經常是耗時的計算。 您可以透過將世界矩陣和檢視矩陣連接成設定為世界矩陣的世界檢視矩陣,然後將檢視矩陣設定為恆等式,來最大限度地減少所需的計算量。 保留單一世界和檢視矩陣的快取副本,您可以根據需要修改、連接和重置世界矩陣。

轉換