主题
人形生物2.0使用指南
人形生物2.0较之前的人形生物编辑自由度更高,细化了人形角色的可编辑部分,能够适配更丰富的玩法创作。
本页面将介绍人形生物2.0的使用方法,包括新素体的编辑和自定义资源的资产制作流程。
资源集中下载
外观编辑
人形生物2.0的外观编辑支持调整人形生物的肤色、发型、面部特征和装扮。

人形资源导入
选择本地模型
- 在导航栏中进入资源管理器

- 进入文件管理器后,选中模型分类,点击“选择模型”

- 在跳出的窗口中下拉选中“导入角色(人形骨骼)”的选项,确认后即可呼出文件资源管理器查找本地的模型资源

模型资源规范
具体的骨骼节点规范可参考该模型,导入模型时将校验必选的骨骼节点与命名是否一致
模型信息编辑
- 模型校验通过后,会先进入骨骼映射关系设置窗口,可在此界面修改模型原骨骼和游戏内的人形骨骼的映射关系

- 确认骨骼关系后,进入模型信息编辑界面,与原流程基本一致

- 所有模型资源都拥有对应的资源ID(包括官方资源),使用该ID在接下来的API中索引模型资源

注意
个人上传的资源,如果没有公开资源,其他人获取到了资源ID也无法在他拥有的地图中下载该资源
角色标准骨架(角色导入标准)
软件需求
Autodesk 3ds Max 17 +(可在更高的Max版本制作)
骨架文件下载
人形骨骼文件

人形生物2.0的标准骨骼文件,格式为 .FBX,包含完整骨架结构,可用于制作符合规范的人形角色蒙皮与动画。
UGC骨架预览

角色标准骨架使用说明
不可修改fbx文件的单位尺寸,默认文件单位为英寸
fbx文件内部已经对齐了前后左右上下方向,所有参考请以各软件默认导入导出设置作为参考范本,不可随意修改朝向
不可增删或重命名任意绑定骨骼,最终模型蒙皮信息可以不用包含所有提供的骨骼
CS骨骼集合


Biped 骨骼集合


若模型和当前骨架比例不匹配,则需要修改模型的比例结构来适配当前标准骨架
创建蒙皮时可通过旋转与轴向位移修改骨骼体型和姿态来匹配模型,但是禁止使用缩放。且修改后整体骨骼体积不可差距过大
模型一旦蒙皮,不可靠动画K帧来修改体型
蒙皮单顶点受骨骼影响的数量不能超过4个


在不影响本体骨架的约束或父子关系下可自行制作骨骼约束功能(仅可用于制作模型,不可用于制作动画)
不能存在0权重顶点信息,需要自行检查删除
最终蒙皮文件须还原至默认A Pose

不可出现数值为0的缩放
不可直接使用蒙皮模型创建动画(新人形2.0动画是跨体型共用的,所以不能使用编辑体型后的蒙皮骨骼创建动画),创建动画请参考下述《角色绑定文件示例》
角色绑定文件示例(动画导入标准)
角色绑定文件由《角色标准骨架》为基础制作,提供多种主流软件绑定示例文件,可直接使用标准骨架或者示例绑定文件直接制作或者映射动画。
绑定文件下载
人形blender绑定文件(Rigify)
软件需求:blender 5.2 及以上

附件:humanoid_blender5_2.blend(429.43KB)
人形3dsmax绑定文件(CharacterStudio)
软件需求:3dsmax 2024 及以上

附件:humanoid_max2024.max(3.99MB)
人形maya绑定文件(HumanIK)
软件需求:maya 2024 及以上

附件:humanoid_maya2024.ma(1.61MB)
动画制作说明
选择任意绑定文件,或者直接导入《角色标准骨架》然后开始制作,不可使用修改体型或者骨骼姿势后的蒙皮骨骼制作动画。
动画编辑过程可以任意隐藏阻挡视线的组件,并不影响编辑
示例文件中的蒙皮仅作建议动画校验,需要使用自定义模型或者官方模型预览,请将fbx动画文件导入 蛋仔派对编辑器 进行预览
将时间轴移动至目标帧,通过 角色控制器 调整角色姿态并打上关键帧;亦可开启右下角的“自动关键帧”模式,实时记录姿态变化

动画输出说明
选择所有biped骨骼集合,并左上角菜单内选择 导出选定对象


在输出选项中选择动画,并勾选烘培动画 和 全部重采样设置,其余默认,点击确定即可输出到指定的文件夹下

Blender资产制作流程
版本推荐 Blender 5.2 以上,优先使用.blend文件。
如果不使用绑定文件,可以按照以下步骤修改显示。
导入选项
因为Max骨骼坐标轴和Blender未统一,默认导入的骨架会呈现离散的结构,此为正常现象,不能选择自动骨骼坐标系,会破坏骨骼信息


动画制作
建议先自行搭建一套绑定骨架并对导入的UGC骨架进行一对一约束,方便动画制作时的管理


动画导出
导出时需要选中所有原Max Biped骨骼,也可创建骨骼集进行选择,导出选项按照下图所示


人形2.0动画制作说明
使用FBX文件制作动画
此骨架为蛋仔工坊内目前使用的人形骨架结构,即人形生物2.0的骨架,按照此骨架制作导出的蒙皮模型即可套用当前人形生物2.0的所有动画。
使用说明
- 不可修改文件内的单位尺寸
- 不可删除初始biped骨骼集或修改biped骨骼集内容,其余自定义骨骼集随意增删
- 不可增删或重命名任意绑定骨骼,最终模型蒙皮信息可以不用包含所有提供的骨骼
- 不能在编辑模式下修改任意当前骨骼的绑定位置、旋转、和缩放信息,但可在运动模式下控制骨骼摆Pose来检查蒙皮效果
- 若模型和当前骨架比例不匹配,则需要修改模型的比例结构来适配当前标准骨架
- 蒙皮单顶点受骨骼影响的数量不能超过4个
- 在不影响本体骨架的约束或父子关系下可自行制作骨骼约束功能
- 不能存在0权重顶点信息,需要自行检查删除
- 最终蒙皮文件须还原至默认A Pose
软件需求
blender,3dsmax,maya(任选其一)
演示所用软件版本:
- blender 5.2.0 LTS
- 3dsmax 2024
- maya 2024

通过Blender使用FBX文件
注意事项

- 通过blender导入fbx文件,可以得到如上标准场景
- 因blender限制,标准fbx骨骼在blender中的八面体显示如上图所示,不能随意修改
- 不可随意修改场景尺寸
- 不可增删和重命名任意节点
- 不允许有关节缩放为 0 的帧
使用说明

- 切换到Animation workspace
- 在轨道上制作姿态关键帧
- 使用默认fbx导出设置,导出场景为fbx文件(如下图)即制作完成

通过3dsmax使用FBX文件
注意事项

- 通过3dsmax导入fbx文件,可以得到如上标准场景
- 不可随意修改场景尺寸,保持默认
- 不可增删和重命名任意节点
- 不允许有关节缩放为 0 的帧
使用说明

- 调整轨道插入时间
- 在轨道上制作骨骼关键姿态并创建关键帧
- 通过 导出所有(export all)导出,需要勾选 烘焙动画(bake animation)与 重采样(resample all),导出场景为fbx文件(如下图)即制作完成

通过Maya使用FBX文件
注意事项

- 通过maya导入fbx文件,可以得到如上标准场景
- 不可随意修改场景尺寸,保持默认
- 不可增删和重命名任意节点
- 不允许有关节缩放为 0 的帧
使用说明

- 调整轨道插入时间
- 在轨道上制作骨骼关键姿态并创建关键帧
- 通过 导出所有(export all)导出,需要勾选 烘焙动画(bake animation)与 重采样(resample all),导出场景为fbx文件(如下图)即制作完成

使用3dsmax CS骨骼系统(Biped)制作动画
(文件源为3dsmax2024)
使用说明

- 移动时间轴到需要制作关键帧的时刻
- 通过CS骨骼系统编辑姿态,并添加K帧

- 通过 导出所有(export all)导出,需要勾选 烘焙动画(bake animation)与 重采样(resample all),导出场景为fbx文件(如下图)即制作完成

使用Maya HIK骨骼系统(HumanIK)制作动画
(文件源为Maya2024)

使用说明
- 移动时间轴到需要制作关键帧的时刻
- 通过HIK骨骼系统编辑姿态,并添加K帧

- 通过 导出所有(export all)导出,需要勾选 烘焙动画(bake animation)与 重采样(resample all),导出场景为fbx文件(如下图)即制作完成

蒙皮编辑流程
蒙皮是一种将模型的网格顶点附着到内部骨骼上,通过骨骼的运动来驱动表面模型产生形变和动画的技术。
和挂接模型不同,蒙皮与角色共用同一套骨骼,会跟随所有骨骼动画整体变形,适合衣物、装甲等贴身部件;而挂接模型是作为独立刚体附着在某个骨骼节点上,只跟随该节点的位移旋转,适合武器、道具等。
蒙皮添加流程
- 导入资源后,在资源管理中右键复制模型资源id,使用该id在接下来的API中索引模型资源
- 使用对应的Lua API添加蒙皮
- 添加蒙皮后,才可以给这块蒙皮设置染色/贴图
| 功能 | 接口 |
|---|---|
| 添加蒙皮 | add_mesh_model(model_id) |
| 移除蒙皮 | remove_mesh_model(model_id) |
| 蒙皮染色 | set_mesh_paint_color(model_id, paint_area, color, material_index) |
| 蒙皮贴图 | set_mesh_texture(model_id, texture_key, material_index) |
示例
lua
local shirtModel = 10001 -- 上衣的网格模型编号(示意值)
local textureKey = 990011 -- 贴图编号(示意值)
-- 1. 挂上蒙皮
unit.add_mesh_model(shirtModel)
-- 2. 对上衣的区域1染红色(材质 0)
unit.set_mesh_paint_color(
shirtModel,
Enums.ColorPaintAreaType.AREA_1,
0xFF0000,
0
)
-- 3. 替换这块蒙皮上材质 0 的贴图
unit.set_mesh_texture(shirtModel, textureKey, 0)人形生物2.0相关API
原点编辑器中人形生物2.0为生命体(LifeEntity),生命体上的调用形式为 unit.方法(...)。
网格模型(蒙皮)
接口与参数
| 接口 | 参数 | 作用 |
|---|---|---|
unit.add_mesh_model(model_id) | 模型编号 | 给生命体添加网格模型 |
unit.remove_mesh_model(model_id) | 模型编号 | 移除指定的网格模型 |
unit.set_mesh_paint_color(model_id, paint_area, color, material_index) | 模型编号、染色区域、颜色、子材质索引 | 给已添加的网格模型染色 |
unit.set_mesh_texture(model_id, texture_key, material_index) | 模型编号、贴图编号、子材质索引 | 给已添加的网格模型换贴图 |
| 参数 | 说明 |
|---|---|
model_id | 网格模型编号(整数) |
texture_key | 贴图编号(整数) |
paint_area | 染色区域:Enums.ColorPaintAreaType.AREA_1 ~ AREA_4(即区域1 ~ 区域4) |
color | 颜色(整数,如 0xFF0000 表示红色) |
material_index | 该网格模型内部的子材质序号,默认 0 |
示例
示例中的单位 / 模型 / 贴图编号均为示意值,请替换为实际使用的编号。
lua
local unit = GameAPI.get_unit(1) -- 通过编号取到生命体(1 为示意值);也可用 role.get_ctrl_unit()
local MESH = 10001 -- 网格模型编号(示意值,请替换)
local TEX = 990011 -- 贴图编号(示意值,请替换)
local RED = 0xFF0000 -- 红色
-- 1. 先添加网格模型
unit.add_mesh_model(MESH)
-- 2. 再设置它的颜色与贴图
unit.set_mesh_paint_color(MESH, Enums.ColorPaintAreaType.AREA_1, RED, 0)
unit.set_mesh_texture(MESH, TEX, 0)
-- 3. 不需要时移除(颜色、贴图会一并清除)
unit.remove_mesh_model(MESH)注意事项
- 同一个「模型编号」只能添加一次,重复添加不会生效。
- 先添加、后设置:贴图与染色都要针对已添加的网格模型,未添加时设置不会生效。
- 移除网格模型时,它的贴图与染色会一并清除,无需单独还原。
- 生命体更换模型后,已添加的网格模型会自动恢复,一般不需要重新添加。
面部表情
生命体(LifeEntity) 播放 新人形 面部表情。
调用形式为 Lua 接口 unit.play_human_face_expression(face_expression_key, duration)。
可用表情
| 表情编号 | 表情 |
|---|---|
| 10001 | 待机 |
| 10002 | 大笑 |
| 10003 | 失落 |
| 10004 | 愤怒 |
| 10005 | 震惊 |
接口与参数
lua
unit.play_human_face_expression(face_expression_key, duration)| 参数 | 类型 | 说明 |
|---|---|---|
face_expression_key | 整数 | 表情编号,见上表 |
duration | 秒 | > 0:限时播放,到点自动恢复;<= 0:不自动恢复 |
- 无返回值。
示例
示例中的单位编号为示意值,请替换为实际使用的编号。
lua
local unit = GameAPI.get_unit(1) -- 通过编号取到生命体(1 为示意值);也可用 role.get_ctrl_unit()
-- 1. 播放「大笑」表情,持续 3 秒,到点自动恢复
unit.play_human_face_expression(10002, 3)
-- 2. 播放「愤怒」表情
unit.play_human_face_expression(10004, 0)
-- 3. 切回「待机」表情
unit.play_human_face_expression(10001, 0)
