大家好,我是阿赵。
继续学习虚幻引擎的使用。这次来看看UE里面摄像机的使用。
一、创建摄像机的三种方式:
1、通过过场动画创建
创建——过场动画——电影摄像机Actor
这样可以在场景里面创建一个电影摄像机的Actor,可以在大纲里面看到,生成对象的名字叫做CineCameraActor
如果选择摄像机对象,会看到在视图里面会出现一个摄像机看到的内容的小窗口。这一点和Unity引擎有点类似。
2、通过所有类创建
创建——所有类——摄像机Actor
这样可以创建一个摄像机的Actor。需要注意的是,这个对象的名字是CameraActor,和第一种方式创建的CineCameraActor不太一样。
选择这个对象,在场景里面同样有摄像机预览的小窗口。不过看细节面板,里面的选项和CineCameraActor是不太一样的。具体有什么区别下面会说。
3、通过视窗选项创建
在视口面板下面,在透视按钮的左边,有一个三条横线的按钮,点开,会找到“在此处创建相机”的选项。
点开后,会发现这里可以创建上面2种方式的摄像机,一种是摄像机Actor,也就是CameraActor,另外一种是电影摄像机Actor,也就是CineCameraActor
二、两种摄像机Actor的区别
在场景里面分别创建一个CameraActor和一个CineCameraActor,会看到两者在场景里面的显示对象图标有所区别,模型的样式和颜色都不同:
1、摄像机Actor
第一种类型是摄像机Actor,也就是CameraActor。看细节面板,它的参数包括了Transform变化,投射模式透视还是正交,FOV,宽高比,这些选项都是很常见的摄像机基础熟悉,基本上和Unity的Camera组件是一样的。
然后UE的CameraActor多了后处理选项,可以直接勾选一些后处理效果:
2、电影摄像机Actor
第二种事电影摄像机Actor,也就是CineCameraActor。
看细节面板,会发现除了正常的Transform参数以外,这种CineCameraActor更多的是一些很仿真的参数,比如胶卷背板、镜头设置、聚焦设置之类。给人的感觉是真的手上有一台显示存在的摄像机,然后可以通过显示里面使用摄像机的参数去调整。
设置的参数很专业,也有一些常用的电影摄像机参数模板,可以直接选择使用:
很明显,CineCameraActor会提供更多专业和艺术的功能,至于是否用得上,就要看自己的具体情况了。
三、场景编辑时的摄像机控制
刚才试过了,选择一个或者多个摄像机的时候,在视图里面会有小窗口显示当前摄像机能看到的内容:
如果想在编辑过程控制某个摄像机,可以先选择摄像机对象,然后鼠标右键,选择控制“CameraActor”:
这样,整个视图就会被选择中的摄像机看到的内容填充了,并且在视图的左上角会多了一些按钮,可以停止当前的预览控制:
有时候一个摄像机已经调整好了位置,我们担心会不小心修改到它,可以选择这个对象,然后鼠标右键——变换——锁定Actor运动:
这样锁定之后,就不能再去移动它的位置了。
四、运行时摄像机的指定:
使用过Unity引擎的朋友应该知道,Unity引擎的摄像机,只要你放在场景里面,它自然就会生效,我们只需要激活或者隐藏某个摄像机,就能达到切换显示的目的。
但在UE里面,过程就会复杂一些,需要在关卡蓝图里面去指定显示的内容。
找到“打开关卡蓝图”的选项:
在关卡蓝图里面鼠标右键,可以搜索创建节点,先把右上角的情景管理勾选去掉,然后搜索set view,找到Set View Target with Blend节点:
这个节点有很多的输入接口,我们暂时只需要留意Target和New View Target就可以了。
先在场景里面选择电影摄像机Actor,然后回到关卡蓝图,右键,在搜索界面勾选上情景管理,然后选择Create a Reference to CineCameraActor。
这里稍微解释一下情景关联是什么。如果把情景关联的勾去掉,那么搜索的就是所有节点。如果把情景关联勾上,那么引擎会根据你当前选择的对象,或者拖出来的节点接口类型,来限制搜索出来的结果。所以如果勾上了情景关联,有一些节点会搜索不出来;反过来,如果没有勾选情景关联,会出来太多的选项,而且UE的节点有一些是相同名字的,只是属于的类别不一样,比较难以选择。所以是否需要勾选情景关联,需要自己根据实际情况去判断。
好了,上面已经创建了一个关联着CineCameraActor的节点了。这个节点获取的Actor对象,是直接存在于场景里面的我们之前创建的电影摄像机对象,所以这个节点下面会有说明是从持久关卡。把这个节点连接到混合节点的New View Target接口:
再次鼠标右键,搜索 get player controller,找到Get Player Controller节点。
这个节点是很常用的节点,很多蓝图节点都需要获取玩家控制器然后输入的。把这个玩家控制器节点连接到混合节点的Target接口。
最后,把打开蓝图后就一直看到的Event BeginPlay节点的小三角连接到混合节点的小三角输入:
小三角是不同于下面的圆形接口的。圆形接口的作用一般都是各种参数的输入,而小三角代表的是方法调用。
而Event BeginPlay这个节点,就有点类似于Unity引擎的MonoBehavior类的Start函数,会在关卡一开始的时候调用。所以上面的节点连接的意义就是,在关卡刚开始的时候,把指定的摄像机Actor设置到ViewTarget,让显示画面变成指定的摄像机。
举一反三,如果中途需要替换摄像机,就是在特定的运行下,比如按UI,或者点击鼠标之类,触发一个新的混合节点,然后把新的摄像机传入New View Target。
这时候运行游戏,会发现游戏画面已经是电影摄像机看到的内容了。