3D Object Culling 小註解

假設要畫出 3D image, 那麼只能在單個眼睛成像的近物就不用畫出來, 因為畫了也不會有立體感, 這個砍掉無用訊號的步驟就叫做 culling.

假設綠色線表是兩眼的距離, 紅色線表示螢幕的寬度. Z 要砍到哪裡呢? 根據我女兒在國二學的數學, 左上和右下的兩個三角形 (或是左下和右上) 符合三個角都相等 (AAA) 的相似三角形.

所以

Z / (I / 2) = (D - Z) / (W / 2)

Z / I = (D-Z) / W

Z = D / (1 + W/ I)

對於近在眼前而 “跳出螢幕" 的 object, 只需要畫出藍色的三角形. 螢幕 (W) 超大的時候, Z 可以忽略不計 (case A). 有嚴重的鬥雞眼 (I 0), Z 也會隨之減小 (case B).

不過照公式, 兩眼近到等效只有一隻眼睛的時候, Z 趨近於 0, 反而全部 object 都要畫. 但是此時已經沒有所謂的立體感了 (兩隻眼睛才有立體感), 大家有看出哪裡不對嗎?

我想: case A 中, 交叉點隨著螢幕變大而往左移,  case B 中是眼睛往交叉點移, 所以並沒有多畫. :P

3D Object Culling 小註解 有 “ 2 則迴響 ”

  1. 我有一個猜測不知道對不對?
    把眼睛想成一個變焦鏡, 所以每個焦段"f"都有對應的最近對焦距離"Dmin(f)",
    至少Dmin(f)>f, 因為"物距<焦距"會形成虛像, 我想虛像應該不會造成立體感,
    所以 Z=max{D/(1+W/I), Dmin(f)}
    這樣就不會有caseB的矛盾了.

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

%d 位部落客按了讚: