动画剧本语法

Creator 使用中文剧本语言编排动画。剧本中的素材、舞台、摄像机、字幕、画中画、后期特效、演员组、形状、碎片源等对象统一称为演员;大多数动画效果都通过“选择演员属性,再变更属性值”完成。

语法规则

基本规则

语法元素说明示例
实体【】 包裹的演员名、属性名、数字或自定义名称【柚柚】 【位置】 【0.5】
命令命令接收实体作为参数,并产生瞬时或连续的时间线片段入场 变更为
语句一个或多个命令组合成语句,并以逗号、分号、句号或换行分隔【柚柚】入场。
字符串扩展冒号后用引号包裹文本,常用于台词和文本属性说:“你好”
缩进块冒号后换行并缩进 4 个空格,常用于分镜、动作和循环分镜【开场】:
注释// 开头的单行注释,或 /// 包裹的多行注释// 这是注释
代码块用三个反引号包裹的 JavaScript 代码``` ``

标点符号支持中英文两种形式。例如 ,【】[] 效果相同。文档示例统一使用中文标点。

实体与值

实体可以表示演员、属性、数字、自定义名称或属性值。

类型写法说明
演员【柚柚】当前舞台中名为“柚柚”的演员
子演员【柚柚】的【左手臂】通过 访问演员层级中的子演员
属性值【柚柚】的【位置】通过 访问属性,得到一个可读写的值
列表项【当前舞台】的【特效列表】【1】访问列表属性中的指定位置,常用索引从 1 开始
数字【0.5】 【90】用于时间、角度、坐标、比例等
向量【100】【200】写入二维向量属性时传入两个数字
布尔【是】 【否】写入布尔属性时使用
切分点【0.5】【0.5】【90】写入切分点属性时传入横向坐标、纵向坐标和角度

时间线

命令默认串行执行,通过 (分号)并行执行。

A,B,C;
D,E。
F。

时间线结构如下:

A ─── B ─── C ────┐
                  ├─ F
D ─── E ──────────┘
  • A 和 D 同时执行
  • A、B、C 串行执行
  • D、E 串行执行
  • F 在 C 和 E 都完成之后执行

缩进块

部分命令需要在冒号 后换行,使用 4 个空格缩进一组子语句。

分镜【开场】:
    【教室】入场。
    【柚柚】入场。
    【柚柚】说:“大家好!”。

动画持续时间与补间

【N】秒内 会为后续支持动画的命令设置持续时间。属性变更、文本逐字显示、摄像机切换、绕目标旋转等都可以配合 秒内 使用。

【1】秒内,【柚柚】的【位置】增加【500】【0】。
【0.5】秒内,使用补间【缓入缓出】,【舞台字幕】的【内容】文本变更为:“欢迎观看”。

支持的补间名称:

补间说明
线性匀速变化
缓入开始慢,后面快
缓出开始快,后面慢
缓入缓出开始和结束都较慢

属性列表

属性类型

类型写入方式说明
文本【名称】文本变更为:“内容”普通短文本可直接写在实体中,多行或带标点的文本使用字符串扩展
整数【12】整数数值
数字【1.5】浮点数值
是/否【是】 【否】布尔值
演员【柚柚】指向另一个演员
二维向量【100】【200】横向值、纵向值
切分点【0.5】【0.5】【90】单位坐标横向值、纵向值、角度
列表【列表属性】【1】变更为...按索引写入或移除单项

通用演员

所有演员都支持以下属性。

属性类型用途
置顶是/否是否显示在普通演员上方

2D 演员

场景、场景图层、定位点、角色、骨骼、道具、表情、手势、图片序列特效、视频特效、粒子特效、画中画、形状和生成出来的碎片都属于 2D 演员。

属性类型用途
位置二维向量全局位置
旋转角度数字全局旋转角度,单位为度
缩放比例二维向量全局横向与纵向缩放比例
倾斜角度数字全局倾斜角度,单位为度
相对位置二维向量相对父演员的位置
相对旋转角度数字相对父演员的旋转角度
相对缩放比例二维向量相对父演员的横向与纵向缩放比例
相对倾斜角度数字相对父演员的倾斜角度
透明度数字透明度,1 为不透明,0 为完全透明
可见是/否是否显示在最终合成画面中

位置旋转角度缩放比例倾斜角度 表示全局值;带 相对 前缀的属性表示局部值。

摄像机

摄像机继承 2D 演员属性,并额外支持:

属性类型用途
摄像机尺寸二维向量摄像机输出尺寸
变焦比例二维向量横向与纵向变焦比例

字幕

字幕继承 2D 演员属性,并额外支持:

属性类型用途
内容文本字幕显示的文本
字体大小整数字体字号
字体颜色文本字体颜色,例如 #FFFFFFFF
轮廓宽度整数描边宽度
轮廓颜色文本描边颜色,例如 #000000FF

骨骼角色

角色继承 2D 演员属性,并额外支持:

属性类型用途
声线文本 命令使用的配音声线

角色的骨骼是子演员,继承 2D 演员属性。切换姿势使用 变换为,执行姿势动作使用 执行动作

场景

场景、场景图层、场景图片、场景定位点都继承 2D 演员属性。场景本身可入场,定位点常用于读取 位置 属性。

道具

道具、道具视图、道具图片都继承 2D 演员属性。道具文本子演员额外支持文本内容属性。

属性类型用途
文本文本道具文本子演员显示的内容

切换道具状态使用 变换为

表情

表情继承 2D 演员属性,并额外支持:

属性类型用途
帧率数字表情动画播放帧率

切换表情状态使用 变换为,播放表情动画使用 播放暂停重置

手势

手势继承 2D 演员属性。切换手势状态使用 变换为,绑定到角色手部骨骼使用 依附到

图片序列特效

图片序列特效继承 2D 演员属性,并额外支持:

属性类型用途
帧率数字图片序列播放帧率

切换特效状态使用 变换为,播放序列动画使用 播放暂停重置

视频特效

视频特效继承 2D 演员属性。切换视频片段状态使用 变换为,播放视频片段使用 播放暂停重置

粒子特效

粒子特效继承 2D 演员属性。粒子特效没有状态,播放和停止使用 播放暂停重置

音频

音频继承通用演员属性。切换音频片段使用 变换为,播放和停止使用 播放暂停重置

画中画

画中画继承 2D 演员属性,并额外支持:

属性类型用途
分镜文本画中画内部要播放的分镜名
播放方向整数1 为正放,-1 为倒放
播放时间点数字画中画内部当前时间点,单位秒
音量数字画中画内部音量,1 为原始音量,0 为静音

后期特效

后期特效使用 变换为 切换效果形态。支持的形态包括 模糊马赛克颜色反转遮罩变形运动模糊

属性类型用途
模糊半径数字模糊效果半径
块大小数字马赛克块大小
遮罩形状演员遮罩效果使用的演员捕获源,可以是形状或其他世界空间演员
反转是/否遮罩或颜色相关效果是否反转
亮度数字遮罩区域亮度
透明度数字后期特效混合透明度
宽度比例数字变形效果的横向比例
高度比例数字变形效果的纵向比例
横向位置数字变形中心横向位置,通常为 0 到 1
纵向位置数字变形中心纵向位置,通常为 0 到 1
强度数字运动模糊强度
曝光比例数字运动模糊曝光时间比例
Tile大小整数运动模糊速度分块大小
采样数整数运动模糊采样数量
最大半径数字运动模糊最大采样半径
最小速度数字低于该速度时不产生明显运动模糊
覆盖宽度数字运动覆盖边缘软化宽度
深度容差数字运动模糊深度比较容差

舞台

舞台继承通用演员属性,并额外支持:

属性类型用途
特效列表演员列表按顺序挂载作用于整个舞台的后期特效

演员组

演员组继承通用演员属性,并额外支持:

属性类型用途
演员列表演员列表指定局部后期特效影响的演员
特效列表演员列表指定作用于演员组的后期特效链

形状

形状继承 2D 演员属性,并额外支持:

属性类型用途
宽度数字矩形或三角形宽度
高度数字矩形或三角形高度
半径数字圆形半径
渲染模式文本capture_only 只作为捕获源,visible 在画面中可见

形状支持 变换为【矩形】变换为【圆形】变换为【三角形】

碎片源

碎片源用于切分一个或多个演员,并生成可继续做动画的碎片演员。

属性类型用途
演员演员列表要切分的源演员列表
切分点切分点列表切分线列表,每项包含横向坐标、纵向坐标、角度
贴图模式文本冻结快照持续跟随
名称前缀文本生成碎片演员的名称前缀

碎片

生成出来的碎片演员继承 2D 演员属性。


命令列表

基础命令

编号命令名语法
1001分镜分镜【名称】: + 缩进块
1002播放分镜播放分镜【名称】
1003动作动作【名称】: + 缩进块
1004异步执行异步执行: + 缩进块
1005异步循环执行异步循环执行【名称】: + 缩进块
1006循环执行循环执行【N】次: + 缩进块
1007秒后【N】秒后
1008秒前【N】秒前
1009秒内【N】秒内
1010停止异步循环停止异步循环【名称】
1011动画代码动画代码【名称】: + 代码块
1012使用补间使用补间【名称】

演员与属性命令

编号命令名语法
1501【演员】的【子演员或属性】
1502执行动作【演员】执行动作【动作名】
1503添加标签【演员】添加标签【标签名】
1504移除标签【演员】移除标签【标签名】
1505创建演员使用【模板】的模板创建【名称】
1506批量创建演员使用【模板】的模板创建【N】个名字前缀为【前缀】的演员
1507变更为【属性值】变更为【值】
1508增加【属性值】增加【值】
1509减少【属性值】减少【值】
1510文本变更为【文本属性】文本变更为:“文本”
1511移除【列表属性】移除【索引或演员】
1512【演员】说:“台词”
1513入场【演员】入场
1514退场【演员】退场
1515显示在外侧【演员A】显示在【演员B】外侧
1516显示在里侧【演员A】显示在【演员B】里侧
1517执行动画代码【演员】执行动画代码【代码名】
1518依附到【演员A】依附到【演员B】
1519解除依附【演员】解除依附
1520变换为【演员】变换为【形态】
1521播放播放【演员】
1522暂停暂停【演员】
1523重置重置【演员】

2D 辅助命令

编号命令名语法
2001偏移位置【位置来源】的【角度】度方向【距离】点处
2014绕目标顺时针旋转【演员A】绕【演员B】顺时针旋转【角度】度
2015绕目标逆时针旋转【演员A】绕【演员B】逆时针旋转【角度】度

摄像机与舞台命令

编号命令名语法
6002切换摄像机切换摄像机为【摄像机】
7001切换舞台切换舞台为【舞台】
7002清空舞台清空舞台
7003清空舞台但保留清空舞台但保留【演员...】

命令说明

1001 分镜

定义一个可复用的分镜片段。

语法: 分镜【名称】: + 缩进块

分镜【开场】:
    【教室】入场。
    【柚柚】入场。

播放分镜【开场】。

1002 播放分镜

执行一个已定义的分镜。

语法: 播放分镜【名称】

播放分镜【开场】。

1003 动作

定义一个可复用动作。动作执行时可通过 【目标演员】 引用当前执行动作的演员。

语法: 动作【名称】: + 缩进块

动作【点头】:
    【0.2】秒内,【目标演员】的【旋转角度】增加【10】。
    【0.2】秒内,【目标演员】的【旋转角度】减少【10】。

【柚柚】执行动作【点头】。

1004 异步执行

异步执行一个缩进块,块内时间不会阻塞主时间线。

语法: 异步执行: + 缩进块

异步执行:
    【2】秒内,【柚柚】的【位置】增加【600】【0】。
【柚柚】说:“移动时也可以说话”。

1005 异步循环执行

后台循环执行一个缩进块。命名后可用 停止异步循环 停止。

语法: 异步循环执行【名称】: + 缩进块

异步循环执行【呼吸】:
    【0.5】秒内,【柚柚】的【缩放比例】增加【0.03】【0.03】。
    【0.5】秒内,【柚柚】的【缩放比例】减少【0.03】【0.03】。

【3】秒后,停止异步循环【呼吸】。

1006 循环执行

按指定次数重复执行缩进块。

语法: 循环执行【N】次: + 缩进块

循环执行【3】次:
    【0.2】秒内,【柚柚】的【位置】增加【0】【30】。
    【0.2】秒内,【柚柚】的【位置】减少【0】【30】。

1007 秒后

将当前时间向后推进指定秒数。

语法: 【N】秒后

1008 秒前

将当前时间向前回退指定秒数,最早回到 0 秒。

语法: 【N】秒前

1009 秒内

设置后续动画命令的持续时间。

语法: 【N】秒内

【1】秒内,【柚柚】的【位置】变更为【教室】的【讲台】的【位置】。

1010 停止异步循环

停止一个已命名的异步循环。

语法: 停止异步循环【名称】

1011 动画代码

定义一段 JavaScript 动画代码,供 执行动画代码 调用。

语法: 动画代码【名称】: + 代码块

动画代码【上下跳动】:
    ```
    stopTime = startTime + 1.0;
    function update() {
        actors[0].Position.Y -= Math.sin(currentFrameWeight * Math.PI) * 80;
    }
    ```

【柚柚】执行动画代码【上下跳动】。

1012 使用补间

设置后续属性动画使用的补间曲线。

语法: 使用补间【名称】

【1】秒内,使用补间【缓入缓出】,【柚柚】的【位置】增加【500】【0】。

1501 的

访问子演员、属性、列表项或复合值字段。

语法:

【演员】的【子演员名】
【演员】的【属性名】
【演员】的【列表属性】【索引】
【值】的【横向值|纵向值|角度】
【柚柚】的【脸】。
【柚柚】的【位置】。
【当前舞台】的【特效列表】【1】。
【柚柚】的【位置】的【横向值】。

1502 执行动作

执行剧本中定义的动作,或执行演员当前形态自带的动作。

语法: 【演员】执行动作【动作名】

1503 添加标签

给一个或多个演员添加标签。之后可以用标签名批量引用这些演员。

语法: 【演员】添加标签【标签名】

1504 移除标签

从演员上移除标签。

语法: 【演员】移除标签【标签名】

1505 创建演员

使用模板创建一个新演员。模板可以来自素材,也可以来自内置模板;如果传入已有演员名,会使用该演员的模板。

语法: 使用【模板】的模板创建【名称】

内置模板包括 摄像机字幕舞台画中画碎片后期特效演员组形状

使用【柚柚】的模板创建【柚柚2】,入场。
使用【摄像机】的模板创建【特写镜头】,入场。
使用【后期特效】的模板创建【模糊特效】,入场。

1506 批量创建演员

使用模板创建多个演员,并自动为它们添加名称前缀标签。

语法: 使用【模板】的模板创建【N】个名字前缀为【前缀】的演员

使用【柚柚】的模板创建【3】个名字前缀为【观众】的演员,入场。
【观众】的【缩放比例】变更为【0.4】【0.4】。

1507 变更为

设置属性值。配合 秒内 可创建属性动画;列表属性和构建期属性会立即生效。

语法: 【属性值】变更为【值】

【柚柚】的【位置】变更为【教室】的【讲台】的【位置】。
【柚柚】的【缩放比例】变更为【0.5】【0.5】。
【舞台字幕】的【字体大小】变更为【56】。
【模糊特效】的【模糊半径】变更为【12】。

1508 增加

在当前属性值基础上增加数值。支持数字和二维向量。

语法: 【属性值】增加【值】

【1】秒内,【柚柚】的【位置】增加【500】【0】。
【0.3】秒内,【柚柚】的【旋转角度】增加【20】。

1509 减少

在当前属性值基础上减少数值。支持数字和二维向量。

语法: 【属性值】减少【值】

【0.3】秒内,【柚柚】的【相对旋转角度】减少【20】。

1510 文本变更为

设置文本属性。配合 秒内 时会产生逐字显示效果。

语法: 【文本属性】文本变更为:“文本”

【3】秒内,使用补间【线性】,【舞台字幕】的【内容】文本变更为:“欢迎来到沙柚动画 Creator”。

1511 移除

从列表属性中移除指定索引或指定演员。

语法: 【列表属性】移除【索引或演员】

【当前舞台】的【特效列表】移除【1】。
【打码组】的【演员列表】移除【路人甲】。

1512 说

让演员说出台词。演员需要有 声线 属性;命令会自动生成语音,并在当前舞台的 舞台字幕 上显示文本。

语法: 【演员】说:“台词”

【柚柚】说:“大家好,欢迎观看。”。

1513 入场

让演员进入当前舞台。

语法: 【演员】入场

【教室】【柚柚】【柚柚表情】入场。

1514 退场

让演员离开当前舞台。

语法: 【演员】退场

1515 显示在外侧

将演员显示在参考演员外侧,也就是更靠前的位置。

语法: 【演员A】显示在【演员B】外侧

1516 显示在里侧

将演员显示在参考演员里侧,也就是更靠后的位置。

语法: 【演员A】显示在【演员B】里侧

1517 执行动画代码

在指定演员上执行 动画代码 中定义的 JavaScript。

语法: 【演员】执行动画代码【代码名】

1518 依附到

将一个或多个演员依附到另一个演员。依附后,子演员会跟随父演员变换。

语法: 【演员A】依附到【演员B】

【柚柚表情】依附到【柚柚】的【脸】。

1519 解除依附

解除演员与父演员的依附关系。

语法: 【演员】解除依附

1520 变换为

将演员切换到另一个形态。可用于角色姿势、道具状态、表情状态、手势状态、图片序列特效状态、后期特效形态、形状形态等。

语法: 【演员】变换为【形态】

【柚柚】变换为【站立】。
【沙柚截图】变换为【角色】。
【模糊特效】变换为【马赛克】。
【遮罩形状】变换为【圆形】。

1521 播放

播放可播放演员。支持画中画、表情、图片序列特效、视频特效、粒子特效和音频。

语法: 播放【演员】

1522 暂停

暂停可播放演员,并保留当前播放位置。

语法: 暂停【演员】

1523 重置

重置可播放演员的播放位置。

语法: 重置【演员】

2001 偏移位置

基于某个 2D 演员或位置值,计算指定方向和距离处的位置。0 度方向为右方。

语法: 【位置来源】的【角度】度方向【距离】点处

【柚柚】的【位置】变更为【教室】的【讲台】的【0】度方向【200】点处。

2014 绕目标顺时针旋转

让演员绕另一个 2D 演员顺时针旋转指定角度。配合 秒内 使用。

语法: 【演员A】绕【演员B】顺时针旋转【角度】度

2015 绕目标逆时针旋转

让演员绕另一个 2D 演员逆时针旋转指定角度。配合 秒内 使用。

语法: 【演员A】绕【演员B】逆时针旋转【角度】度

6002 切换摄像机

切换当前舞台使用的摄像机。默认摄像机名称为 舞台摄像机,也可以用 当前摄像机 引用当前正在使用的摄像机。配合 秒内 时会从旧摄像机平滑过渡到新摄像机。

语法: 切换摄像机为【摄像机】

使用【摄像机】的模板创建【特写镜头】,入场。
【特写镜头】的【位置】变更为【柚柚】的【位置】。
【1】秒内,切换摄像机为【特写镜头】。

7001 切换舞台

切换当前构建舞台。切换后创建、入场、清空、设置舞台特效等操作都会作用于新舞台。新增舞台时使用内置 舞台 模板。

语法: 切换舞台为【舞台】

使用【舞台】的模板创建【回忆舞台】。
切换舞台为【回忆舞台】。
【旧教室】入场。

切换舞台为【初始舞台】。

7002 清空舞台

清空当前舞台上的演员。

语法: 清空舞台

7003 清空舞台但保留

清空当前舞台,但保留指定演员。

语法: 清空舞台但保留【演员...】

清空舞台但保留【柚柚】【当前摄像机】【舞台字幕】。

内置演员与常用工作流

默认舞台、摄像机和字幕

剧本构建时会自动创建初始舞台,并为当前舞台准备默认摄像机和字幕:

名称说明
初始舞台默认舞台,也可用 InitialStage 引用
当前舞台当前正在构建或播放的舞台
舞台摄像机当前舞台的默认摄像机
当前摄像机当前舞台正在使用的摄像机
舞台字幕当前舞台的默认字幕

场景入场

场景不再使用专门的“变更场景”命令。直接让场景演员入场,并按需调整摄像机。

【教室】入场。
【当前摄像机】的【变焦比例】变更为【0.7】【0.7】。

画中画

分镜【监控画面】:
    【走廊】入场。
    【柚柚】入场。

使用【画中画】的模板创建【监控屏】,入场。
【监控屏】的【分镜】变更为【监控画面】。
【监控屏】的【缩放比例】变更为【0.35】【0.35】。
【监控屏】的【位置】变更为【电视机】的【位置】。
播放【监控屏】。

舞台后期特效

使用【后期特效】的模板创建【拖影】,入场。
【拖影】变换为【运动模糊】。
【拖影】的【强度】变更为【1.2】。
【当前舞台】的【特效列表】【1】变更为【拖影】。

演员组后期特效

使用【后期特效】的模板创建【打码】,入场。
【打码】变换为【马赛克】。
【打码】的【块大小】变更为【24】。

使用【演员组】的模板创建【打码组】,入场。
【打码组】的【演员列表】【1】变更为【路人甲】。
【打码组】的【特效列表】【1】变更为【打码】。

遮罩

使用【形状】的模板创建【聚光圆】,入场。
【聚光圆】变换为【圆形】。
【聚光圆】的【半径】变更为【200】。
【聚光圆】的【位置】变更为【柚柚】的【位置】。

使用【后期特效】的模板创建【聚光遮罩】,入场。
【聚光遮罩】变换为【遮罩】。
【聚光遮罩】的【遮罩形状】变更为【聚光圆】。
【聚光遮罩】的【反转】变更为【是】。
【当前舞台】的【特效列表】【1】变更为【聚光遮罩】。

切分碎片

使用【碎片】的模板创建【切分器】,入场。
【切分器】的【演员】【1】变更为【柚柚】。
【切分器】的【名称前缀】变更为【碎片】。
【切分器】的【贴图模式】变更为【冻结快照】。
【切分器】的【切分点】【1】变更为【0.5】【0.5】【0】。
【切分器】的【切分点】【2】变更为【0.5】【0.5】【90】。

【1】秒内,【碎片1】的【位置】减少【300】【0】。
【1】秒内,【碎片2】的【位置】增加【300】【0】。

切分点 使用单位坐标,横向值和纵向值通常在 01 之间。贴图模式 可写 冻结快照持续跟随