3D 渲染裡邊緣切角效果 (Round Corner) 有什麼好的實現方法?
01-04
Mental Ray的是用光線跟蹤實現的,現在是否有更好的實時方法(比如基於Screen Space的,可能有點類似FXAA)?
目前遊戲里主要是怎麼處理(預先處理模型和法線貼圖)?謝謝。(左:模型,邊緣未進行倒角處理。右:Round Corner效果渲染結果)
半天也沒人答,我來拋磚引玉。
遊戲實時渲染的話,有幾種辦法,按照可行性從高到低排序。
1)直接建模
方法:在 3D 軟體里加線拖點或直接用工具加圓角。優點:簡單直接,效果很好。缺點:增加一定工作量,降低工作流的靈活性,增加模型面數。2)操縱頂點法線
方法:在 3D 軟體里給模型邊緣加線,平滑頂點法線。優點:簡單直接,效果較好。缺點:剪影仍然沒有圓滑,增加少量工作,略微降低工作流的靈活性,增加模型面數。注意立方體的角還是尖的3)法線貼圖
方法:在低模上使用有圓角的高模烘培的法線貼圖。
優點:效果較好,與2)基本一致。缺點:剪影仍然沒有圓滑,增加一定工作量,工作流靈活性降低,必須使用 per-pixel lighting shader,消耗一定性能。Modeled by Racer4454)Tessellation 實時細分曲面
方法:詳見 Tessellation in Call of Duty: Ghost優點:效果最佳,不影響工作流,不增加工作量。缺點:需要支持 DirectX 11 的 GPU,對性能要求高。題主有解決方案沒?
先問一下題主這個幀率和效果滿意否?
記得有個手繪塗抹法線貼圖的法子,不過因為是手動,效果會差一點
shaderx中有篇文章講了這個
推薦閱讀:
※圖像生成的整個過程在 OS 內核以及顯卡內的詳細執行流程是什麼樣的?
※數字圖像處理與CG有多大聯繫?與遊戲引擎有多大聯繫?
※計算機圖形學當前熱點是什麼?
※如何理解OpenGL中著色器,渲染管線,光柵化等概念?
※什麼類型的人需要學習 OpenGL?