Skip to content
On this page

通用人形动作与游戏内工作室 ​

通用动作把“角色长什么样”和“持剑时怎么动”分开。玩家使用的模型只要具备下文十个标准部位,就会自动使用默认待机、行走、奔跑、蹲下、蹲走、空手挥拳、弓和剑连段。无需逐模型配置、手动映射、修改模型或导出保存。

自动适配面向第三人称的玩家自定义模型与整身时装。普通生物继续使用模型自身动画。原版皮肤玩家可由服务器开启分段四肢,默认关闭;第一人称独立手部动作不在本次适配范围内。工作室用于制作自定义覆盖,模型几何、纹理与 UV 仍在 Blockbench 中制作。

直接使用默认动作 ​

给自己设置实体模型或穿上整身时装后,只要实际骨骼中各有一个 Body、Head、RightArm、RightForeArm、LeftArm、LeftForeArm、RightLeg、RightForeLeg、LeftLeg、LeftForeLeg,即可在第三人称看到动作。名称区分大小写,不能多出空格;缺失或重复的标准部位不会被强行适配。

例如,魔法少女与魔法少年都具备这十个部位,切换到魔法少年后会直接使用同一套默认动作,无需为少年模型再保存一份映射。骨骼的原有位置和父子关系保留;同名约定不代表可以把未分段的手脚凭空拆开。

站立时自动待机,移动时行走,疾跑时跑步;保持潜行时切换蹲下,潜行移动时切换蹲走。主手拿剑再左键普攻触发五段剑动作,使用弓时使用弓姿态;空手左键普攻使用右手直拳、左手直拳,连续有效输入时交替出拳。默认动作只改变显示,伤害仍由原版普攻处理。已有自定义默认普攻会保留,不被新增空手预设覆盖。

原版玩家分段四肢 ​

服务器 plugins/ChaEngine/config.yml 的完整系统配置为:

yaml
# 原版皮肤玩家是否使用前臂、小腿分段和默认动作。
# 不影响标准十部位自定义模型的自动适配。
actions:
  editor:
    # 玩家名或 UUID;默认空列表关闭编辑入口,OP 也不能绕过。
    whitelist: []
  vanilla-player:
    enabled: false

把 enabled 改为 true,执行重载配置后,原版皮肤玩家也会使用同一套默认动作,包括蹲下、蹲走。宽臂、细臂、皮肤外层、原版盔甲与手持物跟随分段四肢;不需要模型文件。游泳、鞘翅、骑乘等常态槽位默认不播放,未指定动画时保留原版姿态;睡眠、死亡和旁观姿态仍由原版处理。关闭开关后恢复原版四肢。

此开关随服务器同步给客户端,适用于六个受支持客户端版本。两端需要一起更新并完整重启;缺少该字段等同于 false。

打开动作编辑器 ​

工作室通过打开动作编辑器命令进入,F6 不再打开。管理员先在 actions.editor.whitelist 中添加自己的玩家名或 UUID,然后重载配置。名单匹配玩家名时不区分大小写;默认空名单禁止任何玩家编辑,OP 也必须加入。移出白名单并重载后,现有编辑授权也会撤销。

左侧动画库以服务器保存的数据为准。进入后默认暂停;重新打开或重启客户端后都会重新读取服务器动画库。编辑权限只限制打开、导入和保存,不影响普通玩家看到已保存的动作。

人物、光环和悬浮物同时播放 ​

工作室把 动画库分类、播放分组、动作规则 分开管理。动画库分类只整理素材,例如“徒手动作”“法阵”;播放分组决定哪些动画同时运行;动作规则决定待机、移动和攻击时调用哪个动画。一个动画可被多个规则或播放组引用,移动分类不会改变播放用途,也不需要复制动画。

  • 人物动作只有一个组,负责待机、行走、奔跑、潜行等常态、持物和武器连段。攻击只覆盖自己写了关键帧的通道;例如上半身剑招没有腿部轨道时,移动中的腿部继续行走。
  • 独立分组可以有多个,每组同时运行一个片段。切换人物攻击不会重置光环或悬浮物的播放进度。
  • 每个独立组选择一个或多个根骨骼,自动包含其子骨骼。请把光环、悬浮物放在人物十部位之外的独立骨骼中;挂在 Head 或 Body 下仍会继承人物动作。
  • 两个组不能同时占用同一骨骼的同一通道。高级设置可以只启用位移、旋转或缩放;发生范围或通道冲突时,预览会提示具体骨骼,整次姿态修改不生效。

快速制作旋转光环 ​

  1. 通过打开动作编辑器命令进入,在顶部选择服务器已有的实体或时装模型。entity: 与 equip: 是两个独立目录,同名模型也不会混用。工作室默认正面预览并暂停,先点击“继续”开始播放。
  2. “组合预览”保留默认的“人物动作”,点击“添加分组”,选择光环的根骨骼并命名为“光环”。
  3. 选择效果范围:所有同名骨骼模型或仅当前模型,再选择“持续旋转”模板。自动建立 4 秒绕 Y 轴旋转 360 度的循环动画。需要浮动时另建一组,选择“上下浮动”:2 秒内上下往返 2 模型像素。
  4. 在右侧选择默认动画、“持续效果 · 自动播放”或“仅指令 / 插件调用”、循环方式和速度。高级设置提供通道范围、过渡时长和重新映射;世界中切换组动画时按该时长衔接前后姿态。
  5. 左侧胶囊开关只暂停对应组;S 或“仅看此组”可以单独检查它。“同时播放”区域显示每组自己的进度,顶部“状态”下拉可模拟待机、行走、奔跑、蹲下、蹲走、跳起、下落、游泳、攀爬、骑乘、飞行、鞘翅滑翔和使用物品,旁边可试播攻击。切换状态从头开始;处于暂停时仍保持暂停。
  6. “编辑所引用动画”进入动画库中的关键帧编辑,单独预览该动画;多组组合效果回到“组合预览”检查。完成后点击“保存到服务器”,收到成功提示后立即供在线玩家使用。

在任意分类制作默认挥拳 ​

  1. 打开“关键帧”,在左侧 动画库分类 → … → 新建分类 创建“徒手动作”。分类可以改名,空分类可以删除;不会删除动画或改变任何动作规则。
  2. 点击“动画片段”旁的 +,选择“十部位人形动作”,命名为“挥拳”。按真实骨骼名制作时也可选择“骨骼动画(按名称匹配)”;动画类型不决定存放分类或播放用途。
  3. 编辑关键帧,将动画设为单次播放。选中它,点击列表下方 动画用途 → 设为默认攻击,确认后替换默认攻击顺序。此操作只引用动画,不会把它移动到“人物动作”。默认沿用普通攻击命中;自定义范围需在规则页另行开启判定箱攻击。
  4. 点击“保存到服务器”。十部位自动匹配的魔法少女、魔法少年会复用已保存规则,无需分别保存模型绑定;有自定义绑定的模型保留骨骼与挂点设置,已配置更高优先级规则时以该规则为准。

在默认优先级下,武器专用规则优先,未匹配时使用默认攻击。 例如默认剑规则仍用于主手持剑,空手或没有匹配规则的物品使用“挥拳”。组合预览增加“模拟主手”,可选择空手、剑、弓或填写物品 ID;“攻击”按钮与实际玩家使用同一套范围和物品匹配规则。先点击“继续”,再检查连段。

画布顶部的“状态”“模拟主手”“攻击”“重置”集中在同一工具栏,窄窗口下自动换行。“状态”和“模拟主手”右侧的下拉箭头固定显示,点击整个控件即可选择;它们只修改编辑器模拟状态,不改变玩家实际持物或动作规则。

“动画用途”还提供“加入攻击规则”“用于独立播放组”和“查看已有用途”。片段下方“移动分类”只改变整理位置;复制动画才会产生一份可以分别修改的新动画。分类名称支持写成“徒手动作/基础”等路径式名称,按完整名称筛选。

动作规则 页面直接选择“所有兼容模型”或“指定模型”,也可以停用规则。默认库包含空手动作,主动移除的规则不会在保存时自动补回。通用默认引用可通过左侧“解除通用默认引用”移除;若该规则另有明确的适用范围,还需停用规则才能退出自动匹配。动画库分类、默认规则和所有引用随服务器保存;单独导出标准动画不包含这些用途设置。

跑动时攻击是人物组内已有的动作合成,不是两个独立播放组。 默认剑招保留跑动的腿部;标准导入动画没有写到的骨骼通道也会保留基础姿态。光环等独立组用于另外的骨骼范围,不改变这项移动攻击规则。

暂停人物组会同时冻结跑动、当前攻击和连段计时,暂停中不能新触发试播攻击。“暂停全部”冻结所有组;继续后保留各组原本的暂停状态。组合预览的 空格 控制总暂停,关键帧页的 空格 只控制正在编辑的片段;攻击范围页同样只播放当前攻击段。攻击时人物进度条显示当前攻击片段,结束后回到待机或移动片段。

模板只提供起点,可以修改或换成 Blockbench 动画。模型几何、纹理和 UV 仍在 Blockbench 中制作。普通生物的自带动画仍按原有动画规则运行;人物默认动作与第一人称手部动作的适用范围不变。

让同一法阵动画用于多个模型 ​

通用骨骼动画不等于十部位人形动作。 例如,魔法少女与魔法少年都含有独立的 fazhen 骨骼,可以共用一组法阵动画,无需为两个模型各做一份。

  1. 选择其中一个模型,添加“法阵”分组,作用骨骼选择 fazhen。
  2. 新建时选择 所有同名骨骼模型。已有组可在组合预览或 动作规则 → 持续效果 的属性顶部修改范围,无需进入高级设置。这是整个分组的范围,与动画库分类无关。
  3. 在法阵组属性点击“从模板创建”,选择空白、旋转或其他模板;新动画进入动画库,同时由当前法阵组引用。也可以先在动画库制作,再通过“动画用途 → 用于独立播放组”引用。组创建后仍可随时创建起始动画。
  4. 在“动作规则 → 持续效果”加入该分组,选择起始动画和循环方式,点击“保存到服务器”。已有组通过左侧 + 加入;“移出持续效果”只停止自动播放,保留分组和素材。详见持续效果管理。

发布后,玩家使用的实体模型或时装模型中,存在同名骨骼就播放;缺失骨骼会跳过,其他匹配骨骼继续播放。整个作用范围都不存在时,该组不改变模型姿态,也不会阻断人物动作。重名、匹配不唯一、动画超出分组范围或两个组争用同一通道仍会提示错误,避免改错部位。

新建组时明确选择适用范围,保存后保留设置的模型范围。切换成“所有同名骨骼模型”后,其他模型可以直接使用,无需逐个绑定。切回“仅当前模型”时,以当前预览模型为目标。骨骼仍使用各模型自己的父子关系与旋转中心;同名并不保证尺寸、轴向不同的模型外观完全相同。

适用范围保存在工程中,由服务器统一保存。单独导出 .animation.json 只包含曲线;自动播放与跨模型设置请使用“保存到服务器”。客户端与服务端需使用同批次更新,六个受支持客户端版本均提供此能力。

让当前玩家执行后空翻 ​

  1. 导入动画并保存到服务器,确认它在画布和素体中的骨架形式正确。
  2. 打开 动作规则 → 主动调用,选择例如“后翻滚”。这里可以复制调用指令,也能“在自己身上试播”;组合预览选中库中动画后,右侧也提供试播入口。
  3. 管理员或控制台使用播放玩家动画命令。插件技能使用 Java API 的当前模型播放方法。无需把动画加入“人物动作”分组,也无需给每个模型创建规则。

试播只作用于当前玩家身上的实际实体模型或时装,不会把预览窗口选择的模型穿到玩家身上。有未保存修改时先确认保存,成功提交后编辑器关闭,可在第三人称查看。单次动画结束后恢复基础动作;循环或保持末帧动画可用停止玩家动画命令结束。独立装饰组继续播放。

主动播放只改变模型姿态,不移动玩家实际坐标,也不触发攻击判定或伤害。模型缺少某个动画骨骼时跳过该轨道;骨架形式、旋转中心不兼容仍可能导致外观不正确,不能靠“播放成功”判断适配正确。原版皮肤的分段默认动作与这里的实体 / 时装模型主动播放是不同入口。

导入 Blockbench 动画 ​

点击顶部“导入动画”,选择 .animation.json 文件。文件窗口提供地址栏、上一级、个人文件、下载、工作室与磁盘入口,支持搜索文件名和新建文件夹。地址栏可粘贴完整文件或目录路径,按回车或点击“前往”。选中文件后点击“选择文件”,才进入导入检查。

首次导入从当前系统用户的 Downloads 目录开始;不存在时依次回退到工作室或个人文件目录。以后优先使用最近成功选择的位置,目录已删除时自动回退。不会要求存在 PlayerAnimation 子目录,也不依赖开发者用户名。导入与导出分别记住最近目录。

导入窗口左侧勾选动画,点击名称在右侧素体模型上预览,可以播放、暂停、拖动进度、转动和缩放。为当前动画选择骨架形式,也可以“用于全部选中动画”。默认创建新分类,名称来自文件名并去掉 .animation.json 或 .json 后缀;例如 翻滚.animation.json 显示为“翻滚”。同名分类存在时自动加序号,也可手动改名。

素体按不透明实体显示,前面的肢体会挡住后面的部位,地面网格不会透过身体。正面带有眼睛和嘴部标记,转到背面时这些标记会被头部挡住,便于判断翻滚、转身和关节弯曲方向。若旧版素体出现透视或缺面,请更新客户端 Mod 并完整重启游戏后再预览。

点击“导入到服务器”,等待服务器保存成功后,动画才出现在左侧库中。当前工作区已有修改会一起保存,窗口底部有明确提示。导入只添加动画库素材,不自动创建攻击规则或加入播放组;之后通过“动画用途”配置引用。在“组合预览”左侧动画库点击片段会直接在当前组合画布中播放该片段,不会跳到关键帧页;需要编辑曲线时再切换顶部“关键帧”。

匹配顺序为:手动指定 → 唯一同名 → 唯一的不区分大小写匹配。因此动画中的 head 可以自动匹配模型的 Head;重名或匹配不唯一时需要选择目标骨骼,或明确忽略该轨道。动画库导入和单独预览允许缺失骨骼跳过,保留原轨道供其他模型使用。素体只有标准人形部位,光环等额外骨骼应导入后在实际模型上检查。人物映射与独立组的“重新映射”可查看模型目标及匹配方式;映射随服务器保存,不会改写模型文件。

人物组的 RightItem、LeftItem 默认作为手持物虚拟轨道,无需模型中存在同名骨骼;也可以手动指定实际骨骼。独立组若含这些名称,须显式映射到组内实际骨骼或忽略,避免接管人物持物。导入动作的坐标与 Blockbench 一致,原有父子层级、旋转中心仍由模型决定。

骨骼同名不等于骨架兼容。 .animation.json 不包含来源模型的父子关系和关节原点。现在可以为每段动画独立选择以下骨架形式,播放和画布操纵器共用同一套选择;切换不会修改模型文件。

骨架形式联动方式适合的动画
十部位平级身体、头、上臂、前臂、大腿、小腿分别独立为平级部位单独写完整曲线的动画
史蒂夫分段身体、头、双上臂、双大腿平级;前臂跟随上臂,小腿跟随大腿史蒂夫式六大部位动画及其分段扩展
上身联动分段头和双上臂跟随身体;前臂跟随上臂;双大腿独立,小腿跟随大腿身体与大腿分别写翻滚曲线的分段人形动画
模型原有层级标准骨骼动画保持模型原本父子关系;内置人形动作保留其默认联动已有配套骨架的动画、非人形和装饰动画

导入初选“上身联动分段”,请先用素体核对;导入后也可在“关键帧 → 动画设置 → 动画骨架形式”修改,再保存到服务器。不要把所有部位都挂到 Body 下:身体与大腿已经分别旋转的动画会因此重复旋转。三种人形形式只适配标准部位及其手动映射,不改变独立光环、法阵的真实父子关系。关节原点、模型比例和静止姿态仍来自模型;来源差异很大时,这三种层级选择不能替代重新制作动画。

例如导入 剑类职业普攻.animation.json:把所需三段放入“剑类动作”分类,在 动作规则 → 人物规则 选择剑规则,明确选择“所有兼容模型”或“指定模型”,表单条件添加“主手剑类”。在“后续连段”替换各节点的动画、调整后续跳转,保存到服务器。文件没有腿部轨道时,行走腿部会继续播放;光环与悬浮物继续各自的循环。实际人物播放要求十部位已经自动或手动匹配完整。

支持标准 format_version: "1.8.0" 的 animations、数值常量、数字字符串、向量、时间关键帧、pre / post、linear、catmullrom、布尔循环和 hold_on_last_frame。override_previous_animation: true 会把这段动画涉及的骨骼恢复到默认姿态,再应用它的曲线;例如翻滚不会残留这些骨骼之前的位移或缩放。此设置随动画保留并导出,不会再显示为“未支持的数据”,也不会清除其他骨骼或解除独立组的范围限制。完整旋转圈数会保留,360 度不会被缩成 0 度。声明时长之外的关键帧保留并提示;例如时长 0.75 秒而头部存在 0.7917 秒的帧,时间轴仍显示该帧,文件不会被自动裁短。

Molang 表达式、未支持的插值、声音、粒子及其他扩展数据会保留原文,并阻止该片段播放或进入攻击规则;不会把表达式当作 0。此时可原样导出回 Blockbench 处理。工作室不会自动从 .bbmodel 内提取片段,请先在 Blockbench 导出动画文件。

编辑关键帧与查看模型 ​

“关键帧”页左侧选片段和骨骼,底部选择轨道与时间。右侧切换旋转、位移或缩放,每个轴都有拖动条和数值框。预览中的选中骨骼还会显示 Blockbench 式画布操纵器:位移是 X/Y/Z 彩色箭头,旋转是三色圆环,缩放是三轴方块;直接拖动对应手柄即可只改当前轴。拖动即时预览并写入当前时间的关键帧,整次拖动只产生一次撤销;拖动中按 Esc 取消本次调整。直接填写数值时,点击“写入关键帧”应用。开始拖动会暂停预览,避免编辑时刻继续移动。

鼠标悬停在轴线、圆环、端点或 X/Y/Z 字母上时,对应轴会加粗并提亮,字母显示高亮边框;画布左下方会提示例如“旋转 X 轴 · 按住左键拖动”。三轴交叉处优先选择离鼠标最近的手柄,也可以直接拖动字母标签来指定轴。按下后锁定当前轴,拖过其他轴不会切换;拖动期间持续显示更粗的轴线和“正在旋转 X 轴”等提示,松开或取消后恢复悬停状态。鼠标中键仍然只平移视角。

画布左上角也可以切换“移动 / 旋转 / 缩放”。红色是 X 轴,绿色是 Y 轴,蓝色是 Z 轴;轴向跟随骨骼的实际父级、姿态及映射。旋转圆环可以连续拖动多圈;侧着看的圆环可沿可见方向拖动。画布缩放手柄最低为 0.01 倍,避免拖穿零点;如需负缩放,使用数值框。位移或缩放轴正对视线时会暂时隐藏,稍微旋转视角即可重新显示。没有匹配到模型骨骼的逻辑通道仍使用右侧数值框与拖动条编辑。

旋转拖动条默认覆盖 -180~180 度,位移默认 -16~16 模型像素,缩放默认 0~4 倍;已有数值超出时会扩展显示范围。精确值、多圈旋转和负缩放仍可直接输入。“曲线”切换为 XYZ 曲线视图,拖动关键点可改变数值。pre 是到达该帧前的值,post 是该帧之后的值;可分别编辑或合并。

选中骨骼后,预览以紫色线框显示该骨骼及子骨骼的实际几何范围,并标出关节点与原始名称。范围随动画姿态更新,不限于十个人形部位。没有自身几何的父组显示子骨骼范围;未匹配或空组会明确提示。高亮线框与模型使用同一观察方向,左右位置会随视角保持一致;拖动修改的就是当前选中的模型骨骼。线框用于定位编辑范围,不是攻击判定箱。

每次打开工作室都重新读取服务器动画库并默认暂停。组合预览点击“继续”或按 空格 开始播放;关键帧页点击播放按钮或按 空格 播放当前片段。临时预览进度不会保存;关闭前需要保留的编辑内容请先保存到服务器。编辑器暂停不影响世界中的人物动作。

在组合页点击动画库片段,会从头试播这一个动画;“导入到服务器”成功后也会试播首个导入片段。此时底部显示该动画的进度,单次动画结束后停在末帧,循环动画持续播放。可暂停、回到开头或在右侧“重新播放”。试播暂时冻结原组合进度,不修改任何分组或动作规则;点击“返回组合播放”恢复原来的组合,逐组暂停与独奏设置仍保留。右侧“编辑关键帧”或顶部“关键帧”进入当前试播动画的编辑页。

选择独立组根骨骼、手动映射或导入动画的目标骨骼时,窗口按模型的真实父子关系显示可折叠骨骼树,保留 Blockbench 原始名称和同级顺序。点击箭头展开/折叠,点击名称选择;可展开全部、折叠全部,鼠标停留在行上可在底部查看完整路径。输入名称搜索时会保留父级路径,清空搜索恢复原有折叠状态。选择独立组的父骨骼仍包含其全部子骨骼,折叠仅改变显示。

关键帧侧栏区分“模型骨骼树”和“通用动作通道”:按真实骨骼名制作的动画显示模型层级,与是否跨模型通用无关;内置通用人形动作显示固定十部位及整体位移、持物通道的逻辑层级。这些通道通过映射驱动模型,不代表模型原有分组。动画文件本身没有父子结构,重新映射时先按原名选择来源轨道,再从目标模型的骨骼树中选择骨骼。

预览使用独立实例,不改变世界中的穿戴者。打开、切换模型和“重置视角”都从模型正面观看;关键帧页为正视,组合预览为正面略侧视。避开操纵器,在画布空白处左键拖动旋转视角;切到“平移视图”后左键拖动平移。按住鼠标中键拖动随时平移,松开中键即停止。滚轮缩放,最大 1600%,最小值随模型自适应且不高于 1%;视口左下角显示当前比例。“重置视角”恢复正面视角、平移和 100%。右侧骨骼“缩放”与视图缩放无关。

地面为半透明棋盘格填色,上方冷青色、下方暖棕色;角度提示区分“地面上方 · 俯视”“地面下方 · 仰视”和“平视 0°”。填色不遮挡模型,网格不会跟随动画自动运动。大模型超出视口会裁剪,关节、判定箱和“重置视角”按钮仍在模型上方。

窗口较小时,列表和属性可以滚动。Ctrl+S 保存到服务器,Ctrl+Z 撤销,Ctrl+Y 或 Ctrl+Shift+Z 重做。片段列表下方直接提供“改名 / 复制 / 删除”;独立分组属性顶部直接提供重命名与删除。删除分组会保留动画片段;删除动画时,仍被动作规则引用的片段须先替换引用。关闭时若有未保存修改会提示,确认放弃后不会保留本地草稿。

保存、导入与导出 ​

顶部固定提供四个入口,各自处理一种文件用途:

入口何时使用保存或读取的内容
刷新重新读取服务器当前动画库有未保存修改时先确认放弃,避免覆盖其他编辑者的更新
导入动画添加 Blockbench 导出的动作素体预览、选择骨架形式和分类后,直接导入服务器
导出动画交给 Blockbench 或分享动画曲线勾选一个或多个片段,输出标准 .animation.json;不包含分组、触发规则和判定箱
保存到服务器保存当前编辑结果并生效动画、分类、骨架形式、分组、映射、动作规则与判定箱

不再区分客户端工程、发布包和服务器缓存。点击“保存到服务器”或 Ctrl+S,等待服务器写入成功后才显示已保存;在线玩家同步更新,通常不需要再次重载。服务器统一存放在:

text
plugins/ChaEngine/actions/
  humanoid.chaaction.json
  animations/
    <自动管理的分类动画文件>

动画曲线使用标准 .animation.json,服务器同时保存骨架形式、播放规则等信息。左侧库展示当前有效分类与片段;文件的组织和备份不需要在编辑器中操作。备份或迁移服务器时,请整体备份 plugins/ChaEngine/actions/。更新 Jar 不会覆盖已有的服务端动作文件。

保存失败、超时或另一位编辑者已经更新时,不会把当前修改标成已保存。发生冲突请先导出要保留的动画,再刷新服务器动画库并重新导入;不自动覆盖他人的更新。超时仅表示结果未确认,先刷新核对,避免重复导入。重启客户端后重新打开仍会看到已成功保存的分类、动画和分组。

“导出动画”先勾选片段,再选择保存位置和文件名。已存在同名文件时会确认覆盖,不再固定写入 export.animation.json。标准动画保留原名、时间与支持的插值;通用预设按当前模型以 60 帧/秒烘焙为实际骨骼动画,因此导出前需要加载并匹配该模型。导出只写入电脑,不改变服务器动画库。

通用人物动作与模型专属动画无需另选一种“保存格式”。 在任意分类创建的十部位人形动作保留逻辑通道,保存到服务器后可复用于已自动或手动匹配的模型;标准导入动画保留模型骨骼名称和映射。标准文件没有骨架形式、分组和规则字段,重新导入时仍需选择合适形式。分组属于哪个模型、是否通用、选择了哪些根骨骼,都由服务器保存。

服务器只读取工作室保存的当前动画库;新增动画使用“导入动画”,不扫描游离文件,也不转换历史目录。插件通过 按组播放 API调用库中动画。模型和贴图仍需提前提供给客户端,按资源目录放置;保存动画不会上传模型或纹理。

默认动作、自定义覆盖与旧工程 ​

默认动作在服务器正常启动时就可用,不要求动作工程,首次启动也不会为了自动适配生成该文件。temporary 模型在服务器重启后需重新设置,见实体模型命令。

以 entity:魔法少女 为例,标准模型直接使用默认人物动作,骨骼映射页显示“默认动作 · 标准骨架自动适配”。制作独立光环组不要求复制人物绑定。需要更换人物动作时,在“动作规则 → 人物规则”创建规则,选择适用范围、主手物品和动作后保存;十部位必须已经自动或手动匹配。可在人物组的“骨骼映射与自定义覆盖”中点击“创建自定义覆盖”并调整挂点。已保存的自定义绑定优先提供骨骼和挂点设置,播放规则再按范围及优先级选择。多个模型共用一条规则时,修改攻击列表会同时影响这些模型。映射页的“移除覆盖,使用默认动作”移除模型绑定;明确指定范围的规则仍需在规则页停用,保存到服务器后生效。

当前保存格式为 version: 8,不再读取或迁移旧版动作工程,也不转换旧 humanoid.json。新增常态槽位属于当前格式的可选设置,已保存的当前格式动画库继续读取。更新前备份整个动作目录;需要的标准 .animation.json 可以重新导入,规则、骨骼映射和持续效果通过当前界面重新创建。原文件不会自动转换或删除;保存新设置会写入当前格式。读取失败时保留当前运行中的有效库,首次启动没有有效库时使用默认动作。

恢复备份前先保存整个动作目录,保留模型绑定和自定义内容。“刷新”只重新读取服务器当前结果,不会恢复内置预设或清空服务器。旧客户端本地草稿不会自动上传;其中需要保留的标准动画,可通过新版导入窗口重新导入。

客户端与服务端必须一起更新、完整重启。本版六个受支持客户端版本使用相同的分组、文件格式与 API 语义;Forge 1.16.5 的渲染适配采用其旧版接口。

默认动作范围 ​

默认动作包含上臂、前臂、大腿、小腿以及独立的持物旋转,可在工作室作为关键帧编辑。空手动作左右交替,出拳侧前臂伸展,另一侧保持收臂姿态。

片段显示名称用途
idle呼吸待机待机呼吸与轻微关节弯曲
walk轻快行走行走,上臂、前臂及膝盖联动
run快速奔跑奔跑,含前臂摆动与膝盖屈伸
crouch潜行蹲下原地潜行,身体前倾、头部补偿及四肢弯曲
crouch_walk潜行蹲走潜行移动,保留前臂、小腿联动
bow拉弓蓄力满弓姿态,前臂独立弯曲
punch_right右手直拳右手出拳、左手收臂
punch_left左手直拳左手出拳、右手收臂
sword_1上挑斩击上挑
sword_2下劈斩击下斩
sword_3向内横斩向内横斩
sword_4向外横斩向外横斩
sword_5回旋斩击旋转斩

这些片段按约 60 帧/秒采样动作计算与平滑过程:行走周期固定为 1 秒,奔跑周期固定为 0.6 秒,蹲走周期固定为 1.6 秒,步幅取完整步幅;蹲下按原地潜行采样;弓采用水平满弓姿态;剑动作从站姿起步,采样前 10 tick 的攻击阶段并保留短暂收尾。直拳从站姿起步,每段 0.55 秒。行走、奔跑和潜行时,默认攻击保留当前腿部状态,直拳和前四段剑动作保持整体朝向,第五段剑动作保留旋转。

常态动作的配置与优先级见常态动作。跳起、下落、游泳、攀爬、骑乘、飞行、鞘翅滑翔提供独立槽位,默认不播放;可直接引用动画库中的动画。

当前预设不包含动态步频、随视线瞄准、拉弓蓄力过程、落地缓冲、攀爬、游泳、剑气轨迹和攻击后的持续战斗待机。连段节奏由下文可编辑的规则控制。

十个标准部位 ​

标准部位默认实际骨骼名动作关系
头Head跟随身体
身体Body上半身根
右上臂RightArm跟随身体
右前臂RightForeArm跟随右上臂
左上臂LeftArm跟随身体
左前臂LeftForeArm跟随左上臂
右大腿RightLeg独立腿根
右小腿RightForeLeg跟随右大腿
左大腿LeftLeg独立腿根
左小腿LeftForeLeg跟随左大腿

骨骼在 Blockbench 中可以平级放置,也可以嵌套。动作播放会按上表建立关节关系,无需改写原模型的父子结构。头发、裙摆等未被动作接管的装饰骨骼继续跟随原模型动画。只有十个标准部位完整且名称唯一时才自动适配;其他名称的模型可以通过自定义覆盖映射。

肘部和膝盖必须具有合适的旋转中心。映射只能指定现有骨骼,不会把单块手臂自动切成上臂与前臂。不同模型的坐标轴朝向不同,可在“骨架映射”中填写局部 XYZ 校准角度。

fullBody: true 让整身时装以角色根位置渲染,避免再叠加 part 的身体部位变换。hidePlayer: true 同时接管原版玩家主体和附属绘制,避免皮肤、护甲或其他分部位装饰穿出;手持物改用自定义前臂挂点。需要组合多个装饰时,优先把它们制作在同一套模型骨骼中。

手持物默认根据前臂几何定位握点:取横向与前后方向的中间位置,纵向位于前臂下端向上三分之一处,适合垂直下垂的标准人形前臂。省略 rightHand / leftHand 或填写 null 即使用自动挂点。带大型饰物、横放手臂或没有前臂几何的模型应手动校准;没有可用几何时使用标准人形挂点。

需要手动设置时,rightHand 与 leftHand 填写相对前臂旋转中心的局部 XYZ 偏移,单位为模型像素。例如 [0, -4, -2] 表示沿 Y 向下 4 像素、沿 Z 负方向移动 2 像素。明确填写的挂点作为手动值;想采用自动定位需将其改为 null 后保存到服务器。左右惯用手会镜像通用动作。

默认动作的通用关节与持物轨道在播放时适配到模型;无需为了修正预设的弯曲方向移动模型原点。按真实骨骼名制作的动画使用 Blockbench 坐标;人形整体位移 Root 使用模型坐标。相同骨架的 .bbmodel 与 .geo.json 应保持相同的前后方向和关节效果。

通用动作还支持三个无需骨骼映射的辅助轨道:Root 控制整个人形的位移、转身与缩放;RightItem、LeftItem 只调整对应手持物相对于挂点的姿态,不会带动前臂。内置剑动作利用持物轨道切换握剑方向。在骨骼列表中选择“整体位移”“右手持物”或“左手持物”即可编辑,模型仍然只需具备十个标准部位。

关键帧与动作类型 ​

项目含义
positionX、Y、Z 位移,单位为模型像素,16 像素为一个方块
rotationX、Y、Z 旋转,单位为度
scale各轴缩放倍率,1 表示原大小;标准动画可使用零或负值
linear · 线性两帧之间匀速变化,适合持续旋转、机械运动
catmullrom · 平滑曲线参考相邻关键帧平滑连接,适合柔和运动;可能超过端点数值
smooth · 缓入缓出首尾减速插值,标准导出时烘焙采样
step · 阶跃保持当前值,到下一帧时立即切换,适合突然变化
duration动作长度,单位为秒
blend单次动作的淡入和淡出时长,单位为秒
allowMove默认 true;动画播放时是否允许主动走动、冲刺和跳跃
allowLook默认 true;独立控制动画播放时能否转动视角
loop是否循环;连段中的攻击必须是单次动作
keepMovingLegs默认 false;设为 true 时,移动或奔跑期间保留基础动作的四个腿部轨道。仅用于通用动作,可在 JSON 中修改
stationaryRoot默认 false;设为 true 时,移动或奔跑期间不覆盖基础动作的 Root 轨道。仅用于通用动作,可在 JSON 中修改

添加关键帧时会暂停播放;相同时间的关键帧会更新。时间轴每行显示一个骨骼通道;点击菱形选中关键帧,横向拖动改变时间,按 Delete 删除所选帧。时间尺和拖帧按 60 FPS 对齐,可用时间输入框填写更精确的数值。滚轮缩放时间尺,下方滚动条平移时间范围,轨道区域滚轮切换可见轨道。密集采样帧的标记会合并显示,原始关键帧不会减少。

时间轴顶部的 总时长 可直接修改片段长度,范围为 0.01~600 秒,没有 2 秒上限。例如把 2 秒改成 10 秒,原本位于 0.5 秒和 2 秒的关键帧仍在原处,只增加末尾空白。缩短时不能越过已有关键帧或判定区间,也不能截掉动画特效的生效区间;请先移动这些内容,或使用 按比例拉伸。

在右侧“时间 / 秒”填写超过当前总时长的时间,再写入骨骼关键帧或拖动轴向数值条,会自动延长片段并显示完整时间范围。例如在 12 秒写帧,总时长自动延长到 12 秒。这次写帧与延长一起撤销,不会改变其他帧的时间。

按比例拉伸 用于整体变快或变慢:例如把 2 秒拉伸到 10 秒,原来 0.5 秒的帧会移到 2.5 秒,所有骨骼关键帧、判定箱关键帧和生效区间都按相同比例调整,动画特效的开始与结束时间也一起调整。显示全部 恢复完整时间范围;时间尺缩放只影响查看,不修改动画时长。切换片段或改变时长后也会显示完整范围。

撤销和重做最多保留 32 次编辑。完成后点击“保存到服务器”,收到保存成功提示再关闭;重开后保留所设置的时长与关键帧。

武器拖影与模型残影 ​

选中动画,打开 关键帧 → 右侧“动画特效” → 添加。这里的特效跟随动画播放;“动作规则 → 持续效果”则用于让独立骨骼动画自动播放,两者用途不同。

给一个 0.6 秒的挥剑动画添加刀光,可以这样操作:

  1. 添加“主手武器拖影”,保持“自动适配武器范围”开启。
  2. 把生效区间设置为 0.1~0.35 秒,点击“应用特效设置”。这样只在挥击阶段留下轨迹,收招时不再生成。
  3. 点击播放,选择“使用玩家当前持物”检查自己的武器;当前手为空时使用示例剑,也可切换示例剑、斧或三叉戟。这个选择只改变编辑器预览。
  4. 点击“保存到服务器”。同一动画被规则、指令或插件技能调用时,会一起播放这些特效。

自动模式按实际持物外形和运动轨迹取点,不按材质名称限定武器类型。 原版武器、资源包武器以及 ChaEngine 自定义物品模型都走当前持物渲染;长剑换短剑时会重新适配长度。双持时分别添加主手和副手拖影,主手跟随玩家惯用手。世界中空手不生成武器拖影。

刀光沿挥动轨迹形成平滑曲面,尾部逐渐收窄、淡出,外缘带有较亮的光带。建议先使用默认 0.2 秒消散时间,只覆盖挥击阶段;把生效区间扩展到收招或长时间持握,会让尾迹也覆盖这些动作。不透明度控制浓淡,长度倍率控制武器上的扫掠范围,二者都不改变动画速度。

对于弯刃、双刃或外形不适合自动识别的武器,可关闭自动适配,填写 起点 XYZ / 终点 XYZ,再调整长度倍率。端点使用随手运动的持物空间,单位为像素,16 像素等于 1 方块;它们决定刀光扫过的线段,无需修改武器模型。手动端点是该动画的设置;尺寸差别大的武器优先使用自动模式,或制作不同动画引用。

添加“模型残影”后,会保留模型过去的姿态和位置,带着原贴图逐渐淡出。例如翻滚可使用 0.08 秒生成间隔、0.35 秒消散时间和 0.4 不透明度。当前实体仍保持正常绘制;只有历史姿态成为残影。暂停预览会冻结特效,重新定位时间、重置或修改动画会清理旧轨迹,避免把两个时刻连成一条线。

检查残影时请播放翻滚、挥臂或实际移动:完全静止时,历史姿态与本体重合,不能靠残影数量判断是否启用。刀光和残影都会被前方实体、模型本体及地形遮挡,不会穿墙显示;特效之间不会产生不透明的遮挡面。若编辑器能看到而游戏中没有,请检查当前动作规则引用的是否为添加了特效的那个动画,并确认已经保存到服务器。

设置默认值范围或作用
生效区间当前动画全长在动画总时长内设置开始与结束;结束后已有特效继续消散
颜色#BDEFFF六位十六进制颜色;残影在模型原贴图上染色
不透明度拖影 0.65,残影 0.40.01~1
消散时间拖影 0.2 秒,残影 0.35 秒0.03~2 秒,越长越拖尾
自动适配武器范围开启从当前武器外形识别线段;关闭后手动填写两个端点
长度倍率10.1~8,沿起点调整线段长度
手动端点起点 0, 0, 0,终点 0, 0, -16每轴 -1024~1024 像素
残影生成间隔0.08 秒0.03~1 秒,越小越密集;最多同时保留 6 个历史姿态

每个动画最多添加 8 个特效,默认没有特效。特效不改变伤害与攻击判定,需要伤害范围时仍使用下方的判定箱。当前支持动作工作室预览、实体替换模型和隐藏原人物的全身时装模型;不作用于原版皮肤、局部时装或第一人称手部。模型残影记录模型本体,手持武器可另加拖影。过于复杂的模型会跳过残影,避免大量历史几何拖慢画面;武器拖影仍可使用。

特效随动画保存在服务器,重新打开后保留。标准 .animation.json 只导出骨骼动画,不携带武器拖影、模型残影或动作规则;需要转移整套设置时,备份服务器的 plugins/ChaEngine/actions/。

需要技能临时生成残影时,可直接使用生成玩家模型残影指令或残影 API,无需修改当前动画。一次调用指定颜色、每道存留时间,以及可选的数量和间隔;多道残影由客户端按一个批次采样,不依赖服务器逐次执行。批次残影不保存进动画库,与上面的随动画特效分别使用。

人物组可新建“十部位人形动作”或“骨骼动画(按名称匹配)”;独立组直接新建使用真实骨骼名的动画,是否跨模型由分组的“范围”决定。骨骼局部坐标不代表只能用于单个模型。标准导入动画可以与内置人物基础动作一起使用,缺失的通道保留基础姿态。通用人形动作的 keepMovingLegs、stationaryRoot 仍用于内置动作的移动适配,标准文件按其真实骨骼通道播放。

工作室不改写原来的 .bbmodel。骨骼动画与攻击判定分开保存,判定箱不会被当作骨骼写入标准文件。

武器分类与连段 ​

规则先筛选启用状态、模型范围和触发事件,再判断唯一一份表单或脚本条件。优先级数字越大越优先;同级时指定模型优先,再同级时有条件的规则优先于无条件规则;相同条件等级时优先明确的默认引用,其余按列表顺序。表单“主手剑类”匹配物品 ID 的 _sword 后缀;弓规则匹配材质 BOW 或 CROSSBOW。空手规则匹配 AIR,默认优先级 -100,新建规则默认优先级 10。完整操作与脚本示例见动作条件与连段。

控制器字段默认值作用
enabledtrue关闭后不参与匹配
scopeallall(所有兼容模型)或 models(指定模型)
models空数组scope: models 时填写 entity:模型ID、equip:时装ID 或 vanilla;空列表不触发
priority0-1000~1000,数值越大越优先
idle / walk / run同名片段空闲、移动、奔跑
usebow使用物品姿态;内置剑规则为空,表示保持基础动作
triggerleftPress起手事件;支持左右键按下和松开、蹲下、冲刺、起跳、落地
condition空表单表单或脚本二选一;没有独立材质筛选,建议在编辑器中设置
entry / nodes空字符串 / 空对象入口节点与分支流程,节点引用动画,跳转设置事件、条件和时间窗口
chainWindow0.8上一段结束后仍可衔接下一段的秒数
speed1.0动作播放倍率
hitboxCombatfalse开启后用判定箱决定命中;允许无判定箱的回避、收招等无伤害节点

例如,第一段长 0.55 秒,分支开始进度为 0.65 时,约 0.358 秒后可进入第二段。稍早的有效攻击可缓存到衔接点;超过结束后的 0.8 秒再攻击,从第一段重新开始。内置规则按上挑、下斩、向内横斩、向外横斩、旋转斩顺序播放,第五段之后继续攻击会回到第一段。可删除节点并重新连接分支来缩短连段。

动作规则 分成“人物规则”“持续效果”“主动调用”。人物规则顶部设置范围与优先级,下方分为 1 触发与播放 / 2 后续连段 / 常态动作 / 攻击判定。模型目标及匹配方式直接显示,不藏在高级设置里。所有兼容模型只影响能够匹配十部位或已有映射的玩家模型;指定原版玩家还要求服务端开启分段四肢。

“1 触发与播放”按何时开始、满足什么条件、满足后播放的顺序设置。普通条件通过表单填写,复杂条件切换自定义脚本;修改后点击“应用条件”或“应用节奏”,再保存到服务器。“2 后续连段”左侧管理节点,右侧选动画、设置移动与视角开关、添加后续跳转。每条跳转可以选择事件、条件和目标节点,并设置进度窗口与提前缓存;同一事件有多个匹配时按列表顺序取第一条。删除节点只解除引用,不删除动画。“常态动作”设置待机、行走、奔跑和使用物品。“攻击判定”提供编辑攻击范围入口。单个片段的画布试播在组合预览中点击动画;“在自己身上试播”位于主动调用页。

复制规则保留范围、动作和节奏,但副本默认停用;调整后再启用并保存,避免立即抢占原规则。重命名不改变引用顺序;移动动画分类不改变规则。删除被模型绑定或通用默认引用的规则前,先修改或解除引用。停用规则会退出自动匹配,但不会删除动画。

切换武器分类、死亡、退出和重载都会清理原连段。未开启 hitboxCombat 时保留原版命中与伤害;开启后按下文判定箱流程结算。附近观察者会收到同一段动作,并在加入观察时补齐状态。首版剑连段输入面向玩家;自定义生物的攻击继续由原有实体动画机制负责。

制作攻击判定箱 ​

判定箱是随动作变化的攻击范围。例如,前刺可以沿前方放置几个短箱体;横斩可以让一个长箱体逐渐转过面前,也可以分阶段激活几个箱体。它们用于攻击判定,不改变角色的走路碰撞体积。

  1. 在“动作规则 → 人物规则 → 攻击判定”点击“选择攻击段并编辑判定箱”。左侧“返回动作规则”返回列表后可改选另一段。
  2. 点击“+ 添加判定箱”。右侧可直接重命名、复制和删除;填写开始、结束时间后点击“应用起止时间”。
  3. 切换位置、旋转或尺寸,通过 XYZ 拖动条即时调整;精确输入后点击“写入当前时间的范围帧”。这些变换写到当前播放时刻;移动时间尺后再次修改即可形成动画。也可拖动预览中的彩色轴移动箱体。
  4. 时间轴显示每个箱体的生效条。拖动两端调整起止时间,拖动中间平移整个区间;选中箱体后,可展开其位置、旋转、缩放轨道并拖动或删除关键帧。
  5. 为需要造成伤害的节点配置判定箱,返回“动作规则 → 攻击判定”,开启“用动作判定箱处理普攻命中”。回避、收招节点可以没有箱体。
  6. 点击“保存到服务器”,收到成功提示后生效;未保存的编辑不会改变服务器战斗效果。

左侧眼睛按钮仅隐藏或显示工作室里的箱体线框,不会停用服务器判定。

位置以角色脚底为原点,随角色水平朝向旋转;Y 正方向向上,Z 正方向向前,X 为左右方向。位置和尺寸单位均为方块,尺寸填写三条边的完整长度;这里的 transform.scale 表示箱体尺寸,不是模型缩放倍率。箱体可以自由旋转,首版使用角色局部坐标,不自动绑定手骨,也不会从剑的网格生成范围。通用动作在左惯用手下会同时镜像动作和判定范围。

每个片段最多 32 个箱体,位置各轴范围为 -16~16 格,尺寸每轴 0.01~8 格。生效区间必须位于片段时长内且结束晚于开始。箱体支持与骨骼相同的线性、平滑和阶跃插值;工作室“写入当前时间的范围帧”写入线性关键帧。

默认 singleTarget: false,范围内每个目标可以命中一次。设为 true 后,该段命中第一个有效目标便停止寻找其他目标;同一采样时刻按距离优先。同一攻击段内,同一目标跨多个箱体、多个时刻只处理一次;下一段可以再次命中。被插件排除、取消或接管的目标也会记为已处理。

服务器根据已发布的范围判断目标,客户端只提交攻击输入。判定只覆盖有效、可见且有生命值的实体,尊重无敌状态和世界 PVP 设置,不穿墙。服务器会补采样两个游戏刻之间的动作变化;超低 TPS 或极快运动仍可能有离散采样误差。换主手栏位、换武器、换世界、死亡和移除模型绑定会中止当前判定。

没有插件接管时,每个目标调用一次原生近战攻击流程,保留护甲、附魔、暴击、击退、耐久和其他插件的伤害事件,仍受原版攻击冷却影响。多目标依次执行普攻,不保证每个目标都获得满冷却伤害;需要统一范围伤害、额外特效或职业公式时使用下方事件接管。原版左键直接伤害和剑的额外横扫伤害会被阻止,防止重复结算或箱外额外扣血;原生攻击附带的横扫击退仍由服务器核心处理,需要完全自定义击退范围时也应接管命中效果。

第三方插件接入 ​

公开 API 与可取消事件见 Java API:动作与攻击判定。插件可在起手时取消整段,或在命中时读取攻击 ID、片段、当前箱体及本次新增目标,接管默认效果。所有调用与事件均在服务器主线程。

完整分组工程示例 ​

日常制作直接在工作室导入并保存即可。下面文件示例供服务器初次迁移或离线配置参考;已有动画库时先备份整个目录,避免覆盖其他动画和规则。

假设已有 equip:magical_girl 时装,包含十个标准部位,以及独立的 Aura、FloatingItem 根骨骼。下面两个文件让人物使用默认动作,光环持续旋转,悬浮物上下浮动。光环组设为通用范围,其他含有 Aura 的玩家模型也会播放;悬浮物组只用于此时装。骨骼名、时装 ID 与实际模型不同则需一起改为真实名称。

先创建 plugins/ChaEngine/actions/animations/accessories.animation.json:

json
{
  "format_version": "1.8.0",
  "animations": {
    "aura_spin": {
      "loop": true,
      "animation_length": 4,
      "bones": {
        "Aura": { "rotation": { "0.0": [0, 0, 0], "4.0": [0, 360, 0] } }
      }
    },
    "ornament_float": {
      "loop": true,
      "animation_length": 2,
      "bones": {
        "FloatingItem": {
          "position": {
            "0.0": { "post": [0, 0, 0], "lerp_mode": "catmullrom" },
            "1.0": { "post": [0, 2, 0], "lerp_mode": "catmullrom" },
            "2.0": { "post": [0, 0, 0], "lerp_mode": "catmullrom" }
          }
        }
      }
    }
  }
}

再创建 plugins/ChaEngine/actions/humanoid.chaaction.json。这个例子不改变人物默认动作,因此无需填写十部位绑定和武器覆盖:

json
{
  "version": 8,
  "id": "humanoid",
  "bindings": {},
  "mappings": {},
  "controllers": {},
  "clips": {
    "aura_spin": { "space": "BEDROCK", "blend": 0, "singleTarget": false, "hitboxes": {} },
    "ornament_float": { "space": "BEDROCK", "blend": 0, "singleTarget": false, "hitboxes": {} }
  },
  "assets": {
    "aura_spin": { "file": "animations/accessories.animation.json", "animation": "aura_spin" },
    "ornament_float": { "file": "animations/accessories.animation.json", "animation": "ornament_float" }
  },
  "groups": {
    "aura": {
      "name": "光环",
      "model": "equip:magical_girl",
      "universal": true,
      "roots": ["Aura"],
      "clips": ["aura_spin"],
      "mapping": {},
      "clip": "aura_spin",
      "loop": "asset",
      "channels": 2,
      "autoplay": true,
      "enabled": true,
      "speed": 1,
      "blend": 0.1
    },
    "ornament": {
      "name": "悬浮物",
      "model": "equip:magical_girl",
      "universal": false,
      "roots": ["FloatingItem"],
      "clips": ["ornament_float"],
      "mapping": {},
      "clip": "ornament_float",
      "loop": "asset",
      "channels": 1,
      "autoplay": true,
      "enabled": true,
      "speed": 1,
      "blend": 0.1
    }
  }
}

roots 包含子骨骼;clips 是该组允许播放的动画,clip 是默认片段。autoplay 控制模型出现时是否启动;enabled 控制整组是否启用。loop 可选 asset(跟随文件)、loop(循环)、once(单次)、hold(保持末帧)。channels 是通道组合:位移 1、旋转 2、缩放 4,相加可组合,7 表示全部。mapping 是动画骨骼到模型骨骼的手动映射,空字符串目标表示忽略。

universal 默认 false,只应用于 model。设为 true 后,分组按骨骼名用于玩家当前的实体模型和各个时装模型,缺失的根骨骼或动画骨骼会跳过;model 保留创建时的模型 ID。不同玩家、不同实际模型的播放进度与 API 调用相互独立。

文件使用 UTF-8 无 BOM,单文件最大 2 MiB;完整工程最多 256 个模型绑定、256 个动画、128 个独立组、64 个控制器和总计 20,000 个关键帧。数值必须有限;时长不超过 600 秒,播放速度 0.1~5 倍,过渡不超过 5 秒。标准静态姿态允许长度为 0;工作室以最短时间范围显示,未修改时导出保留 0。

标准动画文件可在 Blockbench 中编辑后替换,重新加载时以文件里的时长、循环和曲线为准。工程仅保存引用与调用规则,不复制这些曲线。

常见问题 ​

打开工作室后按钮和预览模糊,只有输入框清楚:这是旧版工作室的界面显示问题。更新客户端 Mod 后完整重启游戏,再通过打开动作编辑器命令进入;按钮文字、时间轴和预览应保持清晰,不需要调整游戏的全局模糊选项。

拖动时网格跟着转动:拖动是在旋转观察视角,模型和网格会一起改变观察方向;这不会修改模型或动作。网格是空间参考线,不应成为遮挡模型的平面。没有拖动、缩放或重置视角时,网格不会跟随动画自动运动。

从下方看模型时像被一块平面切掉:这是旧版工作室的预览显示问题。更新客户端 Mod 并完整重启游戏,再打开动作工作室;仰视和俯视时模型都应完整显示在预览窗口范围内,关节、判定箱和“重置视角”按钮也不应被模型遮住。无需为此修改模型骨骼或裁掉模型面片。

打开后没有模型:先确认已进服,并且服务器配置了实体或时装模型。只有模型文件、没有服务端模型 ID 时,目录不会出现该模型。

切换模型后总是盔甲架,还拿着自己的武器:这是旧版工作室在资源加载失败时显示了错误预览。更新后,失败条目只显示“模型资源未就绪”和所需模型、贴图路径,不再显示盔甲架;普通预览不会复制玩家主手物品,正常剑、弓动作仍有对应的示意武器。只有为动画添加武器拖影并选择“使用玩家当前持物”时,预览才会使用自己的武器。目录列出的是服务器配置条目,不代表客户端文件一定存在。请按提示核对当前游戏目录的 resourcepacks/ChaEngine/model/,并查看 logs/latest.log;若是 .bbmodel 解析失败,参考 Blockbench 模型排错。

更新后仍提示“模型资源未就绪”:按日志中的具体原因处理。file missing 表示配置引用的文件未放入当前客户端资源目录,只有服务端示例配置不会生成模型文件;BBModel face has zero area 是旧版对零厚度面片处理不当,需要安装包含该修复的客户端并完整重启。模型文件存在,也可能在贴图读取或模型转换阶段失败,不能仅凭文件存在排除资源问题。

已替换 Jar,但模型仍盖住提示栏或按钮:必须退出并完整重启客户端,返回服务器列表或重新进服不会重新加载 Mod。更新后的三维预览应限制在中央窗口内,提示栏、关节、判定箱和重置按钮显示在模型上方;大模型超出窗口边界时仍会按窗口裁剪。

预览不动或只有装饰在动:检查是否选了正确动作、实际骨骼名是否存在,以及十个部位是否重复映射。修正后重新保存并重载。绑定失败会跳过该模型的通用动作,不会停用其他模型。

选中右手却高亮左手,或高亮方向反了:这是旧版工作室的选中范围显示问题。更新客户端 Mod 后完整重启游戏;更新后的高亮会跟随当前选中的真实骨骼,左右位置和模型方向保持一致,已经拖动保存的动作数据不需要重新制作。

武器模型提示缺少 RightArm 等骨骼:默认人形动作要求十个标准部位。枪械等非人形模型应新建“骨骼动画(按名称匹配)”,编辑它自己的真实骨骼;不要为了消除提示,把不存在的手臂映射到任意零件。缺少人形骨骼与上述预览平面裁切是不同问题。

肘部、膝盖向反方向弯折,或剑绕着错误位置转动:先更新客户端和服务端并完整重启。旧版通用动作的方向换算和持物挂点存在问题,无需先移动 Blockbench 中正确的关节原点。新建绑定使用自动握点;已有工程中明确填写的 rightHand / leftHand 会继续生效,可改为 null 后保存到服务器。若曾为补偿旧版错误填写骨架校准或反转关键帧,请撤回这些补偿,再逐段检查 sword_1~sword_5。只有缺少前臂、持物轨道的早期工程需要恢复内置预设。不同形状的手掌仍可用手动挂点微调;映射无法弥补没有关节分段的模型。

编辑后其他玩家没有变化:先确认已收到“已保存到服务器”,并检查动作用途、模型范围和骨骼匹配。导出只保存电脑文件。若重启后导入动画消失,请同时更新两端并重新导入旧本地文件;新版成功保存后会从服务器重新加载。

独立动画不播放:确认组已发布、模型 ID 与目录正确、根骨骼存在;检查默认片段、自动播放和组启用状态。如果提示范围重叠,请调整根骨骼或通道范围。API 返回已提交只代表服务器接受请求;客户端未绘制该角色时,状态不会变为已应用。

看得到判定箱却没有按范围攻击:确认已经发布、重载且在武器规则中开启“使用判定箱攻击”,每一段都含有效判定箱。检查玩家穿戴或替换的模型已绑定、主手物品命中该规则,并确认插件没有取消起手或命中事件。

重载后仍是旧动作:先确认模型是否有已发布的自定义覆盖。覆盖优先于内置动作,可以移除覆盖后发布,或在工程中恢复内置预设再发布。文件校验失败会保留上一份有效工程;客户端收到不完整或无效工程时也继续使用旧数据。

模型可以显示,但没有通用连段:确认同时更新了服务端插件和客户端 Mod,模型实际具备十个名称唯一的标准骨骼,主手拿着剑。若已有自定义覆盖,再核对模型 ID、控制器与物品分类;普通实体不会因为存在同名攻击动作而自动加入玩家连段。原版皮肤玩家还需要服务器开启上述开关。

登录时显示“网络协议错误”并被踢出:动作功能会等连接准备完成后再启用。请同时更新客户端 Mod 和服务端插件到同一版本后重新进入;若仍发生,请查看客户端 debug/disconnect-*.txt 和服务端最新日志,确认没有加载旧 Jar。