After Effects 相机内部
以下均为机翻
原文链接
克里斯·兹瓦尔
2014 年 5 月 19 日
After Effects 最强大的功能之一是能够使用 3D 图层和虚拟相机。虽然将相机添加到合成中并对其进行动画处理很简单,但通过对相机工作原理以及各种设置含义的基本技术了解,可以对最终结果进行更好的创意控制。
本文的目的是尝试弥合 After Effects 相机的创意和技术方面之间的一些差距。对于那些编写使用相机设置的脚本和表达式的人来说,它可能最有用。如果你想跳到最后,那么最后一页上有一些复制和粘贴表达式。
当您在任何图形应用程序中使用虚拟相机时(不仅仅是 After Effects),理解所使用的略有不同的术语可能会令人困惑。不幸的是,在某些情况下,不同的应用程序对同一事物使用不同的名称,因此首先我们将介绍相机的基本原理,然后我们将讨论它们应用于 After Effects 的方式。
背景 – 真实相机 101
在最基本的层面上,相机是将图像聚焦到表面上的镜头。最简单的相机类型是“暗箱”,它基本上是一个有孔的盒子。有一些著名的暗箱向公众开放的例子,最近荷兰艺术家维米尔使用暗箱来创作画作的理论受到了很多关注。
暗箱无法对其产生的图像进行任何控制,因此现代相机发明的最大进步之一就是引入了镜头来取代小孔。
镜头是我们对相机产生的图像最基本的控制。镜头精确控制整个场景的“捕捉”或记录的程度。选择镜头并描述给定镜头的属性是使用相机时最重要的部分之一。
本文的大部分内容是关于测量和控制相机镜头的,但是虽然列出所涉及的数学很容易,但解释镜头在使用相机时所具有的创造性重要性 要困难得多。 有许多资源可以解释不同镜头的性能,并且专业摄影师花费大量时间讨论和比较可能花费数万美元的现实世界镜头。
维基百科是一个很好的概述不同镜头对图像效果的地方,并且还有许多其他类似的资源专注于创意方面。
所以在我们深入研究之前,请相信我——镜头很重要。
理解——和误解——透视透视法
选择特定镜头有很多创造性的原因,但人们经常教授的关于镜头的一件事略有错误。
几乎在所有摄影教科书中,您都会找到一些关于长焦镜头如何压缩背景的陈述,或者广角镜头如何增加物体之间的视距离,或者类似的效果。无论该声明的措辞如何,通常都认为您选择的镜头将决定物体出现在一起的距离。
这并不完全正确。这也不是完全错误的,但镜头只是等式的一半。在制作相机动画时,理解这种误解非常重要。
如果用广角镜头和长焦镜头拍摄同一张照片,它们看起来确实会有所不同。正如教科书所说,长焦版本看起来会“更平坦”,并且物体看起来比广角版本中的距离更近。这种差异是选择镜头或制作镜头动画时的关键创意考虑因素之一。
这是 After Effects 的示例,其中 7 个矩形排列在 3d 空间中,每个矩形相距 200 像素。使用 3 种不同的相机镜头设置(24 毫米、50 毫米和 135 毫米)渲染出相同的构图。

您可以清楚地看到差异。这样看来,教科书上的说法是正确的——与中间的镜头相比,广角镜头增加了矩形之间的距离,而长焦镜头则将它们压平了。
那么如果效果是真实的,为什么教科书上会稍有错误呢?
答案是因为这不仅仅是镜头本身。这实际上是 相机到拍摄对象的距离不同 - 当镜头改变时,相机位置也会改变,以便取景保持不变。
如果我们考虑三个镜头——广角镜头、长焦镜头和中间的“普通”镜头——那么每次我们在这些镜头之间更换时,相机都会看到不同的结果。广角镜头将比“普通”镜头向我们展示更多的场景,而长焦镜头将向我们展示更少的场景。
但改变镜头会改变镜头的取景——而这并不是我们所说的我们正在做的事情。我们说过,我们将所有三个版本的取景都相同,为了做到这一点,我们需要移动相机以补偿不同的镜头。当我们使用广角镜头时,我们需要将相机向前移动,当我们使用长焦镜头时,我们需要向后移动相机。

场景的侧视图,显示 3 个摄像机位置和 7 个矩形。
当我们对场景进行构图以使三个镜头看起来相同时,我们的相机处于三个不同的位置。
导致照片看起来不同的是拍摄对象与相机位置的相对位置的差异,而不仅仅是镜头本身。
正如我之前所说,视角的差异是存在的,这是摄影师经常使用的工具。通过使用长焦镜头从远处拍摄两个很远的物体,可以使它们看起来更近。当演员的安全很重要时,这在电影中经常被利用。
例如,在电影《鲍芬格》中的高速公路场景中,导演弗兰克·奥兹需要营造出艾迪·墨菲被超速行驶的汽车包围的印象。通过使用强大的长焦镜头从很远的地方拍摄特写镜头和剖面图,汽车可以与墨菲保持安全距离,同时看起来非常接近。这意味着特写镜头和切角镜头可以在摄像机内拍摄,无需特技替身或额外昂贵的绿屏视觉效果。
镜头选择决定前景和背景物体如何出现的想法是如此普遍,以至于很容易忽视,实际上镜头选择和到相机的距离之间的关系才是重要的。
对于异常高或窄的构图,需要考虑从主题到相机的距离。如果在相机靠近场景的情况下使用更广角的镜头,则场景的两侧会出现扭曲和扭曲,因为它们比中间距离相机远得多。解决这个问题的方法是将相机移得更远,并使用宽度较小的镜头,这样画面边缘的物体与相机的距离与中心的物体的距离更相似。

衡量标准
大多数人都熟悉广角和长焦镜头以及允许操作者手动调整镜头的变焦镜头的概念。然而,除了这些简单的术语之外,专业人士还需要能够更精确地描述镜头。
虽然“广角”和“长焦”这两个术语被广泛使用,但还有两种技术方法可以用来精确描述和测量镜头的特性。
在传统摄影中,换句话说,当我们拥有真正的相机时,惯例是以毫米为单位来描述镜头,这是对第一个镜头元件与图像聚焦表面之间距离的测量。
因为我们指的是物理距离,所以这被称为镜头的 焦距。 您可能会看到描述为 50mm 镜头或 28mm 镜头的镜头——这就是焦距。50 毫米镜头意味着镜头距图像传感器 50 毫米,图像传感器现在是微芯片,但在过去是一条胶片。这是一个非常字面的术语。
出于本文的目的,我将使用术语“图像平面”来指代相机记录图像的点。如上所述,“图像平面”可以是相机中的胶片、宝丽来相机中的相纸、数码相机或手机中的 CCD,或者是旧金山桥暗箱中的墙壁。这基本上就是我们拍摄照片的焦点所在。
因此,镜头的焦距是从镜头到像平面的距离。
变焦镜头允许我们通过物理方式将镜头移得更远或更靠近图像平面来改变焦距。变焦镜头将按照其涵盖的最小到最大焦距进行描述,例如 28 – 80 毫米变焦。在这种情况下,镜头将在距离图像平面 28 毫米到 80 毫米之间进行物理滑动。这就是当您更改设置时变焦镜头会伸出的原因。

镜头距离像平面越近,图像越宽,换句话说,您看到的越多。
镜头距离越远,场景放大得越多。你看不到侧面那么多。望远镜是长焦镜头的极端版本。
因此,广角镜头的焦距较小,而长焦镜头的焦距较长。
这就是长焦镜头这么长的原因之一——当你看到体育摄影师甚至狗仔队拿着大长焦镜头时,这是因为玻璃镜头距离图像传感器太远——这些镜头的焦距非常长。
摄影师和摄影导演也将此作为一种行话——您经常会听到摄影指导说某些东西是“用长镜头拍摄的”。
光学极客演讲
一百多年来,摄影师一直很高兴地用焦距来描述他们的镜头。但当极客们参与进来并开始研究光学系统的科学和数学时,他们开始使用不同的系统。
数学家们不再用毫米为单位的焦距来描述镜头,而是更喜欢用度来描述镜头捕捉到的角度。这被称为视角或视野——大多数时候这些术语含义相同。
(在摄影中,视角始终以度为单位进行测量,但在某些特定的科学应用中,测量值可能会使用六十进制表示法列出——即分钟和秒的表示法,最常见的是与纬度和经度相关的。)
这是对镜头可以捕捉的场景角度的精确测量,就像通过镜头顶部的假想量角器进行测量一样。广角镜头会捕捉到较大的视角,因此具有较大的视角。长焦镜头的视角会更窄,因此视角会更小。
因此,当谈到描述相机的镜头时,我们已经有两种替代方法。摄影师以毫米为单位测量焦距,而数学家以度为单位测量镜头可以捕捉的角度,将其称为视角或视场。
术语混乱
想象一下我们只是用两种不同的方法来测量同一物体,并且将以毫米为单位的焦距转换为以度为单位的视角就像从摄氏温度转换为华氏温度一样简单,那就太好了。
不幸的是,这两种技术都不是那么简单,并且两种方法都涉及某种类型的歧义。那么让我们来看看这两种方法比看起来更复杂。
mm这样的问题怎么解决
当您通过焦距来描述镜头时,您正在记录一个非常字面的、真实的物理测量。50mm 镜头实际上距离像平面 50mm,在这方面不存在混淆或歧义。
这种方法的问题在于,相同的焦距对于不同尺寸的图像平面会产生 不同的结果 。同样的镜头,如果像面较小则可以认为是长焦镜头,如果像面较大则可以认为是广角镜头。
当摄影师过去使用胶片拍摄时,这不是问题,因为几乎每个地方的摄影师都使用相同尺寸的胶片(35 毫米)进行拍摄。35 毫米胶片是事实上的标准,唯一使用不同尺寸(例如 70 毫米中画幅胶片)的人是了解自己在做什么的专业人士。
因此,只要 35 毫米胶片是最流行的摄影格式,用毫米来描述镜头的焦距就非常有效,因为每个人都可以放心地假设焦距是相对于相同尺寸的图像平面而言的。
但如今摄影已由数码相机占据主导地位,并且所使用的图像传感器有许多不同的尺寸。有少数数码相机具有与 35mm 胶片相同尺寸的图像传感器,但通常有几种不同的尺寸可供选择,因此相同的镜头在不同的相机上会产生 不同的结果 。
这意味着仅靠焦距不足以描述镜头的表现,我们还需要像平面的大小来判断镜头是广角还是长焦。
这就是通过焦距描述镜头的问题:虽然以毫米为单位测量焦距可以为我们提供真实世界的测量结果,但我们不能单独使用焦距来预测镜头的性能,除非我们知道镜头的尺寸图像平面也是如此,这在不同的相机之间有所不同。
唯一的方法是向上、向下或穿过
通过测量视角来描述镜头似乎是一个更好的选择,但不幸的是这种方法也存在问题。
由于摄影镜头是圆形的,因此它们会生成圆形图像。无论镜头是鞋盒上的一个孔还是一块具有自动对焦和图像稳定功能的昂贵玻璃,它都会产生圆形图像。
如果我们生成圆形图像,那么通过视角来测量镜头就会很容易,因为圆形的定义属性之一是它在所有方向上具有相同的直径。无论我们以哪种方式测量圆,它都有相同的宽度——这相当于相同的视角。
问题在于照片、电影和电视节目一直都是以矩形的形式制作的。相机是否将图像记录到胶片、宝丽来相纸或数字图像传感器上并不重要——在所有现实情况下,从镜头中出来的圆形图像都会被裁剪成矩形。
许多不同的领域和学科都在使用许多不同的格式、尺寸和纵横比。即使我们只看电影和电视,也有几种不同的宽高比需要考虑 - 从最初的 1: 1.3 宽高比到当前的 Panavision 宽银幕宽高比 1: 2.39
当我们观察矩形而不是圆形时,例如电视使用的标准 16:9 宽高比,可以测量三个不同的轴作为“视角”——水平、垂直和对角线。
这意味着仅仅拥有“视角”并不足以了解镜头的性能,我们还需要知道测量是水平、垂直还是对角线。没有首选的通用标准——当我们有极端的纵横比时,它们之间的差异可能会非常大。数学家、计算机程序员、科学家和技术人员对测量视角的偏好各不相同,甚至计算机游戏中使用的不同 3D 引擎也使用不同的设置 — 有些是水平的,有些是对角线的。
这就是“视角”的问题——再一次,原始数字是不够的,我们还需要知道测量是水平、垂直还是对角线。当尝试将 After Effects 中的相机设置与其他应用程序中的相机设置进行匹配时,这直接相关。
这是传统
我们可以总结到目前为止的一切:
1)镜头是基本的创作工具。
2)镜头和相机位置之间的关系决定了镜头的构图。
- 镜头通过焦距(以毫米为单位)或视角(以度为单位)来测量。
- 在我们预测镜头的输出之前,这两种测量都需要额外的信息。
5)镜头的焦距以毫米为单位,但我们需要知道像平面的大小才能判断镜头是广角还是长焦。
6)视角以度为单位测量,但我们还需要知道测量是水平、垂直还是对角线。
与理解这些差异同样重要的是理解这些术语在整个摄影史上的使用方式。
直到最近,35 毫米胶片一直是静态摄影中使用的主要胶片格式。35 毫米胶片格式非常古老- 它于 1890 年代开发 - 并于 1909 年成为电影的官方标准。
虽然早期的电影摄影机将胶片垂直地穿过摄影机并记录长宽比为 1: 1.3 的图像,但胶片尺寸的流行意味着许多制造商尝试对其进行调整以用于静态相机。通过将胶片水平地而不是垂直地穿过相机,可以捕获比电影摄影机更大的图像。早在 1914 年,静态相机就已开发出来,可以将 36 毫米 x 24 毫米的图像尺寸捕获到 35 毫米宽的胶片上,但不同公司提供了许多不同的变体。
1925 年,徕卡发布了一款将 36 毫米 x 24 毫米图像尺寸记录到 35 毫米胶片上的相机,它变得非常受欢迎 - 到 20 世纪 50 年代,该尺寸已成为全球摄影师最流行的胶片格式。
从那时起,“35mm 摄影”一词就成为记录 36mm x 24mm 图像尺寸的代名词,并且至少 50 年来,这种格式已经如此普遍,以至于所有相机和摄影设备都被假定为用于 35mm 摄影,除非特别说明。这包括镜头。
由于摄影师假设每个人都在拍摄 35 毫米胶片并记录 36 毫米 x 24 毫米的图像尺寸,因此仅通过焦距来描述镜头,一代又一代的摄影师了解这些数字与他们制作的图像有何关系。
在某些时候,有人声称 50mm 镜头产生的图像与人眼所看到的图像(拍摄 35mm 胶片时)相匹配。这种说法已经被重复了很长时间,以至于它已经成为某种类型的摄影机构。如果你拿起一本关于摄影的书,那么它肯定就在里面的某个地方。
虽然 50 毫米镜头与人眼相当的想法并不正确,并且有很多关于该主题的网站文章和讨论,但 50 毫米镜头被认为是“标准”或“普通”镜头。这基本上意味着它不是广角镜头或长焦镜头,而是位于中间。这很正常。
50mm 镜头可以说是摄影基准。它是“正常”的简写。它被认为是所有其他镜头的起点或参考点。
50mm 镜头被视为“标准”,任何焦距较小的镜头都被视为广角镜头,任何焦距较大的镜头都被视为长焦镜头。随着时间的推移,特定焦距变得流行,并被认为是摄影师的主要工具。
35毫米和28毫米镜头是流行的广角镜头,而焦距在80至105毫米之间的镜头通常被称为“人像”镜头,因为它们很受拍摄人像的摄影师的欢迎。这也值得评论一下,因为很多摄影书籍都会声称,80-105毫米左右焦段的镜头很受人像摄影师的欢迎,因为它们使脸部稍微变平,使人看起来更有魅力。
这是我们之前看到的关于透视的同一主张的更具体版本,完整的解释再次与相机的位置有关。如果摄影师必须使用普通 50 毫米或更宽的镜头拍摄肖像,那么他们需要离拍摄对象非常近。这不仅让所有参与者感到不舒服,而且还可能导致光照和阴影的实际问题。如果摄影师使用比 105 毫米长得多的镜头,那么他们就必须距离拍摄对象几米远——这在小型工作室中是不可能的,即使是这样,也对亲密感没有什么帮助。使用焦距在 80 至 105 毫米之间的镜头意味着摄影师与拍摄对象之间的距离舒适且实用,因此很受欢迎。
确实,在相同的取景范围下,用 105mm 镜头拍摄的人像会比用 50mm 镜头拍摄的人像看起来“更平”,但拍摄对象的外观更漂亮,这只能说明较长镜头是首选的一半原因。400mm 镜头可能更讨人喜欢,但如果摄影师必须站在 10 米之外,它就没那么有用了。
当数值非常低时,镜头会产生独特的“鱼眼”效果,而当数值非常高时,相机就像望远镜一样——阿尔弗雷德·希区柯克在电影《后窗》中将这种效果用作叙事手段。
由于数码摄影已经超越了 35mm 胶片, 摄影师仍然会根据镜头与 35mm 胶片的表现来参考镜头 ,尽管数码图像传感器的尺寸可能有所不同。一些制造商会给出“转换系数”或“裁剪系数”,以便用于描述镜头的数字可以转换为 35mm 行业标准。
例如,佳能 APS-C 镜头的转换系数为 1.6。这意味着 APS-C 相机上的 31.25mm 镜头将产生与 35mm 相机上的 50mm 镜头相同的图像 (31.25 x 1.6 = 50),或者 APS-C 相机上的 50mm 镜头相当于 80mm 35mm 相机上的镜头 (50 x 1.6 = 80)。
After Effects – 进入虚拟世界
3D 图层和 After Effects 相机于 2001 年在版本 5 中引入。与现实世界的相机一样,After Effects 中的虚拟相机也配备了可以放大和缩小的虚拟“镜头”。

自 2001 年版本 5 以来,After Effects 相机已逐步改进并增加了一些额外的控件和设置。After Effects 中的各种参数直接与其现实世界中的等效参数相关,但虽然基本原理与现实世界摄影相同,但仍需要考虑一些重要因素。
首先,After Effects 使用像素进行操作。它不适用于毫米、英寸或米等测量单位。
其次,After Effects 遵循数十年的传统,使用 35mm 摄影作为镜头预设的参考。
在 After Effects 时间轴中,相机“镜头”由“缩放”参数控制,该参数以像素为单位。我们可以将变焦参数视为等效于焦距——较小的值使我们视野更宽,较大的值使我们能够放大。
然而,当我们进入相机设置时,我们还会看到预设镜头列表,按焦距(以毫米为单位)列出。选择这些预设之一会导致缩放参数设置为 After Effects 等效像素值。
After Effects 还向我们展示了等效视角(以度为单位)。我们可以指定测量是水平、垂直还是对角线进行。
After Effects 的早期版本没有明确解释与 35mm 摄影相关的镜头预设,但当前版本还允许您更改“胶片尺寸”,并指定不同单位的测量值。
即使您输入自定义胶片尺寸,只要您选择镜头预设,这些值就会变回 36 毫米 x 24 毫米——35 毫米胶片照片的尺寸。
如果您添加带有广角镜头的新相机,After Effects 会将相机放置在更靠近构图的位置;如果您添加带有长焦镜头的新相机,则新相机会放置在更远的位置。

但是,如果您打开现有相机的设置并选择不同的预设,则 After Effects 不会更改相机位置。这意味着您可以直接比较不同的镜头类型。因此,如果您已经添加了相机并使用了 50mm 预设,则更改相机设置将改变输出 - 35mm 预设将为您提供更宽的视野,而 200mm 预设将显着放大图像。
After Effects 相机设置
现在,我们可以了解相机设置的作用,以及 After Effects 如何使用不同的参数。
After Effects 以像素而不是毫米为单位测量镜头的焦距。
只要图层与相机的距离(以像素为单位)与镜头焦距相同,它就会显示为 100% 比例 - 换句话说,它看起来很正常。每次您在 After Effects 中创建新相机时,它都会自动将相机的 z 位置设置为与“缩放”相同。

随着图层远离相机,它们看起来更小。我们可以通过测量图层到相机的距离并将其计算为缩放的百分比来计算它们需要放大的量,以便它们看起来相同的大小 - 我们很快就会这样做。
温暖而模糊
After Effects 中的相机设置还包括景深控制。景深是指场景中有多少部分清晰可见,在 After Effects 中,可以根据需要打开或关闭该景深。

如果关闭景深设置,则一切都始终清晰。打开后,相机会“聚焦”在特定的距离(可以控制和设置动画),距离焦点越远,图层就会显得越模糊。
在现实世界中,景深是由镜头光圈的大小来控制的——说白了就是让光线进入的孔的大小。孔越大,景深越小——物体越少。焦点。当光圈很小时,景深就很大——换句话说,一切都在焦点上。摄影师以 F 值来测量光圈,大多数真实相机镜头的 F 值范围约为 F4 到 F22。超出这个范围——特别是对于较低的数字——镜头很快就会变得非常昂贵。幸运的是,软件中的虚拟相机可以轻松实现小于 1 的光圈值,这在现实生活中几乎是不可能的。
在现实世界中拍照时,摄影师的选择受到可用光线量的限制。在很多情况下,摄影师可能希望使用特定的光圈值来实现所需的景深,但根本没有足够的光线。摄影师必须平衡创意意图和技术要求,才能拍出真正有效的照片。换句话说,在现实世界中,如果摄影师设置错误,那么照片就不会出来——它可能太暗或太亮。
使用软件中的虚拟相机,不存在曝光和光线问题,因此可以设置光圈控制来创建所需的景深,而不必担心可用的光线量。
随着设置的调整,也更容易看到光圈的效果 - 因此通常可以拖动光圈设置并实时预览,直到您对结果感到满意为止。
在相机设置对话框中,After Effects 允许您将光圈指定为光圈值,但在时间轴中光圈以像素为单位列出。有一些公式可以根据镜头焦距和光圈计算景深,但它们超出了本文的范围。

但基本上——光圈越大,图像越模糊。
缩小规模,缩小规模,缩小规模
在许多应用程序中,无论图层位于 3D 空间中的何处,都可以使图层显示相同的大小。那么让我们看看图层的比例与相机的变焦和位置有何关系。我在这里使用的数字对应于 1920 x 1080 的合成,并想象我们已经创建了一个相同大小的实体并将其设为 3D 图层。它的 z 位置为 0。
当我们使用 50mm 镜头预设创建新相机时,After Effects 会将其转换为 2666.7 像素的“缩放”值。它还将相机定位为 az 值为 -2666.7 。因为我们的图层的 z 位置为 0,这意味着它距相机 2666.7 像素。因为这与缩放值相同,所以图层显示的大小完全相同 - 100%。

当 3D 图层与相机的距离与缩放值相同时,它将显示与 100% 的 2D 图层相同的大小。
如果我们将 3D 图层移得更远,它看起来会更小 – 这就是您所期望的!如果我们将图层的 z 位置设置为 3000,则它现在距相机 5666.7 像素 (2666.7 + 3000)。
如果我们将新距离除以缩放值,我们就可以得到缩放百分比形式的距离。
(5666.7 / 2666.7) * 100 = 212.49%
如果我们采用该值并将图层放大到 212.49%,则图层将再次填充合成并显示为全尺寸。
反之亦然。如果我们将图层移得更近 - 例如,z 位置为 -500,那么它现在距相机 2166.7 像素。这相当于缩放值的 81.25%,如果我们将图层缩放到 81.25%,那么它会再次显示为原始大小。
我们可以使用表达式动态计算比例百分比,这样我们就可以为图层和相机设置动画,而无需自己重新进行数学计算。
我们将从一个简单的示例开始,出于示例的目的,我们假设相机称为“相机 1”。
Campos=thisComp.layer(“相机1”).toWorld([0,0,0]);
Zoom=thisComp.layer(“相机1”).cameraOption.zoom;
lpos=thisLayer.toWorld(thisLayer.anchorPoint);
d=长度(campos,lpos); // 图层到相机的距离 //
scl=(d/缩放)*100;
[scl,scl,100]
您可以将此表达式剪切并粘贴到 3D 图层的缩放值中,无论相机距离多远,它始终会显示为缩放为 100%。
数学,数学,数学,这就是他们所想的一切
在 After Effects 中,相机设置对话框会向您显示您需要了解的所有内容,并为您完成所有计算和转换。然而,当您进入脚本和表达式时,了解如何自己进行这些转换可能会很有用。
存在三个相互关联的基本属性,任意两个都可以用来计算第三个:
– 变焦(焦距以像素为单位)
– 视角(以度为单位)
– 对角线大小(以像素为单位)
我之前指出,通过视角描述镜头的问题之一是您还需要知道正在测量哪个尺寸。当涉及到镜头和光学的数学时,会使用对角线。
我们可以使用毕达哥拉斯定理从构图的宽度和高度计算构图的对角线长度。这是高中教授的简单 C ^2^ =A ^2^ +B ^2公式,但我们可以在这里将其写为 After Effects 表达式:^
w=thisComp.宽度;
h=thisComp.height;
hyp=Math.sqrt((ww)+(hh));
正如我们在高中时所知,三角形对角边的术语是斜边,因此我使用了变量名称 hyp。
如果我们知道对角线的大小和视角,那么我们就可以计算出焦距。在 After Effects 中,焦距以像素为单位进行测量。我遇到过几次从 Maya 导入的摄像机的缩放值错误的情况,如果您知道 Maya 中摄像机的视角,那么您可以为 After Effects 计算正确的像素值。
由于 After Effects 使用 Javascript 进行表达式,因此我们必须注意度数和弧度的使用。使用相机时,视角以度为单位,但 Javascript 中的三角计算是使用弧度完成的。由于我们将使用正切和反正切函数,因此在进行数学计算之前,我们需要将视角转换为弧度。
作为示例,我们将计算 1920 x 1080 构图中 50mm 相机的变焦值(After Effects 中焦距的术语)。从相机设置对话框中我们知道,如果我们选择 50mm 镜头预设,则视角(对角线)为 44.9 度。
w=thisComp.宽度;
h=thisComp.height;
hyp=Math.sqrt((ww)+(hh));
aov=44.9;// 视角(以度为单位) //
rad=degsToRadians(aov/2); // 转换为弧度 //
缩放=hyp/(2*Math.tan(rad))
[飞涨]
如果您自己尝试一下,您会发现给定的缩放值为 2665.7,这与 After Effects 给您的默认值 2666.7 略有不同。这是由于较小的舍入误差造成的,因为 After Effects 只为我们提供了一位小数点后的视角。如果我们输入视角为 44.885 而不是 44.9,那么我们得到的结果是 2666.7。
我们还可以将 After Effects 中的缩放值转换为以度为单位的视角。如果我们已经在 After Effects 中创建了相机缩放设置并对其进行了动画处理,并且想要将数字转换到使用视角定义相机的不同应用程序(例如 Maya),那么这非常有用。
w=thisComp.宽度;
h=thisComp.height;
hyp=Math.sqrt((ww)+(hh));
缩放=2666.7;
aov=2Math.atan(hyp/(zoom2));
aov=radiansToDegrees(aov);
[aov]
如果您尝试此操作,您将看到给定的视角值为 44.885 度 - 比相机设置框中显示的 44.9 度更精确的值。
这也是一个很好的例子,说明了在表达式中使用角度和弧度是如何令人困惑的。在第一个示例中,我们从以度为单位描述的视角开始,因此在调用正切函数之前,我们必须将其转换为弧度。
然而,在第二个示例中,我们使用反正切函数,但我们输入的值不是以度为单位的测量值 - 它是斜边与焦距的比率。该比率不是以度数来测量的,因此无需将其转换为弧度。众所周知,混合度数和弧度通常是一件痛苦的事情,在这种情况下,我们必须确保我们不会得意忘形,并在不必要时进行转换。
最后,如果我们知道变焦值和视角,那么我们就可以计算出斜边的尺寸,或者构图的对角线尺寸。因为我们从以度为单位测量的视角开始,所以我们必须首先将值转换为弧度。
缩放=2666.7;
aov=44.885;
rad=度数转弧度(aov);
hyp=2缩放(Math.tan(rad/2));
[嗨]
规模化——凭感觉
前面我们列出了一个简单的表达式,用于计算将图层保持 100% 大小所需的比例,无论相机位于何处。
我们可以更新此表达式以考虑图层的比例,这样我们就不必假设图层为 100%。我们仍然可以向上或向下缩放图层,并且它会随着相机的移动而保持不变:
Campos=thisComp.layer(“相机1”).toWorld([0,0,0]); // 相机位置 //
Zoom=thisComp.layer(“相机1”).cameraOption.zoom; // 相机变焦 //
lpos=thisLayer.toWorld(thisLayer.anchorPoint); // 图层位置 //
lscl=thisLayer.transform.scale; // 图层比例 //
d=长度(campos,lpos); // 图层到相机的距离 //
xscl=lscl[0];yscl=lscl[1];zscl=lscl[2];
x=(d/缩放)*xscl;
y=(d/缩放)*yscl;
z=(d/缩放)*zscl;
[x,y,z]
如果将此表达式应用于 3D 图层的缩放属性,即使相机改变位置,它也将始终显示相同的大小。
兴趣表达
2001 年随 After Effects 版本 5 推出的虚拟相机具有与现实世界相机相同的所有品质,即使某些术语略有不同。
对于 After Effects 表达者、脚本编写者或只是好奇的人来说,需要了解一些基本知识才能更有效地使用相机。
– 相机设置对话框中的镜头预设与 35mm 摄影相关。50mm预设被认为是普通镜头。
– After Effects 将焦距称为“缩放”,并以像素为单位进行测量。
– 创建新相机时,After Effects 会自动定位新相机,使其与合成中心的距离与“缩放”值相同。
– 当图层与相机的距离与“缩放”量相同时,它将显示为 100% 的 2D 图层。
虚拟相机具有三个主要的定义属性——焦距、视角和图像平面的对角线尺寸——任意两个都可以用来计算第三个属性。
// 使用视角计算镜头的“变焦”(焦距) //
w=thisComp.宽度;
h=thisComp.height;
hyp=Math.sqrt((ww)+(hh));
aov=44.9;// 视角(以度为单位) //
rad=degsToRadians(aov/2); // 转换为弧度 //
缩放=hyp/(2*Math.tan(rad))
[飞涨]
// 根据相机的变焦值计算视角 //
w=thisComp.宽度;
h=thisComp.height;
hyp=Math.sqrt((ww)+(hh));
缩放=2666.7;
*// Zoom = thisComp.layer(“相机1”).cameraOption.zoom; *或者直接从相机获取值//
aov=2Math.atan(hyp/(zoom2));
aov=radiansToDegrees(aov);
[aov]
// 根据相机的变焦和视角计算图像位置的对角线尺寸 //
缩放=2666.7;
// Zoom = thisComp.layer(“相机1”).cameraOption.zoom; 或者直接从相机获取值 //
aov=44.885;
rad=度数转弧度(aov);
hyp=2缩放(Math.tan(rad/2));
[嗨]
// 自动缩放 3D 图层,使其始终显示相同的大小 //
// 假设活动相机称为“Camera 1” – 相应更改 //
Campos=thisComp.layer(“相机1”).toWorld([0,0,0]); // 相机位置 //
Zoom=thisComp.layer(“相机1”).cameraOption.zoom; // 相机变焦 //
lpos=thisLayer.toWorld(thisLayer.anchorPoint); // 图层位置 //
lscl=thisLayer.transform.scale; // 图层比例 //
d=长度(campos,lpos); // 图层到相机的距离 //
xscl=lscl[0];yscl=lscl[1];zscl=lscl[2];
x=(d/缩放)*xscl;
y=(d/缩放)*yscl;
z=(d/缩放)*zscl;
[x,y,z]


