AE表达式 - 3D图层始终朝向摄像机
比邻课堂
2021年10月16日 13:58
收录于文集
共28篇

3D图层始终朝向摄像机

使用此表达式的3D图层,将始终面向相机,而不会发生任何倾斜和变形。

代码块
JavaScript
自动换行
复制代码
try{
	L = thisComp.activeCamera;
	u = fromWorldVec(L.toWorldVec([1,0,0]));
	v = fromWorldVec(L.toWorldVec([0,1,0]));
	w = normalize(fromWorldVec(L.toWorldVec([0,0,1])));

	sinb = clamp(w[0],-1,1);
	b = Math.asin(sinb);
	cosb = Math.cos(b);
	if (Math.abs(cosb) > .0005){
		c = -Math.atan2(v[0],u[0]);
		a = -Math.atan2(w[1],w[2]);
	}else{
		a = (sinb < 0 ? -1 : 1)*Math.atan2(u[1],v[1]);
		c = 0;
	}
	[radiansToDegrees(a),radiansToDegrees(b),radiansToDegrees(c)]
}catch(err){
	value
}
复制成功

效果演示:

用法:

1、新建一些图层,打开3d开关。新建一个摄像机。

2、展开文字图层的方向属性,给它添加上面的表达式。

其他图层不要添加,便于我们观察对比。

添加好表达式以后,旋转摄像机,就可以看到文字图层始终朝着摄像机。

3、稍微调整一下文字图层的旋转方向,可以看到,文字在原地产生了旋转效果,这样会更真实一些。

这段表达式是之前收集的,忘了出处,在此对原作者表示感谢。

表达式还是蛮复杂的,用到了很多不常用的表达式。

fromWorldVec(),toWorldVec(),clamp(),Math.atan2(),radiansToDegrees()

这些知识点在我的第三、第四章视频教程里将都会讲到。

第三、第四章视频教程,还有10个案例没有录完,结束以后会第一时间发布,欢迎关注。