Ae 表达式语言引用:Layer - 3D

[复制链接]
发表于 2025-11-6 11:13:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Layer - 3D(3D 图层属性)组答应访问和控制图层的三维变更属性、光照属性、材质属性、反射属性等。通过这些属性,可以实现动态的三维旋转、光照效果控制、材质特性调解,极大地提拔 After Effects 项目标视觉效果和创作机动性。


orientation

获取 3D 图层的方向。
返回值:返回 3D 图层的方向属性值(Array[3]),每维以度为单位。
应用:
  1. //示例:使图层的三维方向随时间旋转,实现持续旋转效果。
  2. // 定义旋转速度var speed = 30; // 度/秒
  3. // 计算新的三维方向
  4. [speed * time, speed * time, speed * time];
复制代码

rotationX

获取 3D 图层绕 X 轴旋转的度数。

返回值:返回 3D 图层变更属性组中的“ X 轴旋转”属性值(Number),以度为单位。
应用:
  1. // 示例:为 X 轴旋转属性添加表达式,使图层绕 X 轴来回摆动,模拟摇晃效果
  2. // 定义摆动幅度和频率
  3. var amplitude = 30; // 度
  4. var frequency = 2; // 摆动次数/秒
  5. // 计算旋转角度
  6. amplitude * Math.sin(time * frequency * 2 * Math.PI);
复制代码
rotationY

获取 3D 图层绕 Y 轴旋转的度数。
返回值:返回 3D 图层变更属性组中的“ Y 轴旋转”属性值(Number),以度为单位。
应用:
  1. //示例:使子图层的 Y 轴旋转与父级图层同步。
  2. if (hasParent) {
  3.     parent.transform.rotationY;
  4. } else {
  5.     0;
  6. }
复制代码
rotationZ

获取 3D 图层绕 Z 轴旋转的度数。
返回值:返回 3D 图层变更属性组中的“ Z 轴旋转”属性值(Number),以度为单位。
应用:
  1. //示例:使图层的 Z 轴旋转根据鼠标的 X 位置变化。
  2. // 获取鼠标位置(假设有一个控制器图层)
  3. var mousePos = thisComp.layer("Controller").transform.position;
  4. // 将鼠标 X 位置映射到旋转角度
  5. linear(mousePos[0], 0, thisComp.width, -45, 45);
复制代码
lightTransmission

获取 3D 图层的透光率。
返回值:返回 3D 图层材质选项(materialOption)中的“透光率”(Number)百分比。
应用:
  1. //示例 :根据光线透射值调整图层的不透明度
  2. // 获取光线透射值
  3. var transmission = lightTransmission;
  4. // 将透射值映射到不透明度(0% - 100%)
  5. transmission;
复制代码
castsShadows

获取图层是否会投射阴影的状态。
返回值:返回 3D 图层材质选项中的“投影”属性的状态值(Number)。
“开”,则返回 1;“关”,则返回 0;“仅”,则返回 2。
应用:
  1. //根据图层是否投射阴影来调整其透明度
  2. // 判断图层是否投射阴影
  3. if (castsShadows == 1.0) {
  4.     100; // 完全不透明
  5. } else {
  6.     50; // 半透明
  7. }
复制代码
acceptsShadows

获取 3D 图层是否继承投影的状态。
返回值:返回 3D 图层材质选项中的“继承投影”属性的状态值(Number)。
“开”,则返回 1;“关”,则返回 0;“仅”,则返回 2。
应用:
  1. //根据图层是否接受阴影来改变其颜色。
  2. // 判断图层是否接受阴影
  3. if (acceptsShadows == 1.0) {
  4.     [0, 1, 0, 1]; // 绿色
  5. } else {
  6.     [1, 1, 0, 1]; // 黄色
  7. }
复制代码
acceptsLights

获取 3D 图层的继承灯光的状态。
返回值:返回 3D 图层材质选项中的“继承灯光”属性的状态值(Number)。
“开”,则返回 1;“关”,则返回 0。
应用:
  1. //示例:根据图层是否接受光源来调整其不透明度。
  2. // 判断图层是否接受光源
  3. if (acceptsLights == 1.0) {
  4.     100; // 完全不透明
  5. } else {
  6.     50; // 半透明
  7. }
复制代码
ambient

获取 3D 图层的环境的值。
返回值:返回 3D 图层材质选项中的环境(“附近”)属性值(Number)。以百分比情势体现。
应用:
环境光影响图层的团体亮度,无方向性。
  1. //示例 1:使3D图层的环境光分量随时间变化,模拟光线强弱的变化
  2. // 定义环境光变化幅度和速度
  3. var amplitude = 30; // 百分比
  4. var frequency = 0.5; // Hz
  5. // 计算环境光分量
  6. 50 + amplitude * Math.sin(2 * Math.PI * frequency * time);
  7. //示例 2:使3D图层的环境光分量根据与摄像机的距离变化
  8. // 获取摄像机图层
  9. var cam = thisComp.activeCamera;
  10. // 计算摄像机与图层的距离
  11. var distance = length(cam.toWorld([0,0,0]), thisLayer.toWorld([0,0,0]));
  12. // 将距离映射到环境光分量(近距离高环境光,远距离低环境光)
  13. linear(distance, 0, 1000, 100, 20);
复制代码
diffuse

获取 3D 图层的漫射的值。
返回值:返回 3D 图层材质选项中的“漫射”属性值(Number),以百分比情势体现。
应用:
漫反射影响图层外貌临光源的散射反射水平,具有方向性。
  1. //示例 1:使3D图层的漫反射分量根据场景中光源的强度变化。
  2. // 获取场景中主光源的强度(假设主光源命名为 "Main Light")
  3. var lightIntensity = thisComp.layer("Main Light").intensity;
  4. // 将光源强度映射到漫反射分量(低光强度低漫反射,高光强度高漫反射)
  5. linear(lightIntensity, 0, 100, 20, 100);
复制代码
specularIntensity

获取 3D 图层的镜面强度的值。
返回值:返回 3D 图层材质选项中的“镜面强度”属性值(Number),以百分比情势体现。
应用:
镜面反射影响图层外貌临光源的高光反射水平,具有方向性和高光点的锐利度。
  1. //示例:使3D图层的镜面反射分量根据与光源的距离变化。
  2. // 获取光源图层(假设光源命名为 "Main Light")
  3. var mLight = thisComp.layer("Main Light");
  4. // 计算光源与图层的距离
  5. var distance = length(mLight.toWorld([0,0,0]), thisLayer.toWorld([0,0,0]));
  6. // 将距离映射到镜面反射分量(近距离高镜面反射,远距离低镜面反射)
  7. linear(distance, 0, 1000, 100, 10);
复制代码
specturalShinness

获取 3D 图层的镜面反光度的值。
返回值:返回 3D 图层材质选项中的“镜面反光度”属性值(Number),以百分比情势体现。
应用:
光泽度控制镜面高光的锐利度和范围,影响高光的精致水平。
  1. //示例:使3D图层的光泽度根据光源的强度变化,模拟不同光照条件下的表面反射效果
  2. // 获取光源图层(假设光源命名为 "Ambient Light")
  3. var lightIntensity = thisComp.layer("Ambient Light").light.intensity;
  4. // 将光源强度映射到光泽度(低强度低光泽,高强度高光泽)
  5. linear(lightIntensity, 0, 100, 10, 100);
复制代码
metal

获取 3D 图层的金属质感的值。
返回值:返回 3D 图层材质选项中的“金属质感”属性值(Number),以百分比情势体现。
应用:
金属度决定材质的金属特性,影响光线反射的颜色和强度。
  1. //示例:使3D图层的金属度随时间变化,模拟材质的动态变化
  2. // 定义振幅和频率
  3. var amplitude = 50; // 百分比
  4. var frequency = 0.5; // Hz
  5. // 计算金属度
  6. 50 + amplitude * Math.sin(2 * Math.PI * frequency * time);
复制代码
reflectionIntensity

获取 3D 图层的反射强度的值。
返回值:返回 3D 图层材质选项中的“反射强度”属性值(Number),以百分比情势体现。
应用:
反射强度控制图层外貌临光源的反射量,影响图层的光泽感和材质感。
  1. //示例:使3D图层的反射强度随时间变化,模拟材质光泽度的波动效果
  2. // 定义反射强度的振幅和频率
  3. var amplitude = 30; // 百分比
  4. var frequency = 1; // Hz
  5. // 计算反射强度
  6. 50 + amplitude * Math.sin(2 * Math.PI * frequency * time);
复制代码
reflectionSharpness

获取 3D 图层的反射锐度的值。
返回值:返回 3D 图层材质选项中的“反射锐度”属性值(Number),以百分比情势体现。
应用:
反射锐度控制反射的清楚度和边沿的锐利水平,影响反射的精致度和真实感。
  1. //示例:使3D图层的反射锐度根据其在空间中的Z位置变化,模拟距离对反射清晰度的影响。
  2. // 获取图层的Z位置
  3. var posZ = position[2];
  4. // 将Z位置映射到反射锐度(靠近摄像机高锐度,远离低锐度)
  5. linear(posZ, -500, 500, 100, 20);
复制代码
reflectionRolloff

获取 3D 图层的反射衰减的值。
返回值:返回 3D 图层材质选项中的“反射衰减”属性值(Number),以百分比情势体现。
应用:
反射衰减控制反射随视角厘革的衰减水平,影响反射在差别角度下的亮度和强度。
  1. //示例:使3D图层的反射衰减根据摄像机与图层的相对角度变化,模拟反射在不同视角下的真实衰减效果。
  2. // 获取摄像机图层
  3. var cam = thisComp.activeCamera;
  4. // 计算摄像机与图层的方向向量
  5. var layerPos = thisLayer.toWorld([0,0,0]);
  6. var camPos = cam.toWorld([0,0,0]);
  7. var direction = normalize(camPos - layerPos);
  8. // 计算反射衰减(方向向量与图层法线的夹角越大,衰减越高)
  9. var angle = degrees(Math.acos(dot(direction, normalize([0,0,1])))); // 假设法线为Z轴
  10. linear(angle, 0, 90, 0, 100);
复制代码

“点赞有盛意,赞赏是鼓励”

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表