為什麼zBrush這麼快?!!

來源:互聯網
上載者:User

很早以前就接觸過zBrush,那大概是那個軟體還是2.0的時候,當時就是覺得這個軟體設計得太另類太奇葩了,所以沒有怎麼試試. 這些天,看了一點dt的教程,把zBrush好好的玩了一下,現在的版本是3.1.

用zBrush可以做出好的效果,更方便的雕刻,像玩2D一樣的弄3D模型...這些當然是很有趣,但是我更感興趣的,是zBrush中牛逼的程式設計. 那些什麼雕刻啊,貼圖畫法啊, 對我而言比較浮雲...

最讓人想不通的就是,為什麼這個東西這麼快!!! 我做過地形的編輯器, 理論上和zBrush的雕刻是一個故事. 但是我花了很久的工夫,也才能做到那種程度的效率,zBrush怎麼就能夠輕而易舉做到比我多100倍的資料量,而且效率還是那麼高的呢?

我想了很久,大概得出這樣的結論:

1. 現在所有的3D建模軟體, 基本都是用的顯卡進行渲染(當然我自己寫的地形編輯器也是這樣), 這樣有很多好處, 因為顯示圖形什麼的,你只用調用opengl或者dx的api, 速度還挺快的, 而且還有專業的圖形卡, 比一般的卡的表現還要好很多. 但是, 在做雕刻的時候, 問題就來了, 大量的多邊形, 頂點的資料要進行更新, 那麼顯示就成了問題, 因為資料需要更新, 所以更新的資料需要走系統匯流排, 常見的做法是模型分塊, 然後減少提交的量, 這當然可以最佳化一小部分( 我做的地形編輯器也是這樣做的 ), 但是速度還是慢, 因為要走系統匯流排. 你可能想,現在已經pci-e了, 還有x2了, 這個速度應該可以忽略了吧... 其實, 這個傳輸的過程主要瓶頸還是在記憶體存取和cpu, 所以, 就算你把匯流排換了, 資料一多的時候還是很要命的.

2. zBrush的渲染應該是光線跟蹤的. 我可以解釋一下我的想法. 在你拖動zBrush裡面的模型的時候, 實際上他是按照低模顯示的, 為了拖動的平滑, 但是靜止的時候是用的最高模的顯示. 如果我是zBrush的程式員, 我肯定會發現一個問題, 就是zBrush的渲染速度比較慢, 所以, 我必須用"偷懶演算法", 把渲染的過程盡量減少, 在需要平滑的時候, 我就不渲染那麼高的精度, 在靜止的時候, 我就可以用較高的精度渲染, 但是只渲染一次, 我還可以用髒矩形演算法進行最佳化, 讓編輯模型的時候的渲染也變得簡單. 好了, 我剛才解釋的只是說明渲染使用光線跟蹤的方法是有比較高的可行性的.

3. 使用光線跟蹤的好處. 我做地形編輯器的時候, 為了各種筆刷(帶形狀的), 都能夠塗刷地形的高度, 我用了一個中間的過程, 所有的塗刷先更新到高度圖, 然後mesh在更新固定的地區, 因為這樣做是比較簡單的, 主要是可以避免分塊以後的裂縫問題. 在zBrush中, 模型是任意的, 不能弄成高度圖的樣子. 那麼編輯工作怎麼做比較好呢? 當然是把筆刷"映射"(投射)到模型表面, 把受影響的點都按照筆刷上的點的深淺值進行移動. 好了, 這裡是關鍵, 這個"映射"的過程, 如果要你做, 你覺得用什麼方法好呢? 當然是光線跟蹤了! 如果用了光線跟蹤, 那麼螢幕拾取也是夠簡單的, 因為渲染的時候就已經是"拾取"的了, 所以, 你的渲染也好, 編輯也好, 都是統一的!!! 這樣多方便, 多和諧啊! 而且, 更新"髒矩形"也是天然的過程, 甚至是更牛逼的"髒像素". 太牛逼了!!!....

4. 用了光線跟蹤, 就有很多東西就能夠做了, 比如zBrush裡面stensil (噴漆一樣的功能), 還有Projection Master (在2D空間內做3D編輯), wow, 那是我用過最有趣的雕刻方式!!

5. zBrush中還有牛逼的地方, 所有的東西都是頂點! 你可以做出 幾十 百萬頂點精度的模型, 給頂點著色, 然後把這個頂點色拷貝到4096*4096的紋理上匯出... 我簡直不好說這個方法有多變態的牛逼. 也許只有卡馬克說, "我們的紋理是64k*64k"可以跟這個比一下.

6. zBrush中的模型還分成了高模和低模, 還圖層等等, 其實, 這些都是基於zBrush中的頂點的操作, 那個頂點不叫頂點, 叫pixo(pixel的兄弟). 這樣圖層的操作, 高模低模的操作, 都變成了和映像中的像素類似的操作.

Ok, 我的分析大概就是這麼多, 當然也不排除zBrush的程式員就是"簡單的"牛逼, 做了我們無法想象的最佳化:).

還有我想說的是, 光線跟蹤已經有很多即時渲染的應用了, 現在已經很火了, 國外很多人在做類似的渲染器, 而且未來多核的發展的確會讓光線跟蹤的應用變得更加實際, 但是就現在的計算水平來說, 即使在cell處理器上, 也很難把光線跟蹤應用到遊戲中. 另外, 大家可以搜搜id software的另一個約翰在gdc 08中報告, 裡面很深刻的分析了光線跟蹤在外來的平台中的可行性, 我們當然要相信來自id, 而且叫約翰的傢伙, 不管他是不是卡馬克, 就算不是, 那也是他的徒弟, 呵呵. 關鍵字, 我想就是 parallel, voxel, raytracing.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.