3D 渲染裡邊緣切角效果 (Round Corner) 有什麼好的實現方法?

Mental Ray的是用光線跟蹤實現的,現在是否有更好的實時方法(比如基於Screen Space的,可能有點類似FXAA)?

目前遊戲里主要是怎麼處理(預先處理模型和法線貼圖)?

謝謝。

(左:模型,邊緣未進行倒角處理。右:Round Corner效果渲染結果)


半天也沒人答,我來拋磚引玉。

遊戲實時渲染的話,有幾種辦法,按照可行性從高到低排序。

1)直接建模

方法:在 3D 軟體里加線拖點或直接用工具加圓角。

優點:簡單直接,效果很好。

缺點:增加一定工作量,降低工作流的靈活性,增加模型面數。

隨便做個示意圖

2)操縱頂點法線

方法:在 3D 軟體里給模型邊緣加線,平滑頂點法線。

優點:簡單直接,效果較好。

缺點:剪影仍然沒有圓滑,增加少量工作,略微降低工作流的靈活性,增加模型面數。

注意立方體的角還是尖的

3)法線貼圖

方法:在低模上使用有圓角的高模烘培的法線貼圖。

優點:效果較好,與2)基本一致。

缺點:剪影仍然沒有圓滑,增加一定工作量,工作流靈活性降低,必須使用 per-pixel lighting shader,消耗一定性能。

Modeled by Racer445

4)Tessellation 實時細分曲面

方法:詳見 Tessellation in Call of Duty: Ghost

優點:效果最佳,不影響工作流,不增加工作量。

缺點:需要支持 DirectX 11 的 GPU,對性能要求高。

關閉細分

開啟細分(自適應)5)Post-FX。(黑科技,然並卵)

方法:通過 G-buffer 信息找到轉角處,進行修改。詳見 http://on-demand.gputechconf.com/gtc/2012/presentations/S0611-Edge-Aware-Shaders-for-RT-Computer-Graphics.pdf

優點:不影響工作流,不增加工作量。

缺點:效果一般,需要使用 deferred rendering。


題主有解決方案沒?


先問一下題主這個幀率和效果滿意否?


記得有個手繪塗抹法線貼圖的法子,不過因為是手動,效果會差一點


shaderx中有篇文章講了這個


推薦閱讀:

圖像生成的整個過程在 OS 內核以及顯卡內的詳細執行流程是什麼樣的?
數字圖像處理與CG有多大聯繫?與遊戲引擎有多大聯繫?
計算機圖形學當前熱點是什麼?
如何理解OpenGL中著色器,渲染管線,光柵化等概念?
什麼類型的人需要學習 OpenGL?

TAG:計算機圖形學 | 3D渲染 |