第 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 换成了这个,本质没有什么不同,还是按任意姿势导出的方法导出即可。

27d

作业

移植一双自己喜欢的高跟鞋

最后更新于