共用方式為


Direct3D 9 (臉部和頂點標準向量)

網格中的每個臉部都有垂直單位一般向量,如下圖所示。 向量的方向是由定義頂點的順序,和座標系統是否為右手系或左手系而決定的。 面標準點偏離面的正面。 在 Direct3D 中,只會看見正面。 正面上的頂點是依順時針方向定義。

正面的一般向量圖例

只要不是正面,都稱為背面。 Direct3D 不一定會轉譯回臉部;因此,後方臉部會說是被擷取。 如果您想要的話,可以變更消除模式以轉譯背面。 如需詳細資訊,請參閱 Culling State (Direct3D 9)

Direct3D 使用頂點單位法向量呈現 Gouraud Shading、光源及紋理效果。 下圖顯示範例常態。

頂點常態圖例

對多邊形套用 Gouraud Shading 時,Direct3D 會使用頂點法向量計算光源與表面之間的角度。 它會計算頂點的色彩和濃度值,並針對所有基本類型表面上的每一個點插入它們。 Direct3D 會使用角度計算光線強度值。 角度越大,照射在表面上的光線就越弱。

如果您要建立平面的物件,請將頂點常態設定為垂直于表面,如下圖所示。

由兩個三角形組成的平面圖例,其中包含頂點常態

不過,您的物件可能是由三角形帶組成,而且三角形不是共平面。 有一種簡單的方式可在連環中所有三角形上達到平滑著色,那就是先計算與頂點相關聯的每個多邊形面的表面法向量。 表面法向量可設定為與每個表面法向量等角。 不過,這個方法對於複雜的基本類型可能不夠有效率。

下圖顯示此方法,當中顯示的兩個表面 S1 和 S2 從上方看起來邊緣朝上。 S1 及 S2 的法向量以藍色顯示。 頂點法向量是以紅色顯示。 頂點法向量與 S1 表面法向量所呈現的角度,與 S2 的頂點法向量和表面法向量相同。 當這兩個表面亮起並採用 Gouraud Shading 時,結果會是兩者之間有平滑著色、平滑圓邊。

兩個表面的圖表 (s1 和 s2) 及其正常向量和頂點常態向量

如果頂點法向量朝向相關聯的其中一個面傾斜,會造成該表面上的點的亮度增加或減少,取決於它與光源形成的角度。 如下圖範例所示。 同樣地,這些表面會以邊緣顯示。 頂點法向量朝向 S1,使其與光源之間形成的角度較小,如果頂點法向量與表面法向量呈等角的話。

兩個表面的圖表 (s1 和 s2) ,其頂點一般向量偏向一個臉部

您可以使用 Gouraud Shading 在 3D 場景中顯示一些物件的銳利邊緣。 若要這樣做,請在需要尖角的任何臉部交集上複製頂點一般向量,如下圖所示。

尖峰邊緣重複頂點常態向量的圖例

如果您使用 DrawPrimitive 方法轉譯場景,請將有銳利邊緣的物件定義為三角形清單,而非三角形連環。 當您將物件定義為三角形連環時,Direct3D 會將它視為單一多邊形,由多個三角形面所組成。 Gouraud Shading 同時套用在多邊形的每個面以及相鄰的面之間。 結果物件會在面與面之間平滑著色。 由於三角形清單是由一系列不相鄰的三角面所組成的多邊形,因此 Direct3D 會在多邊形的每個面上套用 Gouraud Shading。 不過,它不會從一個面套用至另一個面。 如果三角形清單中有兩個以上相鄰的三角形,這些三角形之間會顯示銳利邊緣。

另一個替代方法是在轉譯有銳利邊緣的物件時改變為平面著色。 運算上來說,這是最有效率的方法,但可能會導致場景中的物件不會進行點陣化轉譯,就像套用 Gouraud 著色的物件一樣。

座標系統和幾何