作者kuku321 (halipapon)
看板Tech_Job
标题Re: [讨论] 数学在工作上的实际应用?
时间Sun Mar 3 15:45:17 2019
※ 引述《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就会问你
【欸,为什麽男主角的光炮在这个关卡时会朝天空射而且颜色怪怪的?】
你就会满头黑人问号开始各种条件式跟矩阵运算抓漏。
现在新的演进是特效也要去受到周遭环境的物理影响,
可能要打上光影、随风吹拂、受雨干涉等等。
以上这些数学难吗?
企划跟你说他想丢手榴弹,你就写个算式去帮他跑起点终点路径速率爆炸范围,
拆开来看都不难,即使是物理模拟或光源计算等整理模型那些也都比传统数学简单不少。
问题在当不懂这些的人,突然一个天马行空的想法,
你要想办法帮他达成,还要兼顾硬体性能与画面表现,来偷工偷时间,
需要整合的数学和物理的背景知识量还是很重要的。
再来就是把问题定义清楚,然後开始整理参数跟求解的过程吧。
不过程式工程师的基础就是在做这工作,就不献丑赘述了。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 131.147.239.56
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Tech_Job/M.1551599119.A.8AA.html
※ 编辑: kuku321 (131.147.239.56), 03/03/2019 15:54:01
1F:推 IhateOGC: 热情真的很重要! 03/03 15:54
※ kuku321:转录至看板 GameDesign 03/03 15:55
2F:推 bird1140: 好赞!!! 03/03 15:55
3F:推 j0958322080: 是说计算光影是不是常常用到快速根号倒数演算法? 03/03 15:57
是
※ 编辑: kuku321 (131.147.239.56), 03/03/2019 16:02:06
4F:推 zxp9505007: 很有趣的工作 03/03 16:10
5F:→ willism: 外行人问个小问题,请问这是在现成游戏引擎(ex. Unity) 03/03 16:28
6F:→ willism: 下开发的吗,还是自建引擎? 03/03 16:28
都是自建引擎。
7F:推 j0958322080: 那那个演算法你是直接call还是也会去理解他怎麽计算 03/03 16:35
需要部分理解,因为可能需要对特定游戏或引擎再做专门的特化。
完整理解通常是技术研发部门的工作,会再开公司内部研讨会等分享。
8F:推 zhuzii: 哇 好酷哦 贵公司研发单位在台湾? 03/03 17:03
敝公司在日本有东京大阪两个点,海外研发部分主要还有美国、英国、中国分公司。
10F:推 ghost008: 这篇文章真的是这系列唯一的优文 03/03 18:44
※ 编辑: kuku321 (131.147.239.56), 03/03/2019 19:02:44
11F:推 a78998042a: 这高中数学物理做的起来? 03/03 19:35
数学物理的部分,如果只论单项深度的话应该有可能,
但是要讲课本内容有没有提到的话,应该不会有高中有办法全部涵盖的吧。
都需要额外去看延伸内容才有办法接触到的东西。
12F:推 what357159: 优文推推 03/03 19:53
※ 编辑: kuku321 (131.147.239.56), 03/03/2019 20:08:44
13F:→ apley: 推深度 03/03 20:56
14F:推 nhctcmouse: 我目前待游戏业 也是满常用到数学的 03/03 21:13
15F:推 Morphee: 这样年薪多少 03/03 22:33
新卒入社干2年多约400多。
其余福利补助零零总总加起来还行,
像是返乡1年1次机票+2天返乡假,若结婚则包含抚养亲属的份等等。
※ 编辑: kuku321 (131.147.239.56), 03/04/2019 00:10:28
16F:推 kunling: 推 03/04 01:13
17F:推 SeaSprite: 赞 03/04 04:38
18F:推 ppc: 酷 03/04 11:10
19F:推 lammin: 03/04 11:24
20F:推 locklose: 优文推 03/04 17:05
21F:推 locklose: 突然想起某为大大的工作心得:我们就是许愿池 03/04 17:07
22F:推 yenru: 其实高端的前端程式是非常需要数学的,游戏就是最好的例子 03/04 18:08
23F:→ yenru: ,否则写不出跟别人不一样的特效,或是执行效率就不会好 03/04 18:08
24F:推 ptt0211: 推优质 03/04 19:27
25F:推 s06yji3: 推 03/05 00:12
26F:推 meRscliche: 推 03/05 11:49
27F:推 xhung: 哇!!! 推 03/08 17:54
28F:推 LLika: 优质 03/09 08:55