作为一名专业的CG工作者和前特效工程师,MMD无法满足我的渲染需求,因此我研究了一套MMD到Houdini的过程,将MMD动画和摄影机烘焙到ABC中,将Maya导入Houdini中,并在Houdini中解包为材质。在踩过无数个坑并测试了很多东西之后,我终于发现了过程,所以我把它写下来并保存下来以备将来参考。标题是写给你自己,因为我认为我们通常使用C4d和blender,但是如果一个特效艺术家想要指导Houdini渲染,这篇文章可以勉强参考。
我主要玩TF系列-G1变形金刚角色模型,这些模型都是硬表面,材料也比较容易做。我认为二次人物模型也可以遵循这个过程,特别是胡迪尼的头发解决方案。但是,您可能需要在Maya中使用xgen刷头发,然后将导线导入Houdini
首先,使用MMD桥接版本打开场景。不用说。
一、帧率的设置,有效降低渲染成本
第一个关键点在于帧率,MMD默认30fps,但是影视一般用的24fps,经过我的测试,实景类视频24fps完全足够,如果用30帧渲染,一秒就多渲6帧,一分钟的舞蹈多渲360帧……这个成本太高了。所以介绍一个mmd导出24帧abc的方法(试验了很久才做出来,自己甚至写了一个mmd桥代码)
首先mmdBridge设置中用c4d的这个脚本,我测试发现Houdini对它兼容的最好,默认Houdini的选项容易出bug;其次这里的帧率直接设置30帧,原因后面讲。
然后导出视频这里,如果你导出相机的话,分辨率最好设置成想要的分辨率,不然会影响abc相机的分辨率;如果你做实景合成,有跟踪相机的数据,不用导出mmd相机,那么分辨率设置成1*1即可。
这里帧率一定要调成24。简单的原理解释:MMD的全局帧率是按照录制导出视频的设置,也就是这里的变量,这样录视频的时候它随机删掉6帧,但是你烘焙的abc帧数编号会保持稳定每帧+1的速度增长,所以abc实际是按照24fps记录的;但是如果你在上一步就设置24fps,它记录的帧数会乱掉,导致不符合abc导出停止的条件,这个文件就会一直处于被写入状态。
二、Maya导入abc
如果你不需要mmd相机,可以跳过maya这个步骤直接把abc导入Houdini。使用maya是因为Houdini不好直接读取abc相机(这个有待实验,我简单试了下发现行不通)。
使用Maya的Import导入mmd输出的abc文件。注意帧率要设置成24fps。导入后Outliner发现有相机和一堆mesh,这里每个mesh都对应着mmd里的材质分组,应该是模型原作者做的拓补。
方便起见把这些polygon都分组。
挨个导出abc, 顶部export -> export selection to alembic,常规Maya操作。
三、Houdini里的骚操作
1.导模型/材质分组:
Houdini新建geo节点,然后Alembic节点读取单个模型。
中键alembic节点,会发现点数和之前maya里的mesh数相等, 这里表示模型上都是packed geometry,每个点都是一个材质上的组,所以需要一个for each循环把每个组分别unpack。这里我加了一个attribute wrangle, 为了给每个组独立id,方便后面分组。
然后convert polygon,再加partition节点,这个节点是根据之前设置的id进行分组的。 然后把模型缩小为原先的0.1。
如果你想在原有材质分组基础上加新的组,选中需要分组的面,然后tab->group creat。
然后就是Redshift上材质了,这就不展开讲了,放一张viewport预览(胸口碎玻璃是布尔破碎+RBDFracture切割出来的,然后给了初速度做刚体解算,选一帧删出一个洞,位移到原点,然后point deform到他右胸车窗的位置)
渲染图:
2.导入相机
还有一点小Bug正在修复中……