简体魔域C3模型的MetaData使用
本文所提及的 MetaData 采用 FBX 文件管道的表述方式,此处具体指的是 3dsMax 中 object properties(物体的用户自定义属性字段),下文将其简称为 prop(键名) 如下图:

在导出资源之前,需在 v_body 上写入字段标记,随后导出程序将依据所读取到的字段执行不同的导出流程,如处理模型法线,2套UV等等操作。
# 1. C3导出助手支持
在 1.375 版本中,目前已修复对 prop支持方面的多处 BUG。
打 K 工具 (key_%d)仅在动作组导出 .C 资源时使用,仅处理写入 key_%d,保留其他键名。
C3 导出助手插件,仅在【分段导出】功能中处理 key_%d,修复了此前遇到其他键名时无法导出的问题。
新增 NDTools\C3S3\c3_keytool_fnlib.ms 物体字段写入工具方法库。
如需其他键名写入工具,请联系我添加相关功能。

# 2. 现可用字段参数说明
以下为在C3SkinCharacter - CharacterExporter.cpp 导出流程中通过 GetUserPropInt / GetUserPropFloat / GetUserPropBool / GetUserPropString 读取到的所有键名汇总与含义。 含占位符 %d 的键名表示按帧号扩展的一组键。
含占位符 %d 的键名表示按帧号扩展的一组键。
# 2.1 键名清单
| 键名 | 数值类型 | 典型取值 | 含义/备注 |
|---|---|---|---|
| root_body | int | 0/1 | 标记骨骼为全身根(1=是) |
| root_upper_body | int | 0/1 | 标记骨骼为上半身根(1=是) |
| root_lower_body | int | 0/1 | 标记骨骼为下半身根(1=是) |
| root_global | int | 0/1 | 标记骨骼为全局根(1=是) |
| key_%d | int | 任意/存在即用 | 帧标记:若存在则将该帧加入关键帧位置集合 |
| custom_bounding_box_size | int | 正整数 | 自定义包围盒尺寸 |
| normal | int | 0/1 | 是否导出法线(1=导出) |
| tex_row | int | ≥0 | 纹理行数/分段数(第一层) |
| changetex_key_%d | int | 任意 | 逐帧换贴图:值作为参数,键名中的 %d 为绝对帧号 |
| billboard | int | 项目自定义 | 公告板类型(枚举值,项目内定义) |
| c3exp_uv2 | int | 0/1 | 是否导出第二层 UV(1=是) |
| c3exp_color | int | 0/1 | 是否导出顶点颜色(1=是) |
| second_tex_row | int | ≥0 | 第二层贴图行数/分段数 |
| second_changetex_key_%d | int | 任意 | 第二层逐帧换贴图:值作为参数,%d 为绝对帧号 |
| draw_key_%d | bool | true/false | 逐帧显隐:值为是否绘制,%d 为绝对帧号 |
| r_type | string | 见项目约定 | 渲染/原语类型字符串(项目自定义) |
| alpha_key_%d | float | 任意 | 逐帧透明度:值作为透明度参数,%d 为绝对帧号 |
| tex_ustep | float | 任意 | 第一层贴图 U 方向滚动步进(基础) |
| tex_vstep | float | 任意 | 第一层贴图 V 方向滚动步进(基础) |
| tex_ustep1 | float | 任意 | 第一层贴图 U 方向滚动步进(扩展 1) |
| tex_vstep1 | float | 任意 | 第一层贴图 V 方向滚动步进(扩展 1) |
| tex_ustep2 | float | 任意 | 第一层贴图 U 方向滚动步进(扩展 2) |
| tex_vstep2 | float | 任意 | 第一层贴图 V 方向滚动步进(扩展 2) |
| second_tex_ustep | float | 任意 | 第二层贴图 U 方向滚动步进 |
| second_tex_vstep | float | 任意 | 第二层贴图 V 方向滚动步进 |
| newbone | float | 0.0/1.0 | 骨骼标记:用于区分是否为“新骨骼”(项目自定义) |
说明:
- 含有占位符
%d的键名表示一组以帧号命名的属性,例如key_120、changetex_key_45、second_changetex_key_100等。 - 表中 0/1 表示布尔语义;未明确值域的项以项目实际定义为准(如
billboard)。 CharacterExporter - 副本.cpp中存在相同键名的重复读取位置,已去重归并至上表。tex_*系列用于 UV 平移/滚动效果,具体使用按项目约定;newbone常见为 0/1 布尔语义。draw_key_%d用于控制逐帧显隐;r_type为字符串,含义与可选值由项目定义。
# 2.2 按导出流程分类
导出模型(网格/材质/UV/法线等)
normal:是否导出法线c3exp_uv2:是否导出第二层 UVc3exp_color:是否导出顶点颜色tex_row:第一层贴图行数/分段数second_tex_row:第二层贴图行数/分段数billboard:公告板类型custom_bounding_box_size:自定义包围盒尺寸tex_ustep、tex_vstep、tex_ustep1、tex_vstep1、tex_ustep2、tex_vstep2second_tex_ustep、second_tex_vstepr_type:渲染/原语类型
导出骨架(骨骼结构/分段根)
root_bodyroot_upper_bodyroot_lower_bodyroot_globalnewbone
导出动画(关键帧/事件与贴图切换)
key_%d:关键帧位置集合标记changetex_key_%d:第一层贴图切换second_changetex_key_%d:第二层贴图切换alpha_key_%d:逐帧透明度draw_key_%d:逐帧显隐
# 3ds Max 用户属性示例
root_global=1
normal=1
tex_row=2
c3exp_uv2=1
c3exp_color=0
custom_bounding_box_size=150
billboard=2
key_120=1
changetex_key_200=3
second_tex_row=1
second_changetex_key_240=5
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
