3D模型用編程實現和用3Dmax區別在哪裡?各有什麼優勢?
編程,代碼,程序員。使用3dmax,直接用,模型師。編程是否能實現的效果更完美?
請先閱讀維基百科關於三維模型的頁面[1]。我相信你有很多需要了解的東西都可以在那裡找到。
三維模型只是點陣(用於point-based modeling)或polygon mesh(一般是三角形或四邊形)的集合。拋開紋理和其他輔助數據,在學術界使用的都是一些經典模型[2],採用的格式也都極其簡單(比如PLY格式僅僅包括文件頭,頂點列表以及由頂點組成的多邊形列表)。這些模型大都使用三維掃描儀生成,後期經過一些補洞和校準演算法處理。學術界使用的相當一部分模型也使用三維重構技術。另外要使得模型動起來則牽扯到另一個十分龐大的計算機圖形學研究領域:動畫。這裡說的動畫是指如何做到符合物理或生物學原理的逼真動畫。遊戲及動畫里使用的模型是通過三維掃描加藝術家後期加工做成的。一個好的三維建模師是一個藝術家,同時還需要@Roc Ho答案中提到的那些專業知識,我並不了解很多,但我相信如果說模型的表現力和美觀,那和程序設計關係很小。當然,也不是沒有,比如Pixar在對Up中的那隻大鳥建模的時候,專門為這種三段肢體兩個關節的剛體運動建模並求解了偏微分方程來確定某個時間和外力作用下能夠得到使身體平衡的唯一解(即肢體的唯一姿態)。
至於3D Max,它不能僅僅認為是一個建模軟體。完成一個模型之後,添加紋理,預處理光照,添加不同的shader這些都已經超越了簡單的建模。所有在3D Max里可以完成的事情,也都可以使用其他渲染器完成[3],這些都已經是三維渲染的範圍。在3D Max中的所有渲染演算法也是編程實現的。真實感渲染這也是一個十分龐大的研究領域。
綜上,要得到最終在熒幕或電腦屏幕上生動逼真的模型,要通過很多領域的通力合作,所以其實我無法回答你的問題,但還是希望這個答案對你理解三維圖形學和建模有所幫助。
[1] 3D modeling[2] The Stanford 3D Scanning Repository
[3] http://www.pointzero.nl/renderers/沒本質區別,3DSMAX 不也是軟體,不同樣是依靠代碼編程完成的。唯一不同的是,一個有 UI,一個無 UI。有UI的不就簡單點了。能讓完全不懂編程的建模師啥的捏出三圍點線面來構成數字模型神馬的。
沒UI的不就難點,需要用繪製API或者更底層的API來構建出模型的點線面來不是。
話說,一個複雜模型,那麼多點線面,光源,貼圖坐標啥的,沒個UI光靠代碼寫怎麼成 = =||| 怎麼也得來個可視化的輔助工具不是。3D模型用編程實現跟3Dmax還是有區別的。
一般來說,3D模型自己用程序實現,要寫模型導出插件,首先得知道源模型數據的布局,然後提取你自己程序裡邊必須使用的數據(一般來說,就是頂點,頂點索引,面,面索引,法線,紋理,材質,動畫數據),而忽視模型文件裡邊的編輯器相關數據及你程序用不到的數據。
區別及優勢:自己實現很多都是為了實時渲染(Realtime Rendering),靠犧牲質量來獲取渲染速度;3Dmax渲染是靠犧牲渲染速度來換取渲染質量,叫離線渲染(Off-line Rendering)(有人要爭3Dmax編輯模型時的渲染是實時的那我也沒話說了)。實時跟離線的模型一般也不一樣,離線模型用高模;遊戲一般都用中模或低模,用高模卡死了。動畫:實時動畫用的是預捕捉後經過Artist處理過的動畫數據,程序再用關鍵幀差值、漸變等原理對數據處理,跟離線的效果相比,細膩度是差了一些,但是原理不至於差很遠;區別估計是數據密集度不一樣,可能實時渲染1s內用了4個數據,而離線用了40個數據(動畫這段是猜測:P)。
至於」編程效果是否更完美「這個問題,我的回答:可以更完美。因為3Dmax也是程序做出來的啊。如果人類能寫一個系統,強過現在市面上的離線渲染器,那就已經超越3Dmax了。不過這個時候寫的已經不是」實時渲染「了,而是」離線渲染「。當然,這個可以更完美有一個前提:工作量難以想像的大!因為渲染並不是單單程序的事情,涉及到很多人協作(各種複雜的離線渲染理論及演算法,各種美工,模型師配合,需要一個Team)(這個@王洋子豪也已經說得很清楚了)。一個人的挑戰,是100%不可能的。
PS:吐個槽,程序員已經造了一堆輪子了,難道答主還要自己造輪子不成,直接拿來用就行了。嘻嘻。正經的3d建模,比如主要人物,都是由建模師先做真實的陶土模型,再來根據此模型建模的。就算雜項的部分,比如桌子椅子凳子等,都還是需要有經驗的建模師來做的。像動植物之類由於要做動畫,關節部分的面片如何安排,都不是一朝一夕就可以完成的。國內外3d動畫差距這麼大,一個很重要的原因就是建模師的差距,國外人家做一個生物設計,需要有生物學方面的經驗,如何安排肌肉、骨骼,動起來應該拉伸什麼部分等等,國內連個基本的人物動作都做的很僵硬。
既然這麼需要經驗的事情,怎麼可能通過編程來實現呢?就好像計算機作畫一樣,依然是需要繪圖板,需要畫室來畫畫,而不是編程來做的。編程主要的工作是處理數據,需要的是確定性,而像藝術作品這麼抽象的東西,是很難用編程來展示的。編程是說自己編寫渲染程序嗎?
也許要達到3ds max窗口裡顯示出來的那個效果不難,因為那個窗口裡也只是用OpenGL顯示一下模型、坐標系等等
但是要達到渲染器出來的圖效果?自己寫個電影級的渲染器嗎?你說買部車然後開好,還是自己從頭造部車來開好?不只是出圖,還有那一大堆的參數設置,建模、動畫的輔助工具等等等
當然不是不行,你是皮克斯、夢工廠,有的是錢,那就自己寫軟體編程實現可以做到批量,快速的操作。就如同軟體批處理一樣。用3dmax就如同是搬磚,一塊一塊的壘起來,完全是個體力活。用編程實現某些重複性操作,或者產生某些max不具備的功能,對於建模師來說是事半功倍。祝你在使用MAX的同時學會編程,從此成為大神。
原來是這樣啊 看來要當頂級的3d專家還是要學怎麼編寫3d渲染器啥的啊
推薦閱讀:
