从软件角度看MMD与PE(其一)数据交换格式的缺陷与不足

您所在的位置:网站首页 mmd的制作软件 从软件角度看MMD与PE(其一)数据交换格式的缺陷与不足

从软件角度看MMD与PE(其一)数据交换格式的缺陷与不足

2023-08-07 11:52| 来源: 网络整理| 查看: 265

有句话说得好:编程不过是一门失传的艺术的别名,这门艺术的名字叫做“思考”。----王垠,《人工智能的局限性》

注意,以下内容是我的一家之言,欢迎来批判交流。

我们先讲一下MMD优点,看看MMD解决了什么问题。

注意,我们这里说的是最开始时候的MMD。

MMD是一款快速动画软件,动画功能精简但是核心都有。相对于Maya, 3ds max, Blender, Cinema 4D等大型动画软件来说,MMD没有建模,粒子,流体模拟,布料模拟这些功能,只有骨骼动画与基于Bullet的刚体物理系统。这是MMD功能精简,很多人认为这是它的缺点,但同时这也是它的最大的优点,满足KISS(Keep It Simple And Stupid)原则,非常容易上手,因此更加流行。这是它的一个优点。

第二个优点:

有个标准的的参考骨骼系统,骨骼的命名是标准化的。因为骨骼的标准化,模型与动作可以被解耦,这是其他软件所没有的。

当然,大型3D软件解决的问题跟MMD不同,他们面对的场景更加专注于不同角色的细粒度的调整,自然就很难解耦。

我认为这是MMD两大核心的优点:精简和标准化的骨骼。

MMD的作者樋口优选用了PMD(Polygon Mesh Data)格式作为模型格式,选用了VPD(Vocaloid Pose Data)和VMD(Vocaloid Motion Data)这两个格式作为动作格式,这三个作为MMD的数据交换格式。从而导致了一堆问题。

先从动作数据格式说起吧。

VPD是基于文本的格式,只可以保存模型的姿态。

VMD是基于二进制的格式,可以保存在不同时刻的姿态。

其实你可以发现,VMD能完全代替VPD格式的,当然这只是违反正交性原则,没啥大问题。

但接下来的几个问题就比较严重了。

VMD是用名字来识别骨骼的,而只用shift-jis编码的日文名称而不是ascii编码的英语名称。所以在日本以外的地区,一些MMD相关的软件会崩溃,比如MMDBridge的烘焙骨骼功能。应该只使用ascii编码的英文骨骼名称。

VMD里旋转用的是欧拉角但只有一个插值槽。曦歪(CY)在专栏里说过这个问题,现阶段的解决方案是分轴,但很多人不知道如何正确处理欧拉角旋转轴的顺序,其正确顺序是yaw-> pitch-> roll。

MMD的插值模块右上角有个auto自动插值勾选项,用了可以极大的节省人力。VMD不支持。我认为这是VMD设计上极大的败笔。

再说说pmx格式:

pmx格式设计上主要是针对游戏的格式,有些地方与MMD存在龃龉:

整数类型过多,过度设计。int8_t, int16_t, int32_t, uint8_t, uint16_t, uint32_t都有。然而用int32_t一把梭就行,想减小小体积还是要靠zlib压缩。

多重uv没有用到的机会。pmx支持多重uv但常见的shader(指mme)很少有支持的,何况多重uv是为了减少纹理体积,然而在mmd的场景下不存在这个问题。提取的多重uv游戏模型可以转换成单uv的模型,只需要转换按主uv来重采样贴图即可。

支持图片类型过多。还是正交性与防呆设计的问题,只支持png格式或者是支持png和jpg两种格式,png是为了保证透明通道,jpg压缩率高。你会发现现在大量的人贴图用dds与bmp无压缩格式,占用过大的磁盘存储空间。当然在2020年,应该只选用webp,既支持透明通道,又支持有损无损压缩,还支持序列帧动画,三重快乐,一次满足。

不支持基于物理的材质。现在ray当道,然而pmx只支持原始的着色模型。想要支持ray,需要再单独附带一个shader。当然还可以把材质commit栏作为扩展,用toml作为交换格式。材质commit栏是一个非常棒的设计,当一个材质面数为0的时候,可以work,在不修改mmd的情况下可以在里面塞一堆东西而不影响现有的mmd系统。

缺乏有效的文档。骨骼栏变形层级,ik里面的单位角,loop、joint六个类型(バネ付6DOF、6DOF、P2P、ConeTwist、Slider、Hinge)、布料模拟里一坨的参数怎么用?Toon跟Spa也是好久后才知道正确含义的。

奇怪的球形骨骼。saba做了好几年了都没找到正确实现,最后我告诉他blender_mmd插件里有正确的实现他才知道。何况真的需要球形骨骼吗,双四元数与线性插值二者相混合不知道行不行。

所有的顶点只能用相同的uv数量,不存在可变uv。在大型3d软件里,一个顶点如果在uv上连接两个连通域,必须分裂成两个点,一个本应该连续的模型断开了,二次编辑时会很麻烦。

不支持四边面与曲面细分。还是二次编辑问题。如果支持曲面细分,模型可以小很多。

网格抽象层级不够,都使用材质做区分。应该是从根节点分为人、衣服和武器等,人分为手、脚等,衣服分为鞋子、上衣等。至少要两级才能是说得过去的划分。

其中7、8、9这在游戏模型的没什么问题,但不适合进行二次编辑。

pmx最大的问题还是mmd不支持2.1,关键的软体模拟不支持,当然这就不是pmx格式本身的问题了。

这次就到这里了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3