[官方培训]12-蓝图在影视中的应用 肖月 Epic 笔记

蓝图在影视中的应用

课程大纲

  • 蓝图基础
    • Variable,Function,Component
    • Construction,Script
    • Event
  • 编辑器中的应用
    • 蓝图工具
      • Editor Utility Action(EUA)
      • Editor Utility Widget(EUW)
    • Spline工具
    • Geometry Script
  • Debug,使用建议

蓝图基础:可视化编程脚本

蓝图是引擎提供的可视化编程脚本系统,我们在蓝图编辑器中通过连节点的方式,直观的搭特定的逻辑,编辑器里各个部件的组织方式,其实和C++代码的组织是类似的。

蓝图中的MyBlueprint对应的是C++的头文件,这里罗列声明了这个蓝图内的所有成员。首先有VARIABLES是各种类型的成员变量,在设置按钮上勾选show Inherited Variables 可以显示出继承自父类的变量。然后是FUNCTION成员方法,点击旁边的Override选项可以重载这个蓝图各级父类的方法。在具体的FUNCTION编辑模式下,我们还可以添加LOCAL VARIABLES局部变量

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

中间的节点流程图对应了C++的cpp文件,这里做具体的功能实现,编译时通过蓝图虚拟机这些节点被翻译成代码。项目中面对较为复杂的功能,我们通常会采取蓝图和C++协作的方案,先在C++中写一个基类框架,再在蓝图中对它做继承,重载和拓展。比较底层的复杂逻辑或数学运算会在C++中完成。通过反射系统暴露给蓝图调用。而比较上层的gameplay交互逻辑或特定的视觉效果的组装可以在蓝图中进行快速的迭代。

电灯泡实例class蓝图在编辑器中的基础操作

在这里插入图片描述

由于是放置在场景中交互的一个物件,我们先在内容浏览器中创建一个Actor为父类的蓝图。

蓝图编辑器中有三维视口,可以很方便的预览视觉效果。而视觉效果的搭建通常是从组装Component开始。

组装Component

每个Component类都封装了一些特定的通用的功能或者说解决方案。

我们先添加一个mesh来描述灯泡的外形,加一个点光源用来照明,还有一个碰撞盒来检测穿插。这些组件都属于SceneComponent,是可以放置在场景中摆放的,都带有Transform信息,不同的SceneComponent间还可以建立Transform层级。每个蓝图actor都会有一个默认的根节点,它是一个不可见的SceneComponent。由于后续的部件是挂在mesh上的,这里可以把它提到最上层来代替根节点。
在这里插入图片描述

我们希望不同的灯泡实例可以有颜色的变化,需要添加一个变量来定义它的颜色,并且把这个变量与点光源的颜色以及mesh的材质属性关联起来。

Variable的设置

创建一个名为LightColor的变量,类型为Linear Color,编译后可以设置默认值。

我们还可以在右边的Detail面板上设置变量的细节属性。

添加FUNCTION

在蓝图中新建一个Function取名为ChangeColor,然后添加颜色修改的逻辑。
在这里插入图片描述

Construction Script

调用添加颜色修改的逻辑使用Construction Script。

当蓝图实例被spawn到关卡时,或者在场景中对它做transform摆放以及各个属性的编辑调整时,Construction Script都会被调用。所以一般属性更新的响应都会放在这里。
在这里插入图片描述

蓝图属性动画

如果我们想在镜头里给灯泡的颜色进行k帧,首先在蓝图中把LightColor变量勾选向过场动画公开,这样才能在Sequencer中给它添加轨道。

另外还需要在类设置中勾选在Sequencer中运行构造脚本,就是说在Sequencer中的每一帧都需要执行Construction Script,这样蓝图的属性动画才能得到响应。

我们在镜头制作时应该多使用蓝图对复杂的效果进行封装。蓝图属性帮我们精简了Component的轨道数目。

Actor Sequence

我们可以把蓝图内各属性的动画,通过Actor Sequence Component也打包到蓝图类中去。这样这个动画就可以被很方便的复用。

启用这个功能需要打开Actor Sequence插件。
在这里插入图片描述

Event

当涉及不同object之间的联动和交互时就需要Event。

Event Graph中有三个默认添加的事件,分别是事件开始运行,事件Actor开始重叠和事件Tick。

  • 事件开始运行 游戏开始运行后触发
  • 事件Actor开始重叠 场景中不同Actor的Collision Volume 重叠时触发
  • 事件Tick 每帧触发的事件,Tick是Runtime下性能耗费很高的事件。应该尽量避免在其中写复杂度很高的逻辑。

我们也可以添加自定义的事件。

Event和Function不同,Function可以自定义是否有返回值,在调用时我们等待函数执行直达它返回,Event没有返回值的触发后可能会涉及多线程的执行。因此我们在Event中可以添加并行的时间线做响应。

Level Blueprint

关卡蓝图是绑定在具体的umap上的逐关卡的蓝图脚本,一般用于调度场景中的各个actor,在前面的类蓝图里编辑器只知道当前这个蓝图类中有哪些Component,然后可以执行哪些操作。而在关卡蓝图中选择场景中的任意actor都可以创建它的引用,并且编辑器中会提示可以对它执行哪些操作。

Sequence Director Blueprint

Director Blueprint是调度各个轨道的蓝图脚本,把场景的的灯泡蓝图拖到轨道中给它添加一个事件轨道,这样我们就可以在某一特定时刻shift+中键设置一个关键帧,然后绑定一个事件进行触发。
在这里插入图片描述

Draw Material to RT

Draw Material to RT可以将某个材质的逻辑画到Render Target上这样就可以响应游戏逻辑中的射线检测的结果。

Content Example中也有Render Target在蓝图中应用的演示关卡。

小结

组成

Variable,Function,Component,Construction Script,Event…

按应用场景分类

  • Class Blueprint
  • Level Blueprint
  • Sequence Director Blueprint
  • Blutilliy

编辑器中的应用

蓝图工具

  • Editor Utility Blueprint 常用来编写一些批处理脚本,常见的一般基于这两个父类,这两个分别管理场景中的Actor和项目中的资产
    在这里插入图片描述

当项目中的资产量比较大,资产来源又比较杂的时候,往往我们更需要标准化的管理。我们可以根据项目具体的需求,通过Editor Utility Action对资产进行批量的规范设置。

以纹理为例,我们一般会按不同的材质通道为它使用的纹理,做标准的色彩空间,压缩格式,以及mipmap等设置。下面用一个脚本例子来进行这些设置。例子具体操作看学习视频。通过这个脚本我们可以快速的对纹理的设置进行批量处理。对其属性进行正确的修改。
在这里插入图片描述

  • Editor Utility Widget 可以做带控件窗口的编辑器工具
    在这里插入图片描述
    在这里插入图片描述

下面介绍一个简单的场景Layout工具

这个工具的主要作用是对场景中摆放的的道具,批量的添加随机的位移和旋转,使得它看起来摆放的更自然。
在这里插入图片描述

按钮介绍

  • Randomize按钮是执行随机的摆放,下面的勾选是设置是否对旋转,位移,大小都添加随机。
  • Ray按钮是做垂直向下的射线检测,使得物体贴到离它最近的表面。

使用该工具让灯泡随机洒落在地上的方法

首先使用Randomize对灯泡方阵位置添加一些随机,再用Ray按钮让它们贴地。但这样只能让物体的轴心点贴地。所以我们使用Set Physic添加模拟。然后运行模拟,等物体掉落地面状态稳定后,点击快捷键K或者右键编辑器的保留物体状态功能,这样就可以的到灯泡随机掉落地面的场景。
在这里插入图片描述

Editor Utility 的使用
  • 资产批处理
  • 场景管理
    • Layout
    • 渲染质量分级设置
    • 暴露常用CVar选项
    • 场景中的模型编辑

场景编辑深入

Spline Component
  • 沿路径做物件摆放
  • 沿路径变形splinemesh

作用展示看内容示例中Blueprint Splines关卡

Geometry Script
  • UE5,Experimental
  • 生成/编辑/访问mesh数据的UFunction Library
  • 提供蓝图和Python接口,大部分Runtime和Editor都可调用
    在这里插入图片描述

模型处理接口

Boolean,Subdivision,Extrude,Bevel,Revolve…

Displacement,PerlinNoise,Smooth,Twist,Bend…

Nearest Point on Mesh with BVH…

应用

  • 通过EUA EUW制作模型处理工具

    地址(Engineering Fellow,Epic Games)

  • PCG

    Lyra工程示例
    在这里插入图片描述

Blueprint Debugger

  • 断点
  • 数据流
  • 堆栈

使用建议

  • 节点连线尽量不要过于复杂
  • 节点整齐,必要地方加注释
  • 逻辑复用:node macro function

Best Practice

https://docs.unrealengine.com/4.27/en-US/ProgrammingAndScripting/Blueprints/BestPractices/

学习地址

地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值