关于如何加快 Blender 中 mmd 模型的处理速度

本文由 简悦 SimpRead 转码, 原文地址 www.bilibili.com

作者:御坂4952号

点击进入查看全文

这个专栏仅用于我自己对 mmd 模型时卡顿处理的解决方案梳理,并不是一套解决方案,以便于以后问题再次出现时陷入疑惑。

  1. 法向平滑,mmd 常见情况是硬光影,且大多数时候是不需要计算法线的,因此运算速度较快,在之前我做过一次视频来处理这个问题,因此不再赘述。

  2. 在 blender 中,mmd 模型的结构是以上:空对象(root)> 骨架(多边形网格的父级)> 多边形网格 > 权重。

    作为空对象的根,是不应对其进行 k 帧的(一般在导入之后,移动旋转缩放都会被锁)不难猜测,插件的作者大概率是不希望我们在空对象进行 k 帧,或许是牵涉到动力学代理物体的计算要以它作为位置的一个条件,因此若是移动了作为根的空对象,需要重新对刚体进行一次绑定。

空对象(root)

  1. 作为对 1 的一点补充,blender 作为一款专业级的软件,对各个方面的考虑都应比 MMD 成熟,即使他们的物理引擎都是 bullet,但在 blender 中,多出很多种力场。还有就是因为 blender 的多边形网格根据各个电脑性能的不同,都会出现大于 某个数字的面数 就出现卡顿。因此我认为应当把原本的多边形制作一个副本移动到一个合成内关闭显示,而原多边形反细分到可以流畅运行的程度,再进行制作动画。

反细分须在面模式下才能显示

5.Collection

Collection

拆过部分大佬的工程,发现自己的研究早已经被人实用在制作上,但是对 Collection 我常有不解,实际上这并不单是一个分类打组的工具,对于物理烘培是有极大的作用的。无论是利用 mmd 模型自身的代理也好,亦或是根据模型骨骼,自己利用网格的布料软体进行代理也好。若是把代理放进一个专门收录物理代理模型里的 collection,不仅仅是可以针对单个 collection 进行烘培,和 mmd 的材质分组一样的思路,不同的 collection 的刚体实际上是互不干涉的,高质量的分化各个部件的刚体能决定物理模拟是不是能够顺畅。

  1. 补充对 blender 自制代理的一些思路和看法

实际上类似的教程屡见不鲜,或许是从次世代游戏里玩剩下的解决方案,终于也向下兼容到了 MMD 制作上。很多朋友都反映,应当以软体来制作代理,因为软体尽管只有两个点,依然能够与其他刚体进行碰撞,我个人觉得这是合理的,但不完全正确,实际上在卯月的一个视频里有提到过,我自己亲身实践我也认为:软体的模拟是比布料要费时间的。

而我常用的方法就是挤出一个有面的代理,再把空对象 Hook 在相邻的顶点上(这个做法是可行的,但是可控性不高,当然你也可以选择用修改器 + 定点组的方法,新人请自行研究,我不再补充)

  1. 碰撞和被动刚体

我会优先选择刚体,这是遵从 mmd 规范的选择,其他的代理都是刚体,那我也用这个,将其改成被动刚体,对其制作动画仍然能与其他刚体交互(在没有 collection 分组或处于同一个 collection 下)

希望得到各位大神的补充,这是我在 mmd 圈子制作的心得和一些不解,希望抛砖引玉,得到解答和解决方案。

要说句非常难听的话,若有冒犯请谅解,即时大多数 MMDer,利用 mmd 做完后烘培 abc 来交由 blender 渲染,倘若目的是进行布料解算和流体模拟这的确是无可厚非,但是仅为渲染其实是极其多此一举且实用性低下的,在没有 blender 强大的骨骼和 IK 系统协调下,mmd 制作的动作水平一般人不经过非常严格和认真的制作,效果其实非常的廉价。

恳请有相关解决经验的制作者不吝赐教。

评论