等距投影在AE脚本中的实现原理
AE脚本-伪三维等距厚度拉伸立体投影效果 Volume n Tricks 2 v1.1.1
当你第一次听说After Effects脚本能做出等距投影效果时,是不是和我一样,心里打了个问号?AE不是个二维半的合成软件吗?它哪来的“真正”三维空间?这个疑问,恰恰是理解等距投影脚本实现原理的绝佳起点。

核心:一场精心策划的“视觉欺骗”
最根本的一点是,AE脚本实现的等距投影,并非在三维引擎里进行真实的光线追踪计算。它更像一位手法高超的魔术师,利用纯粹的数学变换,在二维平面上“画”出三维的错觉。其核心原理,根植于一种叫做轴测投影的制图方法,而等距投影是其中最规整、最常用的一种。
想象一下,有一个标准的XYZ三维坐标系。等距投影规定,三条坐标轴在投影平面上的夹角彼此都是120度。这个固定的角度关系,就是整个“魔术”的基石。脚本要做的事情,就是把你在AE图层中定义的“厚度”、“深度”信息,通过一套预设的数学矩阵,映射到这个120度的规则世界里。
脚本在后台默默执行的数学体操
当你使用脚本为一个矩形添加“挤出”厚度时,背后大概发生了这么几件事:
- 顶点坐标变换:脚本会读取图层路径的原始顶点坐标(比如一个矩形的四个角)。然后,它根据你设定的“深度”值,在Z轴方向虚拟地复制出另一组顶点。接着,一个关键的等距投影变换矩阵会作用到所有这些三维顶点上。这个矩阵的运算,本质就是把倾斜的、有透视的空间,压扁成一个角度固定、无灭点的平行投影图。
- 面的构建与排序:连接原始顶点和复制后的顶点,脚本在逻辑上构建出了立方体的“侧面”。这里有一个容易被忽略但至关重要的步骤:深度排序。为了让遮挡关系正确(前面的面盖住后面的面),脚本必须根据变换后的坐标,计算出哪个面应该在前,哪个面应该在后面。在真正的3D软件里,这是渲染引擎的活儿;在脚本里,这得靠程序员写的逻辑来判断。
- 路径重绘与父级关联:计算好的新顶点坐标,最终被转换回AE能理解的图层路径数据。那些“侧面”通常会被生成为新的形状图层路径。而为了实现整体移动或旋转,脚本往往会巧妙地运用AE的父级链接功能,将生成的所有面链接到一个空对象或原始图层上,这样你动一个控制层,整个等距物体就能联动。
“伪3D”的局限与巧妙利用
明白了这个原理,你就能看穿它的“把戏”,也更能理解它的边界。因为它不是真3D,所以光线和阴影是死的,需要脚本额外模拟。这也是为什么很多高级的等距投影脚本会内置一套“投影”系统,根据假想的光源方向,用渐变或形状层来绘制阴影,而不是依赖AE的内置灯光。
但换个角度看,这种“伪3D”恰恰是它的优势。由于输出结果是纯粹的二维路径和颜色信息,它极度轻量,与Lottie这类基于矢量的动画格式是天作之合。你得到的是一个数学公式驱动的、可无限缩放而不会模糊的“立体图形”,这在UI动效和图标动画领域,比一段实打实的3D渲染视频要实用得多。
所以,下次再用这类脚本时,你看到的不仅仅是一个方便的工具。你眼前展开的,是一幅由三角函数和矩阵乘法编织出来的、精确而优雅的视觉幻象。它提醒我们,在创意编程的世界里,限制往往能催生出最巧妙的解决方案。


参与讨论
暂无评论,快来发表你的观点吧!