本帖最后由 秦雨子瀾 于 2022-6-9 12:35 编辑
新人小白表示不会 python , 文件里没注释, 这个语法意义都简直要靠猜的, 就开贴记录一下尝试出来的部分参数意义~~
文件就是搞了一堆定义, 可以理解为最终输出就是这个 skins = [..] 的东东转化为游戏可用的 skins.txt 文件, 然后其中诸如 man_face_keys 的文本会在编译的时候替换成上面 man_face_keys = 后面的内容(可能有encode? 无所谓), 所以主体就是 skins 里面每个元素就是一个体型, 每个体型由一个大括号包裹起来的结构看作这个体型的完整定义:
skins =
(体型1),
(体型2),
...
]
所以核心就是, 猜出体型定义中每个参数的意义与范围, 大部分是没什么问题的, 范例体型1游戏默认的男性人类:
(
"man", 0, 体型唯一名称与性别
"man_body", "man_calf_l", "m_handL", "male_head", 身体/左脚/左手/半脸模型名称,脸会复制出来所以没法直接搞左右不一致,手脚是否会使用正则替换最后L为R来读取尚未测试
man_face_keys, 面部调整细节,对应brf模型文件里的动画帧,后面说
["man_hair_s","man_hair_m","man_hair_n"], 头发的模型无视贴图(还会加个光头, 暂不知道怎么屏蔽)
["beard_e","beard_d","beard_k","beard_l"], 胡子的模型无视贴图
["hair_blonde", "hair_red", "hair_brunette", "hair_black", "hair_white"], 毛发贴图textures列在这里意义未明
["beard_blonde","beard_red","beard_brunette","beard_black","beard_white"], 胡子材质materials列在这里意义未明
[
(
"manface_young_2", 面部材质名称
0xffcbe0e0, 身体的额外染色, 格式为ARGB, 比如 0xffffffff 就比 0xffc0c8c8 要白, 另外 alpha 可以支持让手脚变半透明, 特定种族屏蔽装备不一定要靠手套鞋子覆盖了~
["hair_blonde"], 毛发材质,这里是个列表是不是可以头发胡子分开不确定
[0xffffffff, 0xffb04717, 0xff502a19] 发色对应的附加色渐变曲线, 同样是 ARGB 但此处 alpha 意义未明
),
("manface_midage",0xffdfefe1,["hair_blonde"],[0xffffffff, 0xffb04717, 0xff632e18, 0xff502a19, 0xff19100c]),
("manface_young",0xffd0e0e0,["hair_blonde"],[0xff83301a, 0xff502a19, 0xff19100c, 0xff0c0d19]),
("manface_young_3",0xffdceded,["hair_blonde"],[0xff2f180e, 0xff171313, 0xff007080c]),
("manface_7",0xffc0c8c8,["hair_blonde"],[0xff171313, 0xff007080c]),
("manface_midage_2",0xfde4c8d8,["hair_blonde"],[0xff502a19, 0xff19100c, 0xff0c0d19]),
("manface_rugged",0xffb0aab5,["hair_blonde"],[0xff171313, 0xff007080c]),
("manface_african",0xff807c8a,["hair_blonde"],[0xff120808, 0xff007080c]),
],
[(voice_die,"snd_man_die"),.......], 各种场景时播放的声音,场景定义值在header里,有额外需求可以看看 "skel_human", 1.0, 骨胳名称与缩放,你可以简单的当一批马或者巨人
psys_game_blood,psys_game_blood_2, 看名字是血迹,未测试
[[1.7, comp_greater_than, (1.0,face_width), (1.0,temple_width)], #constraints: ex: 1.7 > (face_width + temple_width)
[0.3, comp_less_than, (1.0,face_width), (1.0,temple_width)],
[1.7, comp_greater_than, (1.0,face_width), (1.0,face_depth)],
[0.3, comp_less_than, (1.0,eyebrow_height), (1.0,eyebrow_position)],
[1.7, comp_greater_than, (1.0,eyebrow_height), (1.0,eyebrow_position)],
[-0.7, comp_less_than, (1.0,nose_size), (-1.0,nose_shape)],
[0.7, comp_greater_than, (1.0,nose_size), (-1.0,nose_shape)],
[2.7, comp_greater_than, (1.0,chin_size), (1.0,mouth_nose_distance), (1.0,nose_height), (-1.0,face_width)], 这一陀未测试,看起来似乎是随机时某种面部规则的约束
]
)
面部调整, 这个列表同样每一个元素是一个可调项 ,格式是一个5元素的tuple如下:
man_face_keys = [
(
20, 脸部 brf 中的帧时刻对应的数字
0, 意义未明,我看都是0
-0.5,
0.5, 调整范围
"Chin Size" 名称对应汉语在 languages/cns
),
(260,0, -0.6,1.4, "Chin Shape"),
(10,0,-0.5,0.9, "Chin Forward"),
...
]
|