Appearance
7. 资源与场景
首先什么是资源和场景?场景代表一个挂载单元,而资源代表 live2d(Cubism/Spine)、图片、立绘差分、音乐、视频这种可以添加到场景中且能通过动画控制的元素。
资源
Live2d (Cubism / Spine) 资源
当前支持的版本为 Cubism 2/3/4, Spine 3.8/4.0/4.1,且同一个场景中不能存在不同版本的 Spine。
- Cubism 可操控的属性通常有
表情和动作,也有看向指针的能力,例如 BanG Dream! 中的角色 live2d 就是 Cubism 资源 - Spine 可操作的属性通常有
动画和皮肤,例如 Blue Archive 中的记忆大厅、明日方舟中的小人动画等都是 Spine 资源

图片和立绘差分资源
当导入图片后,可以在下方点击“+添加差分图”将这个资源升级为图片差分资源,通常可以用于立绘差分等用途 (可以添加不同表情的差分图,实现和live2d一样的切换能力)

即使自行制作一个Live2D非常困难,但依然可以通过AI生成/调整图片、AI生成动态视频资源、去网上找对应的Live2D/立绘资源、将动画录制/渲染为视频等方式实现一定程度的场景动画。
音频和视频资源

状态预设与动作预设
状态预设与动作预设是为了统一不同资源底层能力不同而提出的。
例如可能一个Cubism资源A实现 微笑 状态是通过将表情设为 smile01,将动作设为 smile02 实现;
一个Cubism资源B实现 微笑 状态是通过将表情设为 face_smile_02,将动作设为 motion_smile_01 实现;
一个Spine资源C实现 微笑 状态是通过将动画设为 smile 实现;
一个图片差分节点D是将立绘设置为 smile.jpg 实现……
不同的资源有不同的实现微笑的方式,而为了统一,我们可以为这些资源都添加一个 微笑 的状态预设。 这样在编排动画时,我们就只需要关注将当前角色设置为 微笑 状态即可,而无需关注其底层是如何实现这一状态的。
而状态预设和动作预设的区别在于:
状态预设在 设状态 动画被触发时,将设置并保持这一状态(即使动画结束也会始终保持状态);
而动作预设在 播放动作 动画播放时,将在动画期间单次播放这一动作。
在大部分时候,我们只需使用状态预设,并且通常只有涉及
Spine资源时会使用到动作预设。
如果有底层命名基本相同的资源(例如这些资源都是
Cubism,且都有smile01等这样相同命名的动作),只需写一次状态预设列表,其它角色可以在JSON编辑预设中复制粘贴即可。

场景
编辑器布局
- 左侧为节点与资源面板,可以在这里直接添加资源到场景里。
- 右侧为属性面板,可以在这里编辑节点、动画组、动画等的属性。
- 下方为动画面板,可以在这里编辑动画组和动画。

手机版可通过左上角按钮展开/折叠节点与资源面板、属性面板,通过下方按钮展开/折叠动画面板。
节点属性
图像节点:包括Cubism、Spine、图片、图片差分、视频
- 看向指针(仅Cubism资源支持):即让角色目光始终跟随指针/手指。
- 适配方式:分为
完整显示和铺满屏幕,对于背景图片、Live2D记忆大厅这种需要铺满背景的内容,请选择铺满屏幕,否则选择默认的完整显示即可。 - 变换:基本都是字面意思,不过
Cubism资源官方推荐是设置Y=0.92,锚点Y=0.92(即以人物身体下方处为锚点执行缩放等操作) - 初始状态:即初始时使用的状态预设
媒体节点:包括视频、音频
- 自动播放、循环播放:通常音频加上自动播放和循环播放即可当做BGM使用,否则可以当做音效在动画组中触发播放。
摄像机节点:一个特殊的节点,可以相当于同时控制所有资源的位移,通常可以场景震动效果、地图等一次只显示一部分的可以移动的场景等等效果。
角色位节点
如果角色数过多,我们希望不要一次在场景中显示所有角色,而是只显示当前发言角色时,就可以用到这个特殊节点。
在左上角节点列表中,点击添加角色位后,可以在右侧属性面板下方添加角色子位,并且可以设置初始时显示的角色以及每个角色的初始状态。
在动画面板中,我们可以对这个节点加入切角色动画,即可在不同角色间切换当前显示的角色;
也可以加入设状态和播放动作动画,即可对当前显示的角色设置状态/播放动作。

动画与动画组
一个动画组通常对应一种事件,即类似发生事件A时触发动画组A。
而一个动画组可以包含多个动画,可以通过控制动画的播放时机(在上一动画之后/与上一动画同时)以及插入延时动画(等价于不执行任何操作的空动画),实现复杂的动画效果。
可以点击动画组面板右上角的“试播按钮”试播动画组,以便查看动画播放的效果
试播结束后,预览将会自动回到原来的状态
场景规则
场景规则类似于一种专门用于触发场景动画的消息规则,是将纯文本的角色扮演和场景动画联系起来的桥梁。
因此我场景规则和消息规则在一些概念上是相通的,例如消息来源、if/when表达式等。
不同之处在于:
- 处理时机:场景规则是在消息规则全部处理完成后进行处理的。
- 可见通道:场景规则只有用户通道,即只可影响用户可见内容。
场景规则的原理:当条件满足时触发对应的动画组
- 如果不添加条件:只要对应通道有消息就会直接触发动画组
- 添加文本匹配条件:当文本中匹配到对应正则表达式时触发动画组,同时执行文本替换
- 添加if/when条件:当条件满足时触发动画组
- 同时多种条件:需要同时满足时才触发动画组
例子
如果希望在
千早爱音发言时,触发动画组Anon,将角色位节点切为显示千早爱音,那么可以用:
消息来源:角色消息
if 条件:SenderName == "千早爱音"
触发动作组:Anon如果希望在遇到文本
【微笑】时,触发动画组微笑,将当前角色状态设置为微笑,那么可以用:
消息来源:角色消息
文本匹配:【微笑】-> (空)(如果希望不在消息中显示该标记)或【微笑】->$0(如果希望在消息中保留该标记)
触发动作组:微笑
总结
总结一下,我们是如何将纯文本的角色扮演和场景资源联系起来的?
场景规则里文本匹配/条件满足 -> 触发动画组 -> 按一定顺序播放动画组里的动画 -> 设置资源的状态/属性 -> 拿着状态名称找到资源的状态预设,按照不同资源的底层能力实现状态改变