After Effects 3D图层属性表达式语言详解
After Effects 3D图层属性表达式语言详解
After Effects中的3D图层属性表达式语言提供了丰富的功能,可以实现动态的三维旋转、光照效果控制、材质特性调整等,极大地提升项目的视觉效果和创作灵活性。下面将详细介绍各种3D图层属性的获取方法及其应用场景。
orientation
获取3D图层的方向。
返回值:返回3D图层的方向属性值(Array[3]),每维以度为单位。
应用:
//示例:使图层的三维方向随时间旋转,实现持续旋转效果。
// 定义旋转速度
var speed = 30; // 度/秒
rotationX
获取3D图层绕X轴旋转的度数。
返回值:返回3D图层变换属性组中的“X轴旋转”属性值(Number),以度为单位。
应用:
// 示例:为X轴旋转属性添加表达式,使图层绕X轴来回摆动,模拟摇晃效果
var frequency = 2; // 摆动次数/秒
amplitude * Math.sin(time * frequency * 2 * Math.PI);
rotationY
获取3D图层绕Y轴旋转的度数。
返回值:返回3D图层变换属性组中的“Y轴旋转”属性值(Number),以度为单位。
应用:
parent.transform.rotationY;
rotationZ
获取3D图层绕Z轴旋转的度数。
返回值:返回3D图层变换属性组中的“Z轴旋转”属性值(Number),以度为单位。
应用:
//示例:使图层的Z轴旋转根据鼠标的X位置变化。
var mousePos = thisComp.layer("Controller").transform.position;
linear(mousePos[0], 0, thisComp.width, -45, 45);
lightTransmission
获取3D图层的透光率。
返回值:返回3D图层材质选项(materialOption)中的“透光率”(Number)百分比。
应用:
var transmission = lightTransmission;
// 将透射值映射到不透明度(0% - 100%)
castsShadows
获取图层是否会投射阴影的状态。
返回值:返回3D图层材质选项中的“投影”属性的状态值(Number)。
“开”,则返回1;“关”,则返回0;“仅”,则返回2。
应用:
if (castsShadows == 1.0) {
acceptsShadows
获取3D图层是否接受投影的状态。
返回值:返回3D图层材质选项中的“接受投影”属性的状态值(Number)。
“开”,则返回1;“关”,则返回0;“仅”,则返回2。
应用:
if (acceptsShadows == 1.0) {
acceptsLights
获取3D图层的接受灯光的状态。
返回值:返回3D图层材质选项中的“接受灯光”属性的状态值(Number)。
“开”,则返回1;“关”,则返回0。
应用:
if (acceptsLights == 1.0) {
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; // 百分比
50 + amplitude * Math.sin(2 * Math.PI * frequency * time);
reflectionSharpness
获取3D图层的反射锐度的值。
返回值:返回3D图层材质选项中的“反射锐度”属性值(Number),以百分比形式表示。
应用:
反射锐度控制反射的清晰度和边缘的锐利程度,影响反射的细腻度和真实感。
//示例:使3D图层的反射锐度根据其在空间中的Z位置变化,模拟距离对反射清晰度的影响。
// 将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);