簡體   English   中英

SceneKit 球體法線似乎隨着相機移動而改變?

[英]SceneKit sphere normals appear to change as the camera moves?

以下示例中的SCNSphere的法線似乎會隨着相機的旋轉而變化,這似乎並不正確,表明我誤解了一些基本的東西。

在放置圓柱體以突出顯示 x、y 和 z 軸(分別為紅色、綠色和藍色)和具有單位半徑的球體和以下自定義片段着色器修改器的場景中:

_output.color.rgb = _surface.normal;

position (0, 0, 10) (即沿 z 軸)的相機呈現以下內容:

在此處輸入圖像描述

這看起來是對的,因為在 x、y 和 z 軸上向外突出的法線分別是紅色、綠色和藍色,並且始終具有預期的漸變。 但是,如果我們將相機旋轉到 position (10, 0, 0) (即沿 x 軸),這是渲染場景:

在此處輸入圖像描述

這表明法線已經改變,因為漸變不再對應於坐標空間中的預期方向(事實上,這種顏色模式適用於相機的任何旋轉)。

文檔中:

幾何場(如 position 和法線)在視圖空間中表示。 可以使用SceneKit的uniforms(比如u_inverseViewTransform)在不同的坐標空間進行操作,但是在寫結果之前必須先轉換回視圖空間。

所以法線用相機的坐標系表示,而不是在 object 或世界空間中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM