Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

物理燈光與相機單位

為什麼使用物理燈光和相機單元?

Godot 對許多適用於光的物理屬性(如顏色、能量、相機視野和曝光)使用任意單位。預設情況下,這些屬性使用任意單位,因為使用精確的物理單位會帶來一些權衡,這對於許多遊戲來說是不值得的。由於 Godot 在預設情況下下注重易用性,因此預設會停用實體光單元。

物理單位的優點

如果您的目標是在專案中實作照片級真實感,那麼使用現實世界的單位作為基礎可以幫助您更輕鬆地進行調整。有關現實世界材質、燈光和場景亮度的參考資料可以在「基於物理 <https://physicallybased.info/>」等網站上找到。

當從使用物理光單位的其他 3D 軟體(例如 Blender)移植場景時,在 Godot 中使用現實世界單位也很有用。

物理單位的缺點

使用實體光單元的最大缺點是您必須密切注意給定時間使用的動態範圍。將非常高的光強度與非常低的光強度混合時,可能會遇到浮點精度錯誤。

實際上,這意味著您必須手動管理曝光設定,以確保場景不會過度曝光或曝光不足。自動曝光可以幫助您平衡場景中的光線,使其進入正常範圍,但它無法恢復因動態範圍過高而損失的精確度。

使用實體光和相機單元不會自動讓您的專案看起來*更好*。有時,遠離現實主義實際上可以讓場景在人眼看來更好。此外,與非物理單位相比,使用物理單位需要更嚴格的要求。只有正確設定物理單位以符合現實世界的參考,才能獲得物理單位的大多數好處。

備註

物理光單位僅在 3D 渲染中可用,在 2D 渲染中不可用。

設定自動簽署

實體光單元可以與實體相機單元分開啟用。

要正確啟用物理光單元,需要 4 個步驟:

  1. 測試

  2. 設定執行

  3. 設定環境

  4. 設定執行

由於實體光和相機單元僅需要少量計算來處理單位轉換,因此啟用它們不會對 CPU 產生任何明顯的效能影響。然而,在 GPU 方面,實體相機單元目前強制執行景深。這對性能有中等影響。為了減輕這種效能影響,可以在進階專案設定中降低景深品質。

測試

開啟專案設定,啟用**高級**開關,然後啟用**渲染>燈光和陰影>使用物理光單位**。重新啟動編輯器。

設定執行

警告

當實體光單元啟用時,如果您的場景中有一個 WorldEnvironment 節點(即編輯器環境已停用),您**必須**將一個:ref:class_CameraAttributes 資源指派給 WorldEnvironment 節點。否則,如果您有可見的 DirectionalLight3D 節點,3D 編輯器視窗將顯得極為明亮。

在 Camera3D 節點上,您可以將 class_CameraAttributes 資源新增至其 Attributes 屬性。此資源用於控制相機的景深和曝光。使用 class_CameraAttributesPhysical 時,其焦距屬性也用於調整相機的視野。

啟用物理光單位後,CameraAttributesPhysical 的 Exposure 部分中將提供以下附加屬性:

  • 光圈: 相機光圈的大小,以光圈值為單位測量。光圈值是相機焦距與光圈直徑之間的無單位比率。高光圈設定將導致較小的光圈,從而導致影像更暗和焦點更清晰。低光圈會導致大光圈,讓更多的光線進入,產生更亮、聚焦度更低的影像。

  • 快門速度: 快門開啟和關閉的時間,以*倒數秒* (1/N) 為單位測量。較低的值將允許更多的光線進入,從而導致影像更亮,而較高的值將允許較少的光線進入,從而導致影像更暗。 使用腳本取得或設定此屬性時,單位為秒,而不是秒的倒數。

  • 靈敏度: 相機感光元件的靈敏度,以 ISO 為單位測量。靈敏度越高,影像越亮。當啟用自動曝光時,這可以用作曝光補償的方法。該值加倍將使曝光值(以 EV100 測量)增加 1 級。

  • 乘數: *非物理*曝光乘數。較高的值將增加場景的亮度。這可用於後製調整或動畫目的。

預設 光圈 值 16 光圈值適合白天戶外使用(即與預設 DirectionalLight3D 一起使用)。對於室內照明,2 到 4 之間的值更合適。

攝影和電影製作中使用的典型快門速度為 1/50(0.02 秒)。夜間攝影一般使用1/10(0.1秒)左右的快門,而運動攝影則使用1/250(0.004秒)至1/1000(0.001秒)之間的快門速度以減少運動模糊。

現實生活中,白天戶外攝影會根據天氣狀況,感光度通常設定在 50 ISO 到 400 ISO 之間。較高的值用於室內或夜間攝影。

備註

與現實生活中的相機不同,Godot 中不會模擬提高 ISO 感光度或降低快門速度(例如可見顆粒或光跡)的不利影響。

請參閱 doc_physical_light_and_camera_units_setting_up_physical_camera_units` 以了解 CameraAttributesPhysical 屬性的描述,這些屬性在**不**使用物理光單位時也可用。

設定環境

警告

預設配置是針對白天戶外場景設計的。夜間和室內場景需要調整 DirectionalLight3D 和 WorldEnvironment 背景強度才能看起來正確。否則,位置燈在預設強度下幾乎不可見。

如果您尚未將 class_WorldEnvironment 和 class_Camera3D 節點新增至目前場景,請立即按一下 3D 編輯器視窗頂部的 3 個垂直點來新增。按一下“將太陽新增至場景”,再次開啟對話框,然後按一下“將環境新增至場景”。

啟用物理光單元後,可以在 class_Environment 資源中編輯一個新屬性:

  • 背景強度: 背景天空的強度,單位為「尼特」<https://en.wikipedia.org/wiki/Candela_per_square_metre>「__(坎德拉每平方公尺)。如果環境光和反射光各自的模式設定為 背景,這也會影響它們。如果設定了自訂**背景能量**,則該能量將乘以強度。

設定建置

啟用物理光單元後,Light3D 節點中有 2 個新屬性可用:

  • 強度: 光的強度,單位為`lux <https://en.wikipedia.org/wiki/Lux>`__ (DirectionalLight3D) 或`lumens <https://en.wikipedia.org/wiki/ Lumen_(單位)>`__(OmniLight3D/SpotLight3D)。如果設定了自訂**能量**,則該能量將乘以強度。

  • 溫度: 光的*色溫*以開爾文為單位定義。如果設定了自訂**顏色**,則該顏色將乘以色溫。

OmniLight3D/SpotLight3D 強度

流明是光通量的量測,是光源每單位時間所發出的可見光總量。

對於 SpotLight3D,我們假設可見錐體外部的區域被完美的光吸收材料包圍。因此,錐體區域的表觀亮度不會隨著錐體尺寸的增加和減少而改變。

典型的家用燈泡的亮度範圍約為 600 流明至 1200 流明。一支蠟燭的亮度約為 13 流明,而一盞路燈的亮度約為 60000 流明。

平行光

勒克斯是單位面積光通量的度量,等於每平方公尺一流明。勒克斯是在給定時間內照射到表面的光量的度量。

使用 DirectionalLight3D,在晴朗的晴天,陽光直射下的表面可能會接收到大約 100000 勒克斯。家中的典型房間可能接收到大約 50 勒克斯的亮度,而月光照射下的地面可能接收到大約 0.1 勒克斯的亮度。

運算子

6500 開爾文是白色。較高的值會導致較冷(較藍)的顏色,而較低的值會導致較暖(較橙色)的顏色。

陰天的太陽溫度約為 6500 開爾文。晴天時,太陽溫度在 5500 至 6000 開爾文之間。在晴朗的日子裡,日出或日落時,太陽溫度約為 1850 開爾文。

色溫圖從 1,000 開爾文(左)到 12,500 開爾文(右)

色溫圖從 1,000 開爾文(左)到 12,500 開爾文(右)

其他 Light3D 屬性(例如 EnergyColor) 出於動畫目的以及偶爾需要建立具有非真實屬性的燈光時仍可編輯。

設定遊戲區域

實體相機單元可以與實體燈光單元分開啟用。

將 class_CameraAttributesPhysical 資源新增至 Camera3D 節點的 Camera Attributes 屬性後,某些屬性(例如 FOV)將不再可編輯。相反,這些屬性現在由 CameraAttributesPhysical 的屬性(例如焦距和光圈)控制。

CameraAttributesPhysical 在其 Frustum 部分中提供以下屬性:

  • 對焦距離: 將對焦的物體與相機的距離,以公尺為單位測量。在內部,這將被限制為至少比 焦距 大 1 毫米。

  • 焦距: 相機鏡頭和相機光圈之間的距離,以毫米為單位測量。控制視野和景深。焦距越大,視野越小,景深越窄,這意味著聚焦的物體更少。較小的焦距將導致更寬的視野和更大的景深,這意味著更多的物體將成為焦點。此屬性會覆寫 Camera3D 的 FOVKeep Aspect 屬性,使它們在屬性面板中為唯讀。

  • 近/遠: 近和遠距離剪輯距離(以公尺為單位)。它們的行為與同名的 Camera3D 屬性相同。較低的**近**值允許相機顯示非常近的物體,但代價是遠處可能存在精度(Z-fight)問題。較高的 值允許相機看得更遠,但也以遠處潛在的精度(Z-fighting)問題為代價。

預設焦距 35 毫米對應於廣角鏡頭。與預設的 75 度「實用」垂直 FOV 相比,它的視野仍然明顯更窄。這是因為電影製作和攝影等非遊戲用例更喜歡使用較窄的視野來獲得更具電影感的外觀。

電影製作和攝影中常用的焦距值有:

  • 魚眼(超廣角): 15 毫米以下。幾乎看不到景深。

  • 廣角: 15 毫米至 50 毫米之間。景深減小。

  • 標準: 50 毫米至 100 毫米之間。標準景深。

  • 長焦: 大於 100 毫米。景深增加。

與使用 保持高度 寬高比模式時一樣,有效視野取決於視口的寬高比,較寬的寬高比會自動產生更寬的「水平」視野。

還可以在 自動曝光 部分啟用基於相機平均亮度等級的自動曝光調整,具有以下屬性:

  • 最小靈敏度: 相機允許達到的最暗亮度,以 EV100 為單位測量。

  • 最大靈敏度: 相機允許達到的最亮值,以 EV100 為單位測量。

  • 速度: 自動曝光效果的速度。影響相機執行自動曝光所需的時間。較高的值允許更快的過渡,但根據場景的不同,最終的調整可能看起來會分散注意力。

  • 比例: 自動曝光效果的比例。影響自動曝光的強度。

EV100 是在 ISO 感光度為 100 時測量的曝光值 (EV)。有關現實生活中常見的 EV100 值,請參閱「此表 <https://en.wikipedia.org/wiki/Exposure_value#Tabulated_exposure_values>」。