Re: [討論] 數學在工作上的實際應用?

作者: kuku321 (halipapon)   2019-03-03 15:45:17
※ 引述《qmqmqm ()》之銘言:
: 從簡單的開始就好
: 代數, 排列組合, 費氏定理, 證明, 幾何, 三角, 根號, 微積分, 無窮
: 各位真的在分析決策工作上有實際應用到這些嗎?
: 還是用著人家弄好的GUI操作講故事, 最後看官位決定?
: 又, 證明這件事個人覺得很實用, 但有多少人適用這種推倒演繹概念進行討論
: 而不是講話大聲, 或至少來個貝氏的概念, 而不是以口水批鬥桶人來引導決策方向?
: 想探知真正用科學方式做事的比例與情況~
我是在遊戲業做MMORPG,數學幾乎天天在用。
不過跟跑模擬或分析所使用的那種數學不同,
大多是直接解幾何、三角、線代、機率、搭配物理相關內容使用吧。
說矩陣之類不算數學我是不太認同就是,因為我還是會常常卡關QQ
另外還有像是BRDF(Bidirectional reflectance distribution function),
最近幾年蠻流行的物理based的光影投射計算式等等也都是要用數學去算的。
尤其是遊戲跑的大多是要求以0.033秒或0.016秒內完成的實時計算,
不可能像皮克斯電影那樣CG渲染可以一個場景我就丟上去給他算個2週,那自然漂亮。
遊戲要選擇細緻模擬/試圖作假,是要針對硬體性能跟資源去設計的。
所以算式的簡略/偷工化,然後視硬體進化效能提升再去做整體演算經度真實性調整。
這些都是長期在跑的持續性演進過程。
另外個人大多負責的是【視覺特效VFX】相關的開發,
基本運用shader去改變畫面質感的post effect或是反鋸齒等等算是基本功(也不難)。
再來就是根據特效美術需求提供新的特效物件,
例如有天特效美術突然跟你說,他想要做光束,然後要很炫泡那種,想做BOSS的雷射炮。
而且還希望像魔物獵人那樣,這個光束炮可以受到物件影響,觸發碰撞判定爆炸等等。
首先要先想辦法做出一根螢光燈,
https://i.imgur.com/Qe6uzxY.gif
他不是單純的棒棒,而是要像燈塔般運用菲涅耳透鏡的方式來發光(調整透明度),
讓光線可以在與視線垂直時看得很清楚,平行時要淡化以防刺眼。
(無法使用普通的通用算式,因為完全平行時會變完全透明,所以需要魔改造算式。)
所以要去做例外處理的算式去微調整畫面表現。
https://i.imgur.com/78A7unb.png
當有了螢光燈,我們需要讓他可以跟物件碰撞。
先實驗最簡單的跟地面碰撞(y=0,法線(0.0f, 1.0f, 0.0f)的最基礎平面)。
在遊戲內所謂的碰撞,就是2個frame(兩禎的世界)之間,
我的計算主體是否有穿透特定目標物的表面。
這用簡單的向量計算即可完成。
但是整個遊戲世界有多少物件? 每個物件之間都還能互相碰撞?
而且碰撞表現要精細,不是只用點來計算,而是物件的每個表面平面都要互相交叉計算。
這些內容要在0.016秒內完成,而且這還只是物件碰撞,
其餘AI、骨架動作計算、天候、物理模擬、戰鬥數值、UI呈現等等等都還沒考慮,
這該如何取捨做出最佳解,效率高又能看起來漂亮就是最大的問題。
完成後就變成這樣。
https://i.imgur.com/qyON2eL.gif
順帶一提,觸發的爆炸特效又是另外一種特效物件XD
然後這樣就只是完成一種特效的物理表現的製作而已,
其餘還有材質貼圖的疊合等運算,讓同一種特效物件看起來是完全不同內容大量生產。
https://i.imgur.com/lGEJaPv.mp4
再來美術還會不斷提出各種新的想法來進化他,
也可能說希望讓這根雷射炮能呈現波型,所以想辦法把三角函數也導入等等。
這樣才終於算完成一項特效物件。
其他也可能看到電影,襪靠,這龍捲風好屌喔。
然後就傳一封MAIL來說XXX這部電影的龍捲風好屌,我希望能夠有類似特效物件。
我就要思考怎麼搞,怎麼整合並提供參數給美術,要導入哪個數學曲線公式等等。
就算導入既有公式,你工具做好給美術也不可能是寫成:
・x =
・y =
・z =
這種形式,他們只會滿頭問號。
所以要想辦法把數學整理過後,提供中途參數輸入的管道,像是:
・龍捲風的迴轉圈數
・龍捲風的半徑成長
・龍捲風的旋轉速率
之類的整合起來提供美術使用。
然後這還只是特效物件製作上的一部份內容,
你特效要綁在哪個特效產生器上噴射,特效產生器又要綁在那個角色身上吐,
那個角色又會飛天下海,一下晴天一下雨天,轉上轉下,
過一陣子QA就會問你
【欸,為什麼男主角的光炮在這個關卡時會朝天空射而且顏色怪怪的?】
你就會滿頭黑人問號開始各種條件式跟矩陣運算抓漏。
現在新的演進是特效也要去受到周遭環境的物理影響,
可能要打上光影、隨風吹拂、受雨干涉等等。
以上這些數學難嗎?
企劃跟你說他想丟手榴彈,你就寫個算式去幫他跑起點終點路徑速率爆炸範圍,
拆開來看都不難,即使是物理模擬或光源計算等整理模型那些也都比傳統數學簡單不少。
問題在當不懂這些的人,突然一個天馬行空的想法,
你要想辦法幫他達成,還要兼顧硬體性能與畫面表現,來偷工偷時間,
需要整合的數學和物理的背景知識量還是很重要的。
再來就是把問題定義清楚,然後開始整理參數跟求解的過程吧。
不過程式工程師的基礎就是在做這工作,就不獻醜贅述了。
作者: IhateOGC (我討厭)   2019-03-03 15:54:00
熱情真的很重要!
作者: bird1140 (牡羊座的鳥兒)   2019-03-03 15:55:00
好讚!!!
作者: j0958322080 (Tidus)   2019-03-03 15:57:00
是說計算光影是不是常常用到快速根號倒數演算法?
作者: zxp9505007 (阿C)   2019-03-03 16:10:00
很有趣的工作
作者: willism (hpc5)   2019-03-03 16:28:00
外行人問個小問題,請問這是在現成遊戲引擎(ex. Unity)下開發的嗎,還是自建引擎?
作者: j0958322080 (Tidus)   2019-03-03 16:35:00
那那個演算法你是直接call還是也會去理解他怎麼計算
作者: zhuzii (UsualMan)   2019-03-03 17:03:00
哇 好酷哦 貴公司研發單位在台灣?
作者: zhanren (Ethylene Propylene)   2019-03-03 17:29:00
作者: ghost008 (0080)   2019-03-03 18:44:00
這篇文章真的是這系列唯一的優文
作者: a78998042a (Benjimine)   2019-03-03 19:35:00
這高中數學物理做的起來?
作者: what357159 (silentkenny)   2019-03-03 19:53:00
優文推推
作者: apley (佛渡有緣人)   2019-03-03 20:56:00
推深度
作者: nhctcmouse (老鼠)   2019-03-03 21:13:00
我目前待遊戲業 也是滿常用到數學的
作者: Morphee (千磨萬擊還堅勁)   2019-03-03 22:33:00
這樣年薪多少
作者: kunling (Saddat)   2019-03-04 01:13:00
作者: SeaSprite (海雪碧)   2019-03-04 04:38:00
作者: ppc ( )   2019-03-04 11:10:00
作者: locklose (允)   2019-03-04 17:05:00
優文推突然想起某為大大的工作心得:我們就是許願池
作者: yenru (戴菲娜)   2019-03-04 18:08:00
其實高端的前端程式是非常需要數學的,遊戲就是最好的例子,否則寫不出跟別人不一樣的特效,或是執行效率就不會好
作者: ptt0211 (松城煙雲)   2019-03-04 19:27:00
推優質
作者: s06yji3 (阿南)   2019-03-05 00:12:00
作者: meRscliche (如此而已)   2019-03-05 11:49:00
作者: xhung (xhung)   2019-03-08 17:54:00
哇!!! 推
作者: LLika   2019-03-09 08:55:00
優質

Links booklink

Contact Us: admin [ a t ] ucptt.com