拿好你的爆米花,挑个好座位,舒舒服服地坐好,好戏要开始了……

有请数学闪亮登场

我们都惊叹于电影中计算机生成的难以置信的逼真图像。但是大多数人没有意识到的是:《侏罗纪公园》的恐龙和《指环王》(尤其是其中古鲁姆的出场)的神奇画面,如果没有数学,就不可能出现。但是这些惊人的图像是如何制作的?计算机图形学和计算机视觉是一门庞大的学科,在这篇文章中,我们将简单地看一下得到电影成品所需要的一些数学知识。首先,我们将创造电影中所看到的世界,然后把它变成现实。

设定场景

以猴子模型为例,其表面的建模是由简单多边形(如三角形)组成的线骨架。

用电脑制作电影的第一步是创造故事中的人物和他们生活的世界。这里的每一个对象都需要建模,模型的曲面是由连接的多边形(通常是三角形)组成的,三角形的顶点存储在计算机中。根据三角形判断曲面的内外面是很重要的。模型的这些信息按照顶点存储的顺序进行编码,可以根据右手螺旋法则判断其顺序:右手的手指按照顶点给定的顺序绕三角形卷曲,你的大拇指会落在三角形的一边——那一边就是外面。如果你用下面这个例子来尝试,你会发现三角形(A,B,C)的向外方向(称为向外法线)与(A,C,B)的方向相反。

用右手螺旋法则可以发现:(A,B,C)的外法线与(A,C,B)的方向相反

现在,物体表面是一个由三角形组成的丝网,之后可以准备给它的每个部件上色了。这部分需要真实地捕捉模型所在场景的灯光,这是通过一个称为光线追踪的过程来完成的。从我们的视角出发,将光线反向传播到物体上,再经由物体反射,如果光线与一个光源相交的话,此部分就用明亮的颜色来涂染,使这部分看起来明亮。如果反射的光线没有与光源相交,则用较暗的颜色来刻画这部分曲面。

从你的视点追踪光线到一个面,它是否反射并与光源相交?

要将光线追溯到一个特定的面,我们需要用数学来描述曲面,并求解包含光线和由该面描述的平面的几何方程,这一步可以通过向量来完成。将场景放到三维坐标系中,我们的视角在原点 ( ) 上,向量 表示从原点开始到坐标为 、 和 位置结束的箭头。我们可以把 乘以一个数字,比方说数字2,根据规则:

所以 代表向量方向不变,但长度拉长两倍的效果。

现在看表达式 ,其中 是一个变量,换句话说就是任何实数。由于代表长度的 是变量,因此这个向量长度不定,但是方向一定。换句话说,这个表达式表示的是包含向量 的直线,这条直线(或者说光线)从原点(即我们的视角)沿着向量 给定的方向发出。

三角形定义的平面可以用三条信息表示:其中一个顶点(不妨称之为顶点 )的位置,以及从 到顶点 的向量、从 到顶点 的向量

下面的方框给出了从我们的眼睛开始的光线方程和由一个三角面给出的平面方程。为了找出光线与平面是否相交、在哪里相交,以及计算反射光线的方程,我们需要求解包含这两个表达式的方程。

光线方程,其中 是实数, 是向量:

由顶点 , , 定义的平面方程:

(具体的求解过程这里不再详细展开,感兴趣的可以戳→这。)

光线追踪可以生成逼真的场景,但速度非常慢。当然,这对于计算机来说是可以接受的,但是当你需要实时改变灯光时,比如在电脑游戏光的改变,这个问题就变得复杂起来了。复杂一点的现象,如阴影焦散多次反射很难动态建模,这里要用到更复杂的数学方法,例如预计算辐射传输( precomputed radiance transfer,PRT)和辐射度算法(Radiosity)。

像《毁灭战士3》和《无冬之夜》这样的电脑游戏就需要动态光线

只需要一点简单的想象力

一旦场景设置好,灯光打好,我们只需要等导演大喊“Action!”,角色就可以动起来了。现在我们来看看数学是怎么让这些图像活灵活现的。

一个物体能做的最基本的运动之一就是绕着一个给定的轴,旋转一定的角度。坐标几何为我们提供了许多求解物体旋转后每个点的位置的工具,但重要的是这些方法的效率和速度。

为了了解这些方法,让我们从基础开始讲起。我们知道 有两个平方根: 和 , 。但是 的平方根是多少?为了求解负数的平方根,数学家引入了新的数字,叫做 ,其中 ,因此 ( ) ,我们发现 。

的引入意味着类似 这样的方程现在可以求解了。而被称为复数有着 这样形式的数字,也成为数学中的一个重要工具。虽然仍然有很多人对这个奇怪的假想数字 并不满意。(更多关于复数的介绍可以看这和这)

1806年,业余数学家让·罗贝尔·阿尔冈给出了复数和 的几何解释。阿尔冈将复数与平面上的点关联起来,实数 位于一个轴上,虚数 位于另一个轴上。例如,数字 对应于点(1,1)。一般来说,复数 对应于点(a,b)。

复数乘法有一个几何描述——旋转。

阿尔冈意识到复数的乘法有一个几何描述:旋转。让我们看看如果我们用 (由点(1,1)表示)乘以 发生什么:

它代表点(-1,1),即(1,1)(逆时针)旋转90度。

再将(   )再乘以 ,

代表 ,即再次(逆时针)旋转了 90 度。

乘以 是(逆时针)旋转90度的指令!事实上,任何旋转,不仅仅是90度旋转,都可以用复数相乘来实现。

延伸到 3D

数学家威廉·卢云·哈密顿爵士也许是都柏林三一学院最著名的毕业生。他一生的最后二十年致力于寻找一种表示三维旋转的方法,这种方法类似于复数可以表示二维的旋转。

布伦桥上的纪念牌匾,哈密顿爵士正是在这座桥下散步时发现了四元数

在他生命的最后,哈密顿发现了答案,一种他称之为四元数的形式。

其中 , 是实数。

类比复数的操作,我们可以用几何来描述四元数并用它们来表示旋转。但这次不是二维空间的旋转,而是三维空间的旋转。

为此, 、 和 表示三维空间中的基本平面:即 表示 平面, 表示 平面, 表示 平面,它们的向外法线分别在 x,-y  和 z 方向。

和 可以被几何解释为三维空间的基本平面。

假设我们希望将点 ( ) ,绕从原点开始的向量 ( ) 旋转角 ,我们利用这个向量和角构造两个四元数 :

然后我们可以用这两个四元数乘以 (表示为 、 和 方向上的单位向量的组合)得出:

结果证明,这个乘法得到的点 正是向量 绕着给定的轴旋转角度 得到的点!所以就像复数可以用来描述平面上的旋转,四元数也可以用来描述三维空间中的旋转。

哈密顿在都柏林的桥上想出来的才华横溢的想法,虽然被证明是旋转三维物体的最有效方法,并没有得到所有人的认可。

开尔文勋爵、物理学家威廉·汤姆森在谈到四元数时说:“……虽然这个方法精巧绝伦,但对那些真正用到他们的人来说,可以说是‘一种不折不扣的邪恶’!”

尤其让人担心的是,当你把两个四元数相乘时,相乘的顺序会影响到答案,它们具有“非交换性”的性质。例如,从哈密顿的乘法规则可以看出 和 。当我们把 , 和 当作元素平面时,汤姆森和同时代的人们担心他们的数学运算性质会出现问题。

使图像栩栩如生

现在许多的图形应用程序图像的移动都用到了哈密顿的发明。计算机图形学中最重要的两个工具是变形插值插值关键帧技术涉及到指定对象的初始和结束形状和位置,并让计算机计算出中间的阶段,如下图所示。

茶壶的形状在一系列框架下逐渐变化。

这是一个最基础的蛇的动画(由Richard Wareham创建),其中整条蛇是由计算机通过几个指定点的移动插值来创建的变形是从简单对象创建复杂对象的一种方法,可以通过数学处理普通球体的场景来得出下面这样的布料落在变形球体的场景。变形和插值都需要快速和稳定的数学技术,而四元数相关的方法正好提供了这些技术。

一块布落在圆球上可以用物理定律来模拟

然后操纵一块布掉到一个变形的球体上。

让古鲁姆看起来更真实

以上所述的技术是经典动画必不可少的工具,其对于创建动画人物的效果也是很令人满意的。但是,当我们用它来制作涉及到人类的动画时,我们可以立刻发现它的不真实性。要创建逼真的运动,运动捕捉是必要的。

很多角色,比如电影版《指环王》中的古鲁姆,都是用动作捕捉来塑造的。这是通过在真实的人身上的关键点(头、肩、肘、膝等)安装传感器来实现的。

古鲁姆的动作捕捉  来源:youtube

多个镜头对个体进行拍摄,传感器将位置变化存储在计算机上。将骨架拟合到三维数据中,然后将以上所述的所有信息都被当做是细节放到骨架上,从而创造出一个活生生的、呼吸的、移动的角色。

从附在身体不同部位的传感器上获得数据,并在数学上对数据进行了骨架动作拟合。

如果你坚持看完过整个电影演职员表,你会发现,一部成功的电影需要各种各样的创造性才能:作家、导演、演员、服装设计师、道具设计师等等。但是有一个名字经常会被忽略掉——数学。如果没有光线追踪的几何学或者四元数在三维空间的旋转,今天的许多电影都是不可能实现的。所以下次当你坐在电影院的座位上欣赏CG(计算机图形学)产生的奇观的时候,可以为这个节目的隐藏明星——数学,鼓掌。

注:古鲁姆为《指环王》中的角色

作者:Joan Lasenby

翻译:Nuor

审校:Dannis

原文链接:

https://plus.maths.org/content/maths-goes-movies

编辑:aki

我们是谁:

MatheMagician,中文“数学魔术师”,原指用数学设计魔术的魔术师和数学家。既取其用数学来变魔术的本义,也取像魔术一样玩数学的意思。文章内容涵盖互联网,计算机,统计,算法,NLP等前沿的数学及应用领域;也包括魔术思想,流程鉴等魔术内容;以及结合二者的数学魔术分享,还有一些思辨性的谈天说地的随笔。希望你能和我一起,既能感性思考又保持理性思维,享受人生乐趣。欢迎扫码关注和在文末或公众号留言与我交流!

扫描二维码

关注更多精彩

每一个魔术,都应该是一场直播的微电影!

一次刨根问底的收获——从一道微积分题说开去

序列周期性与魔术(六)——魔术欣赏与解析续集

《猫和老鼠》里的魔术艺术(五)——一定要合理!

扔硬币中的思考——隐含变量建模点击阅读原文,往期精彩不错过!

隐藏在电影背后的神秘力量,竟然是 ta!!!相关推荐

  1. 魔兽世界服务器显示新,《魔兽世界》怀旧服再开新服,背后的原因竟然是!

    原标题:<魔兽世界>怀旧服再开新服,背后的原因竟然是! <魔兽世界>怀旧服宣布加开一组全新PVP服务器"维克托".到了2月13日,官方继儿又宣布开放了两组新 ...

  2. 9资源)《网络心理学:隐藏在现象背后的行为设计真相》pdf下载

    <网络心理学:隐藏在现象背后的行为设计真相>pdf下载请到文末,仅供学习使用! 榜腊说 这一点也在妆饰的起源中曾经提到过.因为旧石器时代的人类以采 集和狩猎为主要生产.生活活动,所以狩猎在 ...

  3. 如何把代码隐藏在图片背后

    隐藏代码到图片背后 前言 原理 应用 思考 前言 很多时候在新闻上看到黑客将恶意代码隐藏到图片背后,这种技术早已不是什么密码,今天来窥探一下背后的技术原理. 原理 大家都知道图片是由一个个像素点组成的 ...

  4. 《寒战》看完整部电影的最大感觉竟然是没看懂

    自己向来是不喜欢唱赞歌的所以,作为警匪片.即便<寒战>现在几乎是一边倒的赞美之声,也不会随声附和,只能写下自己的真实观感.先说好的方面,影片的制作确实非常认真,局面很大,剑拔弩张的气氛坚持 ...

  5. DPad down是哪个键_视频剪辑软件哪个好用 短视频博主亲测好用的竟然是TA!

    原标题:视频剪辑软件哪个好用 短视频博主亲测好用的竟然是TA! 作为一个追剧小能手,我最喜欢的事情就是给自己喜欢的CP剪小视频,这两年B站短视频区崛起,我又开始慢慢转型为vlog博主,记录自己日常生活 ...

  6. 如何检测隐藏在Magisk背后的ROOT及外挂

    Magisk 是继 SuperSu 之后最好用的 Root 工具,除了提供Root功能,另外的厉害之处在于,可对Root和自身都进行隐藏.使得应用检测不到ROOT,而且也检测不到Magisk的存在. ...

  7. Windows 隐藏小电影?

    你知道吗?咱们平时使用的Windows隐藏了一个小电影哦!想看吗?这是一部ASCII版<星球大战>,和你之前看的剧情是完全一样的但是不得不说这个版本更惊喜.想看吗?打开你的电脑输入:tel ...

  8. AI还原历史真相,背后的原理竟然这么简单!

    要说今年哪项AI技术火,我告诉你,那就是AI修复技术.老照片往往记录着童年.青春的美好瞬间.但是伴随着岁月的流逝,照片变得模糊泛黄,而有一项技术则可以完美的将图片"上色". 01 ...

  9. 科技战疫——战疫背后的神秘力量

    2月22日-8新增-- 2月24日-13新增-- 2月27日-36新增-- 3月1日-25新增-- 3月3日-22新增-- 3月5日-17新增-- 3月7日-13新增-- 3月8日-6新增-- 202 ...

最新文章

  1. 华为路由器ospf路由表解读_华为动态路由OSPF实例详解之多区域配置-华为路由器设置...
  2. cuda nvcc dll
  3. Linux学习笔记(一)|目录结构
  4. cae计算机仿真分析技术,厉害了 揭秘汽车设计中CAE仿真技术
  5. ASP.NET 之 MVC框架及搭建
  6. 流传在程序员中的传说,你知道几个?
  7. 过去几年的互联网经济,首先是“免费经济”
  8. 泛微OA项目引入jar包说明
  9. ISO14443 PICC 与 PCD 调制解调方式
  10. 跟我一起玩Win32开发(18):使用对话框的两个技巧
  11. 深入理解DRM(三)——MediaDRM和MediaCrypto
  12. Ubuntu22.04安装Arduino IDE及Arduino UNO(使用CH341驱动)调试方法
  13. android js 弹窗,Android原生代码拦截H5 Web页面中JavaScript弹窗/弹框
  14. Word技巧和快捷键
  15. msr830路由器配置虚拟服务器,华三MSR系列路由器(V7)平台家庭宽带配置IPV6
  16. axios爬坑之provisional headers are shown
  17. SpringCloud这35问,弄懂了面试官都不得不夸你一句
  18. 【架构风格】架构风格演进和领域架构分类
  19. 2015英语命题规律
  20. 双服务器架构实战飞桨部署-自动上色和老相片修复

热门文章

  1. Python日志管理工具:logging、logbook、Eliot、Raven和Sentry
  2. SpringBoot集成Redisson
  3. FPGA — Vivado下ILA(逻辑分析仪)详细使用方法
  4. 渲染农场优势是什么_云渲染农场怎么用?
  5. 树莓派(Linux)添加USB外接硬盘
  6. k8s资源管理命令与Namespace使用详解
  7. #早安,努力#11.16
  8. 网络编程-----未完结
  9. win10一键关闭所有进程
  10. 第十四届蓝桥杯(Web 应用开发)模拟赛 3 期-职业院校组题解