摘要:Layer - 3D(3D 图层属性)组允许访问和控制图层的三维变换属性、光照属性、材质属性、反射属性等。通过这些属性,可以实现动态的三维旋转、光照效果控制、材质特性调整,极大地提升 After Effects 项目的视觉效果和创作灵活性。
Layer - 3D(3D 图层属性)组允许访问和控制图层的三维变换属性、光照属性、材质属性、反射属性等。通过这些属性,可以实现动态的三维旋转、光照效果控制、材质特性调整,极大地提升 After Effects 项目的视觉效果和创作灵活性。
orientation
获取 3D 图层的方向。
返回值 :返回 3D 图层的方向属性值(Array[3]),每维以度为单位。
应用:
//示例:使图层的三维方向随时间旋转,实现持续旋转效果。// 定义旋转速度var speed = 30; // 度/秒// 计算新的三维方向[speed * time, speed * time, speed * time];rotationX
获取 3D 图层绕 X 轴旋转的度数。
返回值:返回 3D 图层变换属性组中的“ X 轴旋转”属性值(Number),以度为单位。
应用:
// 示例:为 X 轴旋转属性添加表达式,使图层绕 X 轴来回摆动,模拟摇晃效果// 定义摆动幅度和频率var amplitude = 30; // 度var frequency = 2; // 摆动次数/秒// 计算旋转角度amplitude * Math.sin(time * frequency * 2 * Math.PI);rotationY
获取 3D 图层绕 Y 轴旋转的度数。
返回值:返回 3D 图层 变换属性组中的“ Y 轴旋转”属性值(Number),以度为单位。
应用:
//示例:使子图层的 Y 轴旋转与父级图层同步。if (hasParent) {parent.transform.rotationY;} else {0;}rotationZ
获取 3D 图层绕 Z 轴旋转的度数。
返回值:返回 3D 图层变换属性组中 的“ Z 轴旋转”属性值(Number),以度 为单位。
应用:
//示例:使图层的 Z 轴旋转根据鼠标的 X 位置变化。// 获取鼠标位置(假设有一个控制器图层)var mousePos = thisComp.layer("Controller").transform.position;// 将鼠标 X 位置映射到旋转角度linear(mousePos[0], 0, thisComp.width, -45, 45);lightTransmission
获取 3D 图层的透光率。
返回值:返回 3D 图层材质选项(materialOpti on)中的“透光率”(Number)百分比。
应用:
//示例 :根据光线透射值调整图层的不透明度// 获取光线透射值var transmission = lightTransmission;// 将透射值映射到不透明度(0% - 100%)transmission;castsShadows
获取图层是否会投射阴影的状态。
返回值:返回 3D 图层材质选 项中的“投影”属 性的状态值(Number)。
“开”,则返回 1;“关”,则返回 0;“仅”,则返回 2。
应用:
//根据图层是否投射阴影来调整其透明度// 判断图层是否投射阴影if (castsShadows == 1.0) {100; // 完全不透明} else {50; // 半透明}acceptsShadows
获取 3D 图层是否接受投影的状态。
返回值:返回 3D 图层材质选项中的 “接受投影”属 性的状态值(Number)。
“开”,则返回 1;“关”,则返回 0;“ 仅” ,则返回 2。
应用:
//根据图层是否接受阴影来改变其颜色。// 判断图层是否接受阴影if (acceptsShadows == 1.0) {[0, 1, 0, 1]; // 绿色} else {[1, 1, 0, 1]; // 黄色}acceptsLights
获取 3D 图层的接受灯光的状态。
返回值:返回 3D 图层 材质选项中的“接受灯光”属性的状态 值(Number)。
“开”,则返回 1;“关”,则返回 0 。
应用:
//示例:根据图层是否接受光源来调整其不透明度。// 判断图层是否接受光源if (acceptsLights == 1.0) {100; // 完全不透明} else {50; // 半透明}ambient
获取 3D 图层的环境的值。
返回值:返回 3D 图层材质选项中的环境 (“周围”) 属性值(Number)。以百分比形式表示。
应用:
环境光影响图层的整体亮度,无方向性。
//示例 1:使3D图层的环境光分量随时间变化,模拟光线强弱的变化// 定义环境光变化幅度和速度var amplitude = 30; // 百分比var frequency = 0.5; // Hz// 计算环境光分量50 + amplitude * Math.sin(2 * Math.PI * frequency * time);//示例 2:使3D图层的环境光分量根据与摄像机的距离变化// 获取摄像机图层var cam = thisComp.activeCamera;// 计算摄像机与图层的距离var distance = length(cam.toWorld([0,0,0]), thisLayer.toWorld([0,0,0]));// 将距离映射到环境光分量(近距离高环境光,远距离低环境光)linear(distance, 0, 1000, 100, 20);diffuse
获取 3D 图层的漫射的值。
返回值:返回 3D 图层材质选项中 的“漫射”属 性值(Number),以百分比形式表示。
应用:
漫反射影响图层表面对光源的散射反射程度,具有方向性。
//示例 1:使3D图层的漫反射分量根据场景中光源的强度变化。// 获取场景中主光源的强度(假设主光源命名为 "Main Light")var lightIntensity = thisComp.layer("Main Light").intensity;// 将光源强度映射到漫反射分量(低光强度低漫反射,高光强度高漫反射)linear(lightIntensity, 0, 100, 20, 100);specularIntensity
获取 3D 图层的镜面强度的值。
返回值:返回 3D 图层材质选 项中的“镜面强度”属 性值(Number),以百分比形式表示。
应用:
镜面反射影响图层表面对光源的高光反射程度,具有方向性和高光点的锐利度。
//示例:使3D图层的镜面反射分量根据与光源的距离变化。// 获取光源图层(假设光源命名为 "Main Light")var mLight = thisComp.layer("Main Light");// 计算光源与图层的距离var distance = length(mLight.toWorld([0,0,0]), thisLayer.toWorld([0,0,0]));// 将距离映射到镜面反射分量(近距离高镜面反射,远距离低镜面反射)linear(distance, 0, 1000, 100, 10);specturalShinness
获取 3D 图层的镜面反光度的值。
返回值:返回 3D 图层材质选项中 的“镜面反光度”属 性值(Number),以百分比形式表示。
应用:
光泽度控制镜面高光的锐利度和范围,影响高光的细腻程度。
//示例:使3D图层的光泽度根据光源的强度变化,模拟不同光照条件下的表面反射效果// 获取光源图层(假设光源命名为 "Ambient Light")var lightIntensity = thisComp.layer("Ambient Light").light.intensity;// 将光源强度映射到光泽度(低强度低光泽,高强度高光泽)linear(lightIntensity, 0, 100, 10, 100);metal
获取 3D 图层的金属质感的值。
返回值:返回 3D 图层材质选 项中的“金属质感”属性 值(Number),以百分比形式表示。
应用:
金属度决定材质的金属特性,影响光线反射的颜色和强度。
//示例:使3D图层的金属度随时间变化,模拟材质的动态变化// 定义振幅和频率var amplitude = 50; // 百分比var frequency = 0.5; // Hz// 计算金属度50 + amplitude * Math.sin(2 * Math.PI * frequency * time);reflectionIntensity
获取 3D 图层的反射强度的值。
返回值:返回 3D 图层材质选项 中的“反射强度”属 性值(Number),以百分比形式表示。
应用:
反射强度控制图层表面对光源的反射量,影响图层的光泽感和材质感。
//示例:使3D图层的反射强度随时间变化,模拟材质光泽度的波动效果// 定义反射强度的振幅和频率var amplitude = 30; // 百分比var frequency = 1; // Hz// 计算反射强度50 + amplitude * Math.sin(2 * Math.PI * frequency * time);reflectionSharpness
获取 3D 图层的反射锐度的值。
返回值:返回 3D 图层材质选项中 的 “反射锐度”属 性 值(Number),以百分比形式表示。
应用:
反射锐度控制反射的清晰度和边缘的锐利程度,影响反射的细腻度和真实感。
//示例:使3D图层的反射锐度根据其在空间中的Z位置变化,模拟距离对反射清晰度的影响。// 获取图层的Z位置var posZ = position[2];// 将Z位置映射到反射锐度(靠近摄像机高锐度,远离低锐度)linear(posZ, -500, 500, 100, 20);reflectionRolloff
获取 3D 图层的反射衰减的值。
返回值:返回 3D 图层材质选项中的 “反射衰减” 属性值(Number),以百分比形式表示。
应用:
反射衰减控制反射随视角变化的衰减程度,影响反射在不同角度下的亮度和强度。
//示例:使3D图层的反射衰减根据摄像机与图层的相对角度变化,模拟反射在不同视角下的真实衰减效果。// 获取摄像机图层var cam = thisComp.activeCamera;// 计算摄像机与图层的方向向量var layerPos = thisLayer.toWorld([0,0,0]);var camPos = cam.toWorld([0,0,0]);var direction = normalize(camPos - layerPos);// 计算反射衰减(方向向量与图层法线的夹角越大,衰减越高)var angle = degrees(Math.acos(dot(direction, normalize([0,0,1])))); // 假设法线为Z轴linear(angle, 0, 90, 0, 100);“点赞有美意,赞赏是鼓励”
来源:永远期待下一个角色