找回密码
 立即注册
查看: 776|回复: 20

计算机图形学是不是计算机专业方向中对数学要求最高的?

[复制链接]
发表于 2021-8-3 20:27 | 显示全部楼层 |阅读模式
计算机图形学是不是计算机专业方向中对数学要求最高的?
发表于 2021-8-3 20:28 | 显示全部楼层
是不是对数学要求最高还不敢说,但计算机图形学肯定是需要很多数理知识以及综合能力的一个方向。

计算机图形学可以说是一门用计算机生成图形图像的学科,传统图形学致力于生成可被传统显示器显示的二维图像,也就是三维世界的二维投影。那么要做到这一点,首先需要构建三维世界的表示方法(representation)以及其相关操作,这需要基础的立体几何投影几何知识。


有了三维世界的representation,接下来就可以构建物体了,于是就有了传统计算机图形学的三大研究方向:几何(Geometry)渲染(Rendering)动画(Animation)

物体是什么形状?如何既省空间又精确地表示这个形状?如何从零起步为我心中所想的一个形状建模?如何编辑现有的形状让他符合我的要求与目的?这是几何(主要包括Geometry Processing, Geometric Modeling)要解决的问题。于是你需要Computational Geometry来解决基本的几何问题,比如找一个点集的convex hull、如何判断两个几何体有没有相交等。你还需要Differential Geometry(所以也就还包括Vector Calculus)来描述几何体的微分性质。有了对几何体基本属性的描述和运算工具,接下来你就能把一些编辑处理操作formulate成一个Optimization(所以也就还包括Numerical Linear AlgebraGraph Theory,甚至Calculus of Variation)问题来解决了。但有时候几何体可能过于复杂,传统的算法有可能出现不work的情况,这时候可能就得动用Topology的知识了。


物体的形状确定好后,它身上的每一点又应该是什么颜色呢?这就是渲染要解决的问题。真实世界中物体的颜色是由其材质和光照决定的,所以几何光学是必不可少的。由于最终你是想确定图像上每一个像素点的颜色,那么这其实也可以看成是一个采样的过程,所以信号处理以及概率统计知识也是需要的。


形状和颜色都确定好后,一幅优美的CG图就能生成了。接下来就是让它们能够运动起来了。这里我们可以把物体大致分为三类:固体(rigid、deformable)角色(articulated and deformable)流体(无固定形态)。为了让动画看起来真实,你需要用力学运动学知识去描述、规范他们的运动。对于角色,控制理论(所以也就还包括随机过程)、Biomechanics也是需要的。流体的话,那就是Fluid Mechanics了(所以也就还包括Differential EquationsNumerical Analysis)。


最近的计算机图形学研究方向有所向外扩张。例如图像的拍摄和显示技术,也就是计算成像(Computational Imaging and Display),这又需要物理光学的知识。再比如3D打印,不再局限于生成图像,也能生成实体,这又需要一些材料学的知识。以及最近炒得火热的增强现实,要想增强现实,首先理解现实!所以需要计算机视觉,致力于高层次处理照片的Computational Photography也是如此。另外,虽说目前很火的机器学习是解决inverse problem的有利工具,不过其在图形学这个主要以数学建模驱动来解决正向问题的领域中也偶尔会被用到。比较多的是以example based或者说data-driven approaches的形式来方便艺术家们的创作,以及用来通过precomputed database做算法的在线加速。其实图形学中也有inverse problem,那就是近来Geometry方向的研究热点之一:Shape Analysis。有关用机器学习方法来做图形学研究的实例可参考计算机图形学与机器学习(深度学习)怎么结合起来? - 李旻辰的回答

当然,没有人精通上述所有的领域和知识,也没这个必要。研究人员通常只是精通和擅长某个子方向甚至某一类问题或一类解决问题的框架;工程师也类似,不过在深度要求上会轻松很多,在编程及其他计算机技术上更为扎实;艺术家的话,抱歉你可能白看了这么久了,这些基本都不太需要,你只需熟练掌握工具软件,偶尔反馈些用户体验给工程师或者提出一些难题给研究人员,然后尽情发挥你们的创造力让这一切变得有意义吧!

注:图片均来自网络,不作任何商业用途。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-8-3 20:30 | 显示全部楼层
Programming 里需要的所谓「数学」能力,和我们从初中到大学谈论的数学能力不是一回事。我更倾向于把 programming 需要的能力叫做 encoding 能力。
什么叫 encoding 能力呢?比如说一个公式,写在黑板上可能初中生都能理解。现在需要把这个公式分成两部分,一部分写在 C++ 里,一部分写在 GPU shader 里。两个之间的交互不是相在黑板上用符号一连,而是需要用一个二维数组(就是 bitmap,或者说 GPU 的 texture)。
现在一个系统可能要三四个这样的公式配合。这三四个公式写到黑板上就是大括号一括而已。写到代码里就要分到三四个文件里。这是对你分层能力,符号变换和短期记忆的惊人考验。但是和我们上学时候说的数学能力关系不大。
有人评论里问怎么训练。这是个好问题,也是我以前想得比较少的方面(以前只是觉得下到苦功夫就能 figure out)。现在总结一下:
第一是要让程序的结构尽可能清晰。Keep it simple and stupid. 不要急着加优化。不要急着避免重复计算。需要公式的地方就用过程代码 on-the-fly 算一遍。整个过程正确之后再整体考虑优化。第二是想好清晰可验证的重构步骤。如果你需要把两个新公式加到代码里,要构思好可不可以分成两步,甚至更多步,而且每一步都是可以从外部结果进行验证。这也许类似于设计复杂的物理实验。第三是 don't duplicate yourself。需要依赖相同数据的代码,就要从 one single truth 取数据。需要依赖相同逻辑的地方,就要调用一个函数。有时候你觉得「这里也是除 3 那里也是除 3,我就赶紧在两个地方都写 『/3 』 就行了」。这种 debt 多了你就破产了。
发表于 2021-8-3 20:38 | 显示全部楼层
感觉我作为一个本科学数学心灰意冷,转到同校计算机图形学方向混吃等死的案例,很适合回答这个问题。
计算机图形学对数学的要求可以分子方向继续来考虑
1、渲染,渲染无论是离线还是实时,对数学的要求也只限于基础的立体几何投影几何知识,到渲染方程这一级,所需要的数学知识也只是数学专业本科就能学习到的基础微积分+线性代数+数理统计。
2、几何,几何这一部分对数学就有进一步的要求了。一部分是,几何属性需要的数学拓扑学知识;另一部分是,微分方程求解部分的计算数学知识。
3、物理,物理严格意义不属于计算机图形学,计算机图形学涵盖的物理,一般指代的是实时渲染&物理仿真结合的部分。这一部分需要的其实是动力学和流体力学的知识,在其上进行一个数值模拟的微分方程求解。
4、虚拟人物,虚拟人物的动作、运动、动画模拟其实一般也被归类于计算机图形学之中。这一部分的数学知识和2、3范围相当
5、另外,计算机图形学最近些年的一些其他方向,如计算成像、材质恢复等等,对数学的要求大体上也就仅限于基础微积分+线性代数+数理统计+数值求解四大件范围里
综上所示,计算机图形学是不是计算机专业方向中对数学要求最高的?显然不是。
计算机专业方向对数学要求最高的,应该是搞密码&编码相关的方向。大部分人之所以会有计算机图形学是计算机专业方向中对数学要求最高的这个错误认知,一般来说就是因为自己线性代数没学好,所以过于推崇看起来很数学的线性代数。
另外对某大V说的CV用到数学显著高于CG的观点不置可否,在我看来CV&CG用到的数学都是一个大Level下的菜鸡互啄。
发表于 2021-8-3 20:45 | 显示全部楼层
应该说研究理论计算机科学或者是复杂度理论的,是当之无愧的第一数学要求。
因为这个是研究计算本身,或者说什么能算,什么不能算。
其本质就是在探索数学和计算的边界
其他的话大家半斤八两吧。
但是图形学对数学要求应该是最杂的。
因为图形学的很大一部分是模拟,模拟的本质是对任何学科的各种现象进行重现。
搞实时的就不用说了,基本都是hack,边还没摸到呢。
搞离线的,其实很大程度上是拿其他学科的结论,通过数学方法求解,然后进行模拟。
其用到的数学知识,可以说是没有边界限制的。
至于具体有些什么例子,参考靠谱答案 @李旻辰 的回答。
至于有些答题者,连研究都没做过,连cs theory的训练都没有,不是说嘲讽你,工程能力再强也还是贻笑大方。
发表于 2021-8-3 20:49 | 显示全部楼层
什么叫数学要求高?
是说求解这个问题需要很很聪明的头脑,精妙的构造和复杂的过程?
还是说需要用到的数学背景知识是更high level的?


我怕是这个问题打口水战全都集中在不明确这个的争议上面了吧。


有的问题虽然只用到了非常初等的数学知识,但是其求解的过程用到非常精妙的构思、复杂的过程,如果没有足够的智商肯定想不出来,这种算不算对数学要求高?
有的问题的求解非常的简单,只简单的应用了某个定理就结束。但是这个定理确实非常非常high level的数学领域里才会涉及到的。这算不算对数学要求高?


数学研究的核心其实就在于建立研究问题的抽象框架,越来越high level其实就是抽象度越来越高。有的问题你用初等的方法也可以做,但是会很复杂,在高等的框架下就会很清晰;有的问题你用初等的玩意儿就是搞不了,必须要用高等的,甚至是全新的抽象。
用非常精妙的方法求解一个积分,很难,很有技巧,也需要足够的聪明才能想出来。
但是它在数学上有什么很深的东西吗?没有。


所以按照我的理解,我更倾向于把数学要求高解释为后者。而前者,我更愿意将他表达为对智力的要求高。
发表于 2021-8-3 20:56 | 显示全部楼层
计算机图形学难道不是数学专业方向中对计算机要求最高的?(滑稽)
发表于 2021-8-3 20:56 | 显示全部楼层
本来搞数学的就瞧不上我们做AI,图像,  模式识别,CV的,结果你这么暴露水平的一问,搞得人家更瞧不起我们了…
发表于 2021-8-3 21:00 | 显示全部楼层
看了好多回答,都默认忽略了一个方向-网络与系统,这才是数学最少的方向!
发表于 2021-8-3 21:08 | 显示全部楼层
随便说一个兄弟方向,计算机视觉,对数学的要求都比计算机图形的高。所以。。。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 02:22 , Processed in 0.095571 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表