第 5 课,做一双 HighHell 插件高跟鞋
本章节有以任意姿态导出的内容,即使你不做鞋子,做衣服也会用到,因此请勿跳过。
不做高跟鞋也是一样的流程,只不过不需要插件罢了。
注:在 COM3D2.5 (3.40+)中官方有原生高跟鞋支持,只需要在 .model 文件名中添加 _heel 即可,其他流程和目前一样,剩下的都是自动的,不需要插件,但是官方不会调整小指……
HighHell 插件是什么
COM3D2.HighHeel.Plugin InoryS 版插件,正如其名字,就是用来做高跟鞋的插件,相比于之前的 RV 高跟鞋,HH 插件高跟鞋不限制体型,不限制袜子,使用非常灵活。
我也贡献了而一部分代码,要是有 BUG 什么的可以找我。
他的仓库里都有说原理是什么,请先大致看一遍,有中文和英文版本。(注 foobar 是一个占位符,可以替换为你想要的词,包括单独的 foo 和 bar)
https://github.com/InoryS/COM3D2.HighHeel
简单来说就是读取物体名,(并不是文件名,也不是 menu 名)物体名里面需要包含 hhmod_foo
,不知道什么是物体名就往下看(黄色倒三角是物体/对象,绿色倒三角是网格)。
那么插件就去读取配置文件名为 hhmod_foo.json
的配置文件,配置文件里面写了脚的角度、脚趾的角度什么的,从而动态调整脚和脚趾的角度。
比如自带的 hhmod_27d.json
配置文件(实际的文件并不能有注释):
{
"BodyOffset": 0.04, //默认女仆 BodyOffset,如果您没有为场景单独设置 BodyOffset,则应用此值。//如果你在中设置 EnableGlobalPreSceneOffsetSettings 为 false ,则使用此值,否则此值不会被使用
"ManBodyOffset": 0.0, //默认男人 BodyOffset,如果您没有为场景单独设置 BodyOffset,则应用此值。//如果你在中设置 EnableGlobalPreSceneOffsetSettings 为 false ,则使用此值,否则此值不会被使用
"PerSceneBodyOffsets": { //如果你在中设置 EnableGlobalPreSceneOffsetSettings 为 false ,则使用此值,否则此值不会被使用
"SceneDaily":0.02, //为每个场景单独设置的女仆 BodyOffset,这表示将场景名为 SceneDaily 的女仆 BodyOffset 设置为 0.02
"SceneTrophy": 0.14, //为每个场景单独设置的女仆 BodyOffset,这表示将场景名为 SceneTrophy 的女仆 BodyOffset 设置为 0.14
"SceneYotogi": 0.04,
"SceneFreeModeSelect": 0.14,
"SceneYotogiOld": 0.05,
"SceneDance_CKTCK_Release": 0.06,
"SceneDance_CPM_K_2_Release": 0.06,
"SceneDance_1OY_K_Release": 0.06
},
"PerSceneManBodyOffsets": {//如果你在中设置 EnableGlobalPreSceneOffsetSettings 为 false ,则使用此值,否则此值不会被使用
"SceneDaily":0.02, //为每个场景单独设置的男人 BodyOffset,这表示将场景名为 SceneDaily 的男人 BodyOffset 设置为 0.02
"SceneTrophy": 0.06, //为每个场景单独设置的男人 BodyOffset,这表示将场景名为 SceneTrophy 的男人 BodyOffset 设置为 0.06
"SceneYotogi": 0.0,
"SceneFreeModeSelect": 0.05,
"SceneYotogiOld": 0.05
},
"FootLAngle": 27.0, //左脚的 Z 轴旋转角度,因为这是 27d 配置文件,所以设置为 27
"FootLMax": 88.0, //左脚的 Z 轴最大旋转角度
"ToeL0AngleX": 7.0, //左脚的小脚趾的 X 轴角度
"ToeL0AngleY": -17.0, //左脚的小脚趾的 Y 轴角度
"ToeL0AngleZ": -17.0, //左脚的小脚趾的 Z 轴角度
"ToeL01AngleX": 5.0, //左脚的小脚趾前端的 X 轴角度
"ToeL01AngleY": 0.0, //左脚的小脚趾前端的 Y 轴角度
"ToeL01AngleZ": 0.0, //左脚的小脚趾前端的 Z 轴角度
"ToeL1AngleX": 0.0, //左脚的中间三脚趾的 X 轴角度(这是因为 KISS 只给它们分配了一根骨头)
"ToeL1AngleY": 0.0, //左脚的中间三脚趾的 Y 轴角度
"ToeL1AngleZ": -27.0, //左脚的中间三脚趾的 Z 轴角度
"ToeL11AngleX": 0.0, //左脚的中间三脚趾前端的 X 轴角度(这是因为 KISS 只给它们分配了一根骨头)
"ToeL11AngleY": 0.0, //左脚的中间三脚趾前端的 Y 轴角度
"ToeL11AngleZ": 0.0, //左脚的中间三脚趾前端的 Z 轴角度
"ToeL2AngleX": -2.0, //左脚的大脚趾的 X 轴角度
"ToeL2AngleY": 0.0, //左脚的大脚趾的 Y 轴角度
"ToeL2AngleZ": -17.0, //左脚的大脚趾的 Z 轴角度
"ToeL21AngleX": 0.0, //左脚的大脚趾前端的 X 轴角度
"ToeL21AngleY": 0.0, //左脚的大脚趾前端的 Y 轴角度
"ToeL21AngleZ": -14.0, //左脚的大脚趾前端的 Z 轴角度
"FootRAngle": 27.0, //右脚的 Z 轴旋转角度,因为这是 27d 配置文件,所以设置为 27
"FootRMax": 88.0, //右脚的 Z 轴最大旋转角度
"ToeR0AngleX": -7.0, //左脚的小脚趾的 X 轴角度
"ToeR0AngleY": 17.0, //左脚的小脚趾的 Y 轴角度
"ToeR0AngleZ": -17.0, //左脚的小脚趾的 Z 轴角度
"ToeR01AngleX": 0.0, //左脚的小脚趾前端的 X 轴角度
"ToeR01AngleY": 0.0, //左脚的小脚趾前端的 Y 轴角度
"ToeR01AngleZ": 0.0, //左脚的小脚趾前端的 Z 轴角度
"ToeR1AngleX": 0.0, //左脚的中间三脚趾的 X 轴角度(这是因为 KISS 只给它们分配了一根骨头)
"ToeR1AngleY": 0.0, //左脚的中间三脚趾的 Y 轴角度
"ToeR1AngleZ": -27.0, //左脚的中间三脚趾的 Z 轴角度
"ToeR11AngleX": 0.0, //左脚的中间三脚趾前端的 X 轴角度(这是因为 KISS 只给它们分配了一根骨头)
"ToeR11AngleY": 0.0, //左脚的中间三脚趾前端的 Y 轴角度
"ToeR11AngleZ": 0.0, //左脚的中间三脚趾前端的 Z 轴角度
"ToeR2AngleX": 2.0, //左脚的大脚趾的 X 轴角度
"ToeR2AngleY": 0.0, //左脚的大脚趾的 Y 轴角度
"ToeR2AngleZ": -17.0, //左脚的大脚趾的 Z 轴角度
"ToeR21AngleX": 0.0, //左脚的大脚趾前端的 X 轴角度
"ToeR21AngleY": 0.0, //左脚的大脚趾前端的 Y 轴角度
"ToeR21AngleZ": -14.0 //左脚的大脚趾前端的 Z 轴角度
}
移植一个 MMD 鞋子
这次的模型来自
https://www.deviantart.com/lastwolfer/art/HHsandalI-Ver340-865859283
如果打不开需要使用非机房 IP 访问。
没有许可证
部分内容在前面的课教过了省略
一样的导入后删除骨骼,这个模型还带了一段腿,把腿脚也删了
直接编辑模式选中腿的顶点,按 ctrl + + 加选就行了。
删掉一只鞋,等下我们用镜像
这个模型还有指甲,记得也删了
粗略对齐
添加一个 T-pose 的 body001
切换到正交视图,然后跳转到合适大小和角度
以任意姿势导出
先导出看一眼效果再回来仔细调整
原先的骑摩托姿势会给我们对齐造成很大麻烦,所以我们这里学习一下如何以任意姿势导出
物体模式选择 T-pose 的骨架,点导出 .anm,我这里叫 t.anm
这个导出的 t.anm 以后可以复用
然后把 T-pose 的 body001 的骨架和网格都删掉
重新添加一个标准的 body001(摩托姿势)
选中 body001 的骨架,点导入 .anm,把刚刚的 t.anm 导入
就会发现它变成 T-pose 了
切换到姿态模式,这里有个 Apply Prime Field,点他
成功以后这里就可以切换姿势了
但是你会发现,在右上角 拖动网格 + shift 设置父级以后,切换姿势鞋子还是没有跟着动(骨骼跟随原理在第三课)
(注意,不是右键或 Ctrl+p 设置父级为骨架形变,那样设置父级后会自动添加修改器的,很可惜很多绑骨教程都没有说明这一点)
因为实际上,骨骼和网格是完全独立的两个物体,相互之间没有关系,移动一个物体为什么另一个物体会跟着动呢?
当然不会咯
那你问为什么身体会跟着动?那是因为,身体有一个修改器
游戏内为什么会跟着动?你可以理解为游戏自带一个修改器
网格和骨架之间是靠修改器才有的对应关系,包括我们导入 MMD 模型后,会有一个 MMD 骨架修改器。
所以我们自己添加一个修改器就行了(这里添加修改器只是编辑方便,不影响导出和游戏内效果,你可以理解为游戏内自带一个修改器)
任何修改器、几何节点、平滑着色等修改都不会保存到 model 中,因为这是 Blender 独有的东西。
必须是实实在在的骨骼、顶点、网格、UV、姿势、形态键、材质才会写入 model,并被游戏使用。
而且并不是 Blender 支持什么游戏就能使用什么,比如多个 UV 通道,COM3D2 并不支持,COM3D2_5 才额外添加了 3 个 UV 通道。
且需要注意顶点数不能超过 65535 个。
物体选择骨架,你就会发现鞋子也过去了
当然你会发现编辑模式鞋子又回去了,勾上这两个选项就好
这样你就可以轻松在姿势之间切换了,找一个方便编辑的姿势就好,一般都是 T-pose
当然导出时数据源要选骨架
导出
前面的课都有教,这里略
记得应用变换
转换下材质,我们先进游戏看看效果
编辑模式下,这里会有选择,你可以点选择看看这个材质影响哪些顶点。
然后把不需要的材质删掉。(小三角那里有个删除未使用槽)
一样的,为鞋子分配顶点组(前面的课有讲什么原理)
进游戏
进游戏大概就是这样的,脚和脚趾的旋转角度等下靠插件调整,我们只需要把鞋子对齐脚底就行了
鞋子上的线是贴图自带的。
精修模型
很明显无论是 RV 的鞋,还是 MMD 的鞋,脚大小都是不一样的,我们需要自己调整模型
进入游戏,按 ctrl + F9 呼出插件设置,慢慢调整角度,直到合适(Foot L Angle 意思就是 脚 左 角度)
我这里调出来是 42 度,42d ~= 5.9 英寸(150 毫米)高跟鞋(22.5 * sin(45π/180) ~= 15.055439)(善待你的妹抖!) 22.5cm 是 COM3D2 默认体型的大概脚长度
然后我们再回到 blender 去不断调整角度,当然不可能完全对齐的,因为脚形是不一样的。
在尽可能对齐脚以后,剩下的部分我们通过雕刻模式或者衰减编辑来进行调整(当然你会其他的也行,强烈建议学习一下晶格和晶格修改器)
比如用雕刻模式的抓取,往外推,或者拉,把绑带外移
差不多就是这样,要穿袜子还要再往外移。
剩下的就是靠个人 blender 水平了
大概就是这样
因为其实我并不喜欢这双鞋,所以只是随便调了一下做演示,所以歪歪扭扭的
为什么有黑块? 别忘了之前教的哦,这是面朝向不对。(因为我随便编辑把里面的面拉出来了)
做另一只鞋
直接镜像就行了,有很多种办法,我这里用镜像修改器(其他办法可能面朝向也会镜像,记得检查)
可以看到直接就在对应位置上了,点应用
导出到游戏内,会发现位置不对
回想一下之前教的物体跟随原理,我们需要调一下顶点组
把右边鞋子绑定到右脚骨上
然后再把左脚骨对右边鞋子的权重删掉(因为镜像出来的,顶点组当然也镜像了)
选中右边鞋子的网格,点移除就行了
效果
收尾
别忘了插件的原理,插件会读取物体名
hhmod_xxxx 以 _ 为分隔符,也可以添加别的内容,例如 90135_hhmod_42d_shose
我这里插件就回去配置文件夹读取 hhmod_42d.json 这个配置。
在插件调整完后点导出
控制台会告诉你在哪里 COM3D2\BepInEx\config\COM3D2.HighHeel\Configurations
关掉编辑模式,点一下刷新,配置文件就应该自动读取了。
如果你用的不是自带的配置文件,再分享时别忘了把配置文件也分享给他
另一种方法
ymk 大佬制作了 13d、20d、27d、34d 高度的 .anm 文件
可以在首页 ymk 移植教程中,或者本仓库素材包内的 hh_anm.zip(已获授权)
导入后如图,这样就可以比平底对齐更直观的做鞋了
只是上文的 t.anm 换成了这个,本质没有什么不同,还是按任意姿势导出的方法导出即可。
作业
移植一双自己喜欢的高跟鞋
最后更新于