Re: [問題] 為什麼做電影不做遊戲?

作者: cjcat2266 (CJ Cat)   2017-07-17 11:22:56
就我想得到的部分發表點淺見
最直接的答案就是電影跟遊戲相比
可以使用的運算資源和時間根本不是同一個數量級的
電影的一個frame可以用幾千幾百台的電腦組成的render farm
運算個幾個小時幾天幾個禮拜,只要最後有把frame算出來,就可以上架沒有問題
遊戲在遊戲主機或PC上,只有一組CPU
一個frame要在33毫秒(30fps)或者16毫秒(60fps)以內運算完
光是模型面數,就不可能用得跟電影模型面數一樣高
更何況算圖只是一個frame的一部份,不要忘了遊戲邏輯本身
舉例來說,這個TLoU:R引擎投影片上秀出的例子(p.62)
該場景的一個frame只有約40%的時間可以拿來算圖
http://bit.ly/2uttjSH
[補充]
的確,現在有可以將高面數模型降低面數的自動化工具
對於簡化背景物體很有幫助,像是石頭、樹木等
但是自動簡化生出來的低面數人物模型,往往佈線不甚理想
佈線不佳的模型,在骨骼複雜的地方運動時容易產生破圖
叫模型師手動修正不良佈線,不如從頭自己做低面數模型來得划算
[/補充]
所以回答這個問題
: 推 tkigood: 最簡單的原因就是面數太多跑不動 07/16 21:42
: 所以是可以做的吧?只是家機不給力?
沒錯,"理論上"有極其強大的硬體可以做到
但是以現在的硬體效能水準和經濟考量,基本上不可能也不實際
說"只是"家機不給力有點過度簡化問題
接下來針對頭髮的問題
: 記得之前哪個動畫一個頭髮插了幾百萬根 … 啊遊戲的可能只給你一個髮片
非即時算圖(又稱離線算圖)與即時算圖,兩者適用的模型定義方式不盡相同
離線運算適用的模型定義方式包含(但不僅限於)
傳統的網線模型(mesh)和隱晦面(implicit surface)
網線模型就是用網線明確定義很多三角形,建構出模型
隱晦面則是用數學函式定義出模型的形狀
不管是用哪個方式定義模型
在算圖的時候就是在每個像素的位置模擬從攝影機位置射出的射線
撞到模型表面的時候計算反彈、穿透與折射的射線,繼續模擬直到事先設定好的限制為止
接下來反推所有碰撞點應該會反彈的光色與強度,算出各像素的最終顏色
這個方法叫做光跡追蹤(raytracing)
針對網線模型的光跡追蹤很直覺
基本上就是解高中數甲的"求線段與三角形的交點"這個問題
隱晦面的光跡追蹤比較麻煩
針對不同的數學函式,要自己推導出適合的射線交點解法
有時候使用的隱晦面甚至沒有辦法用數學算式表達出來(沒有"閉型解")
這個時候就要用數值方法,片段地在射線上面取樣,反覆逼近隱晦面與射線的交點
可以比喻成用十分逼近法求平方根近似值的感覺,反覆朝更準確地答案邁進
這個方法叫做光跡邁進(raymarching),因為有種一步一步前進的感覺
用個球體模型來舉例
網線模型的定義方式就是用一堆三角形拼出個球型
優點包含與其他傳統模型的定義方式一致,且要做形狀微調的話可以直接改變頂點位置
缺點之一是鏡頭放大就會看到稜角
隱晦面定義方式則是使用球心與半徑表達球體
優點是光跡追蹤的時候可以明確算出正確球面,放大不會有形狀上的瑕疵
缺點之一是不方便做形狀微調
雖然說球射線與三角形的交點v.s.射線球體的交點,兩者所需的計算資源量級差不多
但是很多隱晦面定義的模型,與射線交點的計算就複雜許多
頭髮一般就是用隱晦面的方式定義(e.g. 密度、髮流、粗細等)
而且一次幾百萬根,計算量相當可觀
用網線模型表達幾百萬根毛髮,還要看不出稜角,資料量會太大
接下來看看即時運算
現行GPU的硬體架構,適合拿來在螢幕上面繪製三角形
所以幾乎所有的遊戲工作室,自然使用網線的方式定義模型,也就是你說的髮片
主流的算圖方式,是先算出三角形在畫面上佔到的像素
每個像素再執行一小段程式,算出該像素的顏色,這個程式叫做pixel shader
其實這種運算模式還是可以拿來算光跡追蹤啦
方法就是叫GPU繪製一個全螢幕長方形(由兩個三角形組成)
然後每個像素對應的pixel shader,實作光跡追蹤的運算
現行GPU一般來說不夠力執行真正的光跡追蹤運算
所以通常是用光跡邁進來逼近光跡追蹤的結果,並且將邁進步數限制得很低
邁進的步數不夠高的結果,就是會看到"取樣斷層"瑕疵
相信以下這類的毛髮和植披的取樣斷層瑕疵,很多玩家都有注意到
http://imgur.com/a/KFY9v
嗯...目前想到這樣,而且寫得有點累了XD
如果有可以補充的,就幫忙接力一下吧
作者: godrong95 (家暴)   2017-07-17 11:26:00
先推 免得被發現看不懂
作者: dklassic (DK)   2017-07-17 11:26:00
推 XD
作者: andytimmons (NothingButMusic)   2017-07-17 11:32:00
cj貓只能推
作者: OROCHI97 (OROCHI97)   2017-07-17 11:32:00
推專業
作者: dan5120 (別亂Q 屾(゚皿゚メ))   2017-07-17 11:37:00
哇 釣到大咖
作者: PTTfaggot (...)   2017-07-17 11:37:00
專業的來了
作者: Zetis (p p )   2017-07-17 11:42:00
推專業 更推這麼有耐心仔細解釋!
作者: strayfrog (蛙)   2017-07-17 11:45:00
推專業,看完文真心佩服!
作者: holyhelm (老鷹 鴨霸 西米露)   2017-07-17 11:49:00
.....釣到這麼大的
作者: try66889 (小皮)   2017-07-17 11:51:00
推專業 !
作者: NiGHTsC   2017-07-17 12:06:00
每次看cj貓的文都以為我看的不是中文…
作者: a1s2d342001 (風吹褲子飛)   2017-07-17 12:08:00
先推 免得被發現看不懂
作者: Layase (小雷17æ­²)   2017-07-17 12:09:00
第一段 有哪部電影一個frame會用幾百台電腦運算幾個禮拜?
作者: sora333000 (sora333000)   2017-07-17 12:11:00
專業推
作者: SweetSixteen (Come Together)   2017-07-17 12:20:00
嗯嗯 跟我想得一樣呢
作者: Hua0722 (引歸殺象吶)   2017-07-17 12:21:00
未看先推,竟然釣到本板神獸
作者: BDrip (藍光~)   2017-07-17 12:25:00
那個只是比喻而已 如果時間成本無上限是可以這麼做...
作者: blowchina   2017-07-17 12:27:00
師爺你給翻譯翻譯
作者: brmelon (清水西瓜)   2017-07-17 12:27:00
呼 好險看得懂
作者: joe71002 (電腦蟲)   2017-07-17 12:33:00
簡單的說,就是遊戲機又要畫圖又要控制NPC還沒薪水(?);電影可以全力專注畫圖這樣?
作者: karta1453803 (ArtBread)   2017-07-17 12:42:00
數學系表示:我只看得懂10%(X
作者: bluoxy (bluoxy)   2017-07-17 12:47:00
看來我是87 推推
作者: vans24 (Vans)   2017-07-17 12:57:00
專業推
作者: jimmylily (jimmylily)   2017-07-17 13:03:00
cj貓大專業來了!!
作者: forgenius (否雞)   2017-07-17 13:19:00
趕快推不然人家會以為我看不懂
作者: sunev (Veritas)   2017-07-17 13:21:00
frozen中Elsa建城堡的場景,一個frame要算130小時,用了26000 cores。
作者: freedom51710 (大‧幸運星)   2017-07-17 13:39:00
快推 不然別人以為我不懂XD
作者: barwan (barwan)   2017-07-17 13:42:00
作者: allen0205 (阿邱)   2017-07-17 13:44:00
變形金鋼2有提過大力神的合體動畫曾把ILM好幾台電腦都給燒壞掉
作者: cohlint2004 (蕭天鳴)   2017-07-17 13:44:00
不不不,PTT發文不需要開關([][/])呀XDDD
作者: walkmaster (初號機歸位)   2017-07-17 13:44:00
推 我也是相關產業 寫得很好那些動畫電影算圖時間都是以近「年」來算的而且他們的算圖機器給我們一般人用是會飛天的xd更不用說他們是用「農場」不是只有一台不過我也是菜鳥 一下子看這些也得消化一下xd公司要出圖一張一個小時我都快抓狂了勒
作者: sugizo0 (臺灣魯蛇)   2017-07-17 14:05:00
真的看不懂,但覺得好厲害~
作者: DM1984 (DM)   2017-07-17 14:42:00
雖然都是中文 但我看不懂 跪著推一個
作者: patrickleeee (派脆)   2017-07-17 14:53:00
簡單說 人家電影一張畫面 用幾千幾百台比PS4還強的電腦算個5.6天 才算好 你一台PS4 還是洗洗睡吧
作者: b160160 (HG Life is Foo~~~)   2017-07-17 15:08:00
推!
作者: ekanswang (ekanswang)   2017-07-17 15:24:00
推這篇!!!
作者: skybrest (Be Still My Heart)   2017-07-17 16:13:00
我看不懂可以推嗎╮( ̄▽ ̄"")╭
作者: a83a83cjcj (馬馬虎虎)   2017-07-17 16:40:00
推!!
作者: zseineo (Zany)   2017-07-17 17:52:00
總之推
作者: NCTU87 (八七)   2017-07-17 18:37:00
推看不懂的中文
作者: cs853 (cs853)   2017-07-17 18:51:00
不懂也推
作者: Jack0213333 (Jack0213333)   2017-07-17 19:02:00
推,感覺看完,有長知識= =a
作者: IsonBrother (哀傷兄)   2017-07-17 19:22:00
必須推0口0
作者: marsdora (CWES)   2017-07-17 19:50:00
嗯嗯對,我也是這樣想,被你先Po了
作者: naya7415963 (稻草魚)   2017-07-17 20:04:00
推專業 好厲害
作者: kuku321 (halipapon)   2017-07-17 20:39:00
瑕疵OK的 TXAA一上去就消失了(誤不過TXAA要看企劃目標 有些企劃的導演跟美術很痛恨他XD
作者: johnx (johnboy75129)   2017-07-17 22:38:00
作者: jianchang (拉格)   2017-07-17 23:44:00
推力夠大 門板都能飛上天
作者: Sk8erBoi (滑板男孩)   2017-07-18 00:46:00
快推不然會被笑看不懂
作者: CSBS (地上波)   2017-07-18 03:18:00
有一個公司只做海水特效 就可以賣給一堆大公司
作者: Luos (Soul)   2017-07-18 12:12:00
推推推 完全看不懂 教授對不起
作者: gary886 (天佑日本)   2017-07-18 13:35:00
看完文章才發現是cj貓大大,謝謝分享
作者: iverson0968 (iverson0968)   2017-07-18 15:16:00
看不懂
作者: kenintw (Ken)   2017-07-19 23:18:00
認真看還是多少可以理解啦 不然辛苦寫的東西一堆人說看不懂不是很那個嗎
作者: love12548 (Ezio)   2017-07-20 11:49:00
回13樓 其實你看到大型特效電影都需要這麼久....變形金剛就是其一

Links booklink

Contact Us: admin [ a t ] ucptt.com