log20250810-记G1 MMD化过程

开始#

突发奇想把G1 MMD化,这样在Blender里面可以自由控制动作,就可以导出可打印的周边了。甚至可以试试让G1跳一些没有IK的舞蹈。

不过G1的骨骼序列和一般的MMD骨骼很不像,不精调一个特殊的版本就好了。

艰难的开始#

一开始想着走URDF导入Blender,发现插件自己会报错。然后又想从简化模型下手,但是简化模型没有区分装配体,绑定难度很大,穿模和物理超越应该是避免不了。随后又回到URDF,最终走的歪路子就是用MMD Tools把URDF所有的meshs全部导出为单个的pmx(一起导出在PMX Editor里还是一个材质)。然后慢慢根据简化版模型一个一个拼回去(我的天哪,URDF也太细了,很多零件简直根本想不到长在哪里)。

Article Image

随后,我把64个材质花了一小时拖入blender、连接网络、导出。

好在,URDF的STL导入时,大小和简化模型STL的0.001倍大小是一样的。

不过在此之前,需要先根据简化模型制作大概骨骼,调整成G1的样子。大概是这样:

Article Image

为了能让G1能变成手机支架和跳QueenCard,加油吧少年。

*简化模型是用SolidWorks导出的。原格式是STP,没法导入Blender。

更加艰难的拼图#

使用VSCode的这个URDF Visualizer插件,可以大概看见每一个部分的link是长啥样的

Article Image

然后就是超人一般的拼接。

Article Image

DEV08F版本 拼装完成 开始矫正腿部骨骼

Article Image

DEV09Bone 骨骼矫正完成 开始权重刷写

Article Image

完了!发现一个严重的问题

机器人的关节,大部分节点都是由2~3个电机分别负责R、P、Y的旋转,但是MMD是一个Joint使用的。

没有特别好的解决方法,初版先做成可兼容VMD、但是会出现超物理拉伸的情况吧。

之后再独立设计一套骨架,带有RPY的旋转限制(这个在MMD可以做到,但是不支持编程,所以没法正常使用VMD,除非做IK变换解算,映射到末端执行器上。


后续还有更新计划。预计应该要推出两个版本,来解决泛用性的问题。

  • 版本一限制全部关节限位,将骨骼变换为G1原本的骨骼样式,符合URDF定义。
  • 允许版本超物理扭曲的跳舞专用版本。