自学内容网 自学内容网

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

Layer - 3D(3D 图层属性)组允许访问和控制图层的三维变换属性、光照属性、材质属性、反射属性等。通过这些属性,可以实现动态的三维旋转、光照效果控制、材质特性调整,极大地提升 After Effects 项目的视觉效果和创作灵活性。

6f85155abe6d932fda2fe511afccf65f.png

orientation

获取 3D 图层的方向。

返回值:返回 3D 图层的方向属性值(Array[3]),每维以度为单位。

应用:

//示例:使图层的三维方向随时间旋转,实现持续旋转效果。
// 定义旋转速度var speed = 30; // 度/秒
// 计算新的三维方向
[speed * time, speed * time, speed * time];

0da81d828c1af7889d9e873544c84df2.gif

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 图层材质选项(materialOption)中的“透光率”(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);

134bf24749f19c705c20be97b1031498.jpeg

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


原文地址:https://blog.csdn.net/qq_41176800/article/details/145250712

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!