解釋基本的3D理論
推薦:使用NSDT場(chǎng)景編輯器快速搭建3D應用場(chǎng)景坐標系
3D 本質(zhì)上是關(guān)于 3D 空間中形狀的表示,并使用坐標系來(lái)計算它們的位置。
WebGL 使用右側坐標系 — 軸指向右側,軸指向上方,軸指向屏幕外,如上圖所示。xyz
對象使用頂點(diǎn)構建不同類(lèi)型的對象。頂點(diǎn)是空間中的一個(gè)點(diǎn),在坐標系中具有自己的 3D 位置,通常是定義它的一些附加信息。每個(gè)頂點(diǎn)都由以下屬性描述:
位置:在 3D 空間中標識它 (、、)。xyz
顏色:保存 RGBA 值(R、G 和 B 表示紅色、綠色和藍色通道,alpha 表示透明度 — 所有值的范圍從 到 )。0.01.0
正常:一種描述頂點(diǎn)朝向的方法。
紋理:頂點(diǎn)可用于裝飾其所屬表面的 2D 圖像,而不是簡(jiǎn)單的顏色。
您可以使用此信息構建幾何圖形 — 下面是一個(gè)立方體示例:
給定形狀的面是頂點(diǎn)之間的平面。例如,立方體有 8 個(gè)不同的頂點(diǎn)(空間中的點(diǎn))和 6 個(gè)不同的面,每個(gè)面由 4 個(gè)頂點(diǎn)構成。法線(xiàn)定義面部的方向。此外,通過(guò)連接點(diǎn),我們正在創(chuàng )建立方體的邊緣。幾何體是從頂點(diǎn)和面構建的,而材質(zhì)是紋理,它使用顏色或圖像。如果我們將幾何體與材料連接起來(lái),我們將得到一個(gè)網(wǎng)格。
渲染管線(xiàn)渲染管線(xiàn)是準備圖像并將其輸出到屏幕上的過(guò)程。圖形渲染管道采用從使用頂點(diǎn)描述的基元構建的 3D 對象,應用處理,計算片段并將其作為像素在 2D 屏幕上呈現。
上圖中使用的術(shù)語(yǔ)如下:
基元:管道的輸入 — 它由頂點(diǎn)構建,可以是三角形、點(diǎn)或線(xiàn)。
片段:像素的 3D 投影,具有與像素相同的所有屬性。
像素:屏幕上排列在 2D 網(wǎng)格中的點(diǎn),具有 RGBA 顏色。
頂點(diǎn)和片段處理是可編程的 — 您可以編寫(xiě)自己的著(zhù)色器來(lái)操作輸出。
頂點(diǎn)處理頂點(diǎn)處理是將有關(guān)各個(gè)頂點(diǎn)的信息組合成基元,并在 3D 空間中設置它們的坐標以供查看者查看。這就像拍攝您準備的給定風(fēng)景的照片一樣 - 您必須首先放置對象,配置相機,然后拍攝。
這種處理有四個(gè)階段:第一個(gè)階段涉及排列世界中的對象,稱(chēng)為模型轉換。然后是視圖轉換,負責在3D空間中定位和設置相機的方向。攝像機有三個(gè)參數 - 位置、方向和方向 - 必須為新創(chuàng )建的場(chǎng)景定義。
然后,投影變換(也稱(chēng)為****變換)定義相機設置。它設置了攝像機可以看到的內容——配置包括視野、縱橫比和可選的近平面和遠平面。閱讀三.js文章中的相機段落以了解這些內容。
最后一步是視口轉換,它涉及輸出渲染管線(xiàn)中下一步的所有內容。
光柵化柵格化將基元(連接的折點(diǎn))轉換為一組片段。
這些片段(即 3D 像素的 2D 投影)與像素網(wǎng)格對齊,因此最終它們可以在輸出合并階段作為像素打印在 2D 屏幕顯示器上。
片段處理片段處理側重于紋理和照明——它根據給定的參數計算最終顏色。
紋理是在 2D 空間中使用的 3D 圖像,用于使對象看起來(lái)更好、更逼真。紋理由稱(chēng)為紋素的單個(gè)紋理元素組合而成,就像圖片元素從像素組合一樣。在渲染管線(xiàn)的片段處理階段將紋理應用于對象,允許我們在必要時(shí)通過(guò)包裝和過(guò)濾來(lái)調整它。
紋理包裝允許我們在 2D 對象周?chē)貜?3D 圖像。當原始分辨率或紋理圖像與顯示的片段不同時(shí),將應用紋理過(guò)濾 - 它將相應地縮小或放大。
照明我們在屏幕上看到的顏色是光源與物體材質(zhì)的表面顏色相互作用的結果。光可能會(huì )被吸收或反射。在WebGL中實(shí)現的標準Phong照明模型有四種基本類(lèi)型的照明:
漫反射:遙遠的定向光,如太陽(yáng)。
鏡面反射:一個(gè)光點(diǎn),就像房間里的燈泡或手電筒一樣。
環(huán)境:常光應用于場(chǎng)景中的所有內容。
自發(fā)光:物體直接發(fā)出的光。
在輸出操作階段,來(lái)自 3D 空間的所有基元片段都轉換為像素的 2D 網(wǎng)格,然后在屏幕顯示器上打印出來(lái)。
在輸出合并期間,還會(huì )應用一些處理來(lái)忽略不需要的信息 - 例如,不會(huì )計算屏幕外部或其他對象后面的對象的參數,因此不可見(jiàn)。
原文鏈接:解釋基本的3D理論 (mvrlink.com)
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。