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