看板 GameDesign 關於我們 聯絡資訊
※ 引述《chchwy (mat)》之銘言: : 自問自答 : 雖然我不知道為什麼 不過這個問題跟near plane有關 : 似乎near plane太小 Z-Buffer就會失效 : 我自己實驗near plane的距離 : 0.5 => Z-Buffer有開等於沒開 : 1.0 => 狀況大有改善,只剩牆壁邊緣一小塊有問題 : 1.5 => 問題完全消失 : 問題是解決了...不過為什麼 就有待高人指點了orz.. 其實是z buffer解析度的問題. 想像成從near plane到far plane被分成固定的解析度0 ~ 1.0 (可以先想像它分成256段) (其實靠近near plane的地方分到的解析度比較多) 當near與far相對於物體極端的大的時候.(也就是近的太近,遠的太遠) (這是新手常犯的錯誤,以為range設大一點可以涵蓋比較多) 物體的前後的深度就因為浮點數精度的關係被視為相等,(被放在256段裡面的同一段) 會發生後面的三角面反比前面的三角面來的前面的錯誤結果. 通常會造成物體的閃爍(一下後面的三角面跳到前面,一下又躲回去) (通常是多層正面的物體) 正確的做法之一是分析場景中的所有物體,適當的給予正確的near與far. 讓所有的物體暨可以都看得見,又同時共享最大的深度資源. 正確的做法之二是使用z-bias這個功能,確保後畫的比較靠近.(特殊狀況會這樣用) -- "May the Balance be with U"(願平衡與你同在) 視窗介面遊戲設計教學( http://0rz.tw/V28It ),討論,分享。歡迎來信。 視窗程式設計(Windows CLR Form)遊戲架構設計(Game Application Framework) 遊戲工具設計(Game App. Tool Design ) 電腦圖學架構及研究(Computer Graphics)論文代讀(含投影片製作) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.96.77.176
makuro:剛好最近有碰到這塊 其實有第三個無腦解法 12/23 23:38
makuro:把z buffer開大(深)一點 16 24 32bit就看個人怎麼抉擇了 12/23 23:41
chchwy:謝謝 的確我的場景far相當大 可能因為這樣才會有問題 12/26 22:52