肥花_时刻保持Q弹

技能树乱点。建模/绑定/k帧/代码/黑科技研究(?)
攻厨。老婆和老攻三年一换,一夫一妻自产自销。

古剑二MMD&绑骨教程(4)骨骼,权重 [16-12-02 微调 ]

文中出现的日语,汉字用简体字代替,平假名我不认识的直接省略(基本都不认识。。),片假名我尽量打(因为读的时候是英文,要是我不小心哪个地方习惯打成了英文。。可以无视,也可以评论吐槽(`・ω・´)  )。第一次出现我会两个都打。


  • 骨骼,权重


MMD的模型能动,是因为模型上的每一个点都与一根或几根骨骼关联,而动作数据记录的是骨骼的移动旋转状态,当骨骼移动或者旋转,模型上对应的部分就会跟着动,如下图的Miku。



为了将来套用动作方便,我们建立骨骼的时候要采用跟别的模型统一的骨骼名称和结构。初学者强行灌输概念再一点点建立骨骼还要敲日文进去略麻烦,所以干脆偷个懒,直接套用现成模型的然后再修改就好。我们先去把MikuMikuDance,也就是最后用来做动画的那个软件,下好,里面会附送很多模型,可以用来参考。

也有很多人是从网上下载了其他模型然后复制骨骼,那些骨骼通常更加完善但也复杂,初学者很容易一脸懵逼,甚至曾经发生过手动刷捩骨的惨剧(……) 所以我们还是先从最简单清爽的开始,有需要的后面再添加。

MMD软件下载请去https://bakakin.lofter.com/post/400994_16e51be 自己找。我写此教程时汉化版只有739,现在已经有926了,所以你们的界面可能和我的截图不一样,并不影响。

下载解压后,在MikuMIkuDanceUserFileModel 里面有一些现成的pmd模型。我打开的是初音未来的模型。


打开模型后先观察一下骨骼。骨骼大多显示为蓝色的锥形,但其实一个骨骼本身只有一个圆圈或者方块,那个尖尖是指向别的骨骼或者一个特定方向的时候才有的。大多数骨骼都有一个指定的方向,比如上半身指向颈,颈部指向头。

现在点击编辑窗口菜单栏的【情报】-【pmx编辑】,切换到pmx编辑界面。(PMDEditor的编辑界面可以在pmx和pmd间互相切换,我们通常是用pmx界面,但是一些旧版的pmd模型是用的pmd界面。在pmd界面好像很多东西不能复制。。。所以切到pmx去。)

然后点击【骨骼】标签(如图),选中所有的骨骼,ctrl+C。


在我们的模型的骨骼列表中ctrl+V。骨骼就被贴过来了。当然了这套骨骼还需要修改一下才能用。


骨骼名称左边的颜色代表分类,有很多颜色,现在详细解释起来略抽象,一会儿实际中碰见了再解释。先记住最简单的几项:

蓝色的是最普通的骨骼,在MMD中可以旋转;

绿色的既可以旋转又可以移动;

红色的是IK骨骼,黄色的是被IK影响的骨骼,通常在腿上和长条状物体上使用,IK的概念稍后解释;

灰色的是在MMD中不表示,通常也不控制模型的运动,但是用于标示其他骨骼的指向,我们称为先骨骼(不要问为神马因为日文是这样的(`・ω・´) )。

我们在view窗口也可以看到所以的骨骼被显示出来了。注意左下角的显示选择,蓝色的和灰色的圆圈都是跟骨骼相关的显示,分别代表两种不同类型的骨骼,蓝色的是所有能显示的骨骼,灰色的是隐藏的先骨骼。

上方选择对象也改为【骨】,因为一会儿要选择骨骼然后进行编辑。

(看这图,这身高差,158的Miku和178的谢勃勃,突然觉得当初导入0.13倍好像还是大了,说不定0.125会好点?嘛反正这不是重点)


我们看列表中的这些骨骼,有很多是不需要的,我们只要留下人体躯干和全局控制的骨骼就行,剩下的裙子袖子领带辫子装饰都删掉。(不认识的就参照下图选出来的删 _(:з」∠)_ )


然后现在应该清爽多了。但是这套骨骼略简陋,现在我们需要增加几个骨骼。

首先,增加一个上半身2的骨骼。(如果你的模型已经有这个骨骼了就跳过吧。我从Miku身上导入的是没有的。这大概是最旧的版本了)

因为很多动作的上半身表现较为复杂,胸部和腰部运动有差别,所以加上。右键【上半身】这个骨骼,【追加】-【当前位置追加】。


然后就会多出来一个骨骼。此时它还没有方向,只是一个蓝色的圆圈,而且坐标位置是(0,0,0)。

我们把它名称修改为上半身2,【亲骨骼】填写上半身骨骼的ID。亲骨骼可以这样理解,就是当一条骨骼的亲骨骼运动的时候,这个骨骼就会跟着运动。在这里,就是当上半身(大约是腰的位置)运动时,上半身2(胸的位置)也跟着运动。

下面的【表示先】一栏,用于表示这个骨骼的指向。有两种方式,第一种是直接指向另一个骨骼;第二种是指定一个相对方向,用XYZ坐标表示。这里我们的上半身2应该指向颈部,所以选择第一种方式,然后填写首(日语就是颈子的意思吧)的ID。


而原本的上半身,其指向方向就应该改成上半身2

这个骨骼的亲骨骼改成上半身2

左肩右肩的亲骨骼也改成上半身2


也就是说,整个上半身的骨骼结构是:

上半身→上半身2→首→头

                          → 左肩 → 左腕 → 左ひじ。

                          → 右肩 → 右腕 →右ひじ。

就是完全符合人类的真实情况。


以及,在骨骼列表中把上半身移动到上半身2的上面。或者这么说,每次添加什么骨骼后,一个骨骼的亲骨骼都应该放在该骨骼的上面,不然之后会有诡异的bug。


新建的骨骼默认位置都是(0,0,0),所以接下来我们把骨骼放到正确的位置上。比如上半身2这跟骨骼应该位于上半身之间。顺便把其他的骨骼也移动到对应于模型的部位。

移动骨骼的方法是选择一个或多个骨骼(在view界面点选或框选都可以,也可以在编辑列表中选择),用控制柄移动。(如果在view界面框选的时候左上角的【选择】选项有且只有【骨】。不要把顶点也选进去了。)

为了确保位置正确,可以随时点击右上角的那个四方格打开三视图。我常用的办法是现在正视图里面调整好X和Y轴位置,然后在左视图里面调整Z轴。骨骼列表中最上面的那个绿色的センター(center)骨不用管,是控制重心的,就放原地不动。为了方便看清可以用【绞】只显示部分材质。


接下来再添加一个全亲骨骼。在编辑窗口点击【编辑】-【骨骼】-【全亲骨骼の追加】。新增的全亲骨会在骨骼列表的最上方,坐标默认是(0,0,0)。保持默认就好。全亲骨的作用是控制所有骨骼的运动,比如在MMD中,只要移动全亲骨一个就能移动整个模型。现在大多数的模型都具有全亲骨。

然后还需要增加一个グルーブ(groove)骨骼。右键センタ骨,选择【追加】-【当前位置追加】,于是新建的骨骼就在センタ的上面。名称改为グルーブ,日文名称自己敲或者复制我刚才打的,确保要一样。其余设置如下图,【亲骨骼】为センタ,【表示先】为指向Y轴正方向1单位,【性能】选择回转、移动、表示、操作。

这个グルーブ骨骼将来作为上半身和下半身的亲骨,避免套用一些舞蹈动作时的bug。


同时センタ骨的表示先改为指向グルーブ

注意叠放次序,センタグルーブ的亲所以要放在上面。


也就是,全亲 → センター → グルーブ,这样的顺序。

这里顺便解释一下性能选项中那些选项的意思。

回转的意思是这根骨骼在MMD中可以进行旋转操作。

移动的意思是这个骨骼在MMD中可以进行移动操作,通常模型里面类似于全亲、センター、グルーブ、还有各种IK骨的都能移动。

IK的意思是是否为inverse kinematics,即反向动力。后面再具体根据例子来解释。

表示的意思是这跟骨骼在MMD中可以显示出来以供调教动作。我们大多数骨骼都是显示的。除了那些先骨骼,仅仅用来标示其他各个的方向,在MMD中不显示。但是在PE中是可以显示出来以供编辑的,就是那些灰色的圆圈。

操作,我目前没见过不能操作的骨骼_(:з」∠)_  就不管了,总之每个骨骼都会选上。

然后将グルーブ骨移动到センタ骨上面一点的位置,看起来清楚些。由于我们刚才设定グルーブ骨的方向是(0,1,0),所以我们可以看到グルーブ骨的指向就是垂直向上。


上半身下半身的【亲骨骼】都改为グルーブ。(为什么原来的センター作为亲不行呢,其实也行,自己玩儿应该没关系,但是套用舞蹈动作后各种bug。很多动作都是通过直接移动グルーブ骨来控制除了脚之外的身体部分的XZ平面的移动的。)


现在基本的骨骼就好了。然后是谢波波的衣服辫子之类的,也要建立对应的骨骼。但是PE中对于裙子和类似裙子状的物件(比如谢波波的外袍和下裳)可以用曲面自动插件完成,不必手动绑骨。所以我们接下来只要给辫子和各种布条(。原谅窝不知道该叫什么)建立骨骼就行了。

这里以谢波波的充电器 辫子为例,讲解一下一般操作步骤。也可以自己找现成的模型参考。

我们首先在骨骼列表中任意位置右键-【追加】-【最后尾追加】。


然后新增加的骨骼就会在骨骼列表的最后尾。我们给它改个易于辨认的名字。比如我这里是髪_1。

然后因为辫子应该是跟随头部运动的,所以把【亲骨骼】一项改为头的ID。在【性能】选项中,保持默认的回转表示操作就行了。


新增的骨骼就是一个蓝色的圆圈,还没有方向。我们再建立几个骨骼,然后把它们连成一条。以我自己的为例,右键刚才新建的髪_1骨骼,【追加】-【接续先追加 (Ctrl+L)】,在刚才骨骼的下方会出现一个新骨骼,并且这个骨骼默认的亲骨骼会自动设置为髪_1。然后右键这个骨骼,在用【追加】-【接续先追加 (Ctrl+L)】。以此类推。我们会得到一串骨骼,每一个的亲骨骼都是上一个骨骼。

最好给骨骼们都改个名,1234567编个号,找起来方便。然后我们把每一个骨骼的【表示先】都设定为下一个骨骼。例如,髪_1的表示先是髪_2髪_2的表示先是髪_3。最末尾的骨骼的表示先为-1,也就是没有指向。然后将每个骨骼摆放在合适的位置上。我是在左(右)视图中操作的,并且显示模型点帮助确定位置。

注意每次在view界面移动好一个骨骼后,在窗口点击一下。不然直接点进编辑窗口的其他骨骼后,之前的移动会回到原位→_→


辫子最末端的那个骨骼,因为与运动无关,所以【性能】去掉表示这一项。这个骨骼会变成灰色,也就是所谓的先骨骼。


以及,PE在骨骼对应方面比较聪明,如果你设定好了亲骨骼和先骨骼的ID,将来即使更改骨骼名称或者改变骨骼叠放次序导致ID也变了,PE都会自动对应好。。。


这里顺便说一下IK骨。一些长条形的东西,我比较喜欢加IK,比如辫子,这样在做静态造型的时候比较方便。当然了因为辫子在动画中是通过物理计算来运动的,不需要手动摆造型,所以不加也是没关系的。但是假设需要,比如我希望在做静画的时候让谢波波的充电器♂摆出某种自然弯曲的造型,假如没有IK,那么我们需要一节一节的调整。


假如有了IK骨,我们只需要在末尾一拎,整个辫子都会很自然地跟随着动。


也就是说,当IK骨运动时,会通过计算让关联的其他骨骼运动。比如模型的腿脚,就是有IK的,在K帧的时候只要移动一下脚,整条腿就会跟着移动。

以下讲一下添加IK骨的方法。不想加的也没关系,理解一下就好。

添加IK的方法:还是以辫子为例,右键骨骼列表,【追加】-【最后尾追加(Ctrl+P)】。将新建立的这个骨骼移动到辫子末端的位置。然后参数设定如下,名字我改成了髪_IK,【亲骨骼】设为全亲骨。【表示先】用相对方向,指向Z轴正方向。【性能】全选。【IK】的target设为辫子最末尾的一根骨骼,我这里是髪_10Loop是跟计算的循环次数有关,具体的我不是很清楚,通常设定为十到几十的。

因为髪_10这个骨骼作为了IK的target,所以左侧的方块变成了粉红色。


然后选中编号2-9的髪骨骼(我不选1是因为绑完觉得离头太近了并不想它发生多少运动,不过并没有什么关系),右键,【Index复制】。

然后选择IK骨,在Link栏右键,【从Index复制当中追加】。


现在这些骨骼就被IK关联了,注意【影响下骨骼列表】中的顺序,不能反过来。



现在能看到辫子上跟IK相关联的骨骼变成了黄色。



接下来给其他的一些零散部件建立骨骼。不过这里我为了接下来刷权重看起来清楚,很多骨骼我暂时没有建立。骨骼任何时候添加都是可以的。


然后开始蒙皮,也就是刷权重。模型上的每一个点都对应一个或多个骨骼,并且具有相应的权重。当这些骨骼运动的时候,模型上的点就跟随运动,跟随的程度与权重有关。

我个人比较喜欢在新版的PMXEditor里面刷权重,因为有的时候模型前后的点重合在一起看不清,比如肩膀,而PMXEditor有只显示表面顶点的功能。所以这里我用PMXEditor打开模型。而且我这版的PMXEditor有中文。。嗯。(作者有的时候头晕,两个软件来回切,如果看到哪张配图还是日文的,请不要奇怪。)

点击view界面右上的【涂】,会出来一个小窗口,里面是刷权重的各个参数设定。

【对象】就是我们在刷哪一根骨骼的权重。我的习惯是从上半身2开始刷,所以这里选择了上半身2这个骨骼,在刷权重状态下选择骨骼的方法是,按住shift键点选view界面的骨骼(点本体的那个圆圈,别点尖子),或者在编辑界面的骨骼列表里选择。

【描绘模式】用默认的BDEF就行。

【权重值】就是权重的数值,100就是最强,当骨骼动的时候,模型对应点就会完全跟随移动。随着数值下降,跟随就会减弱。比如在两根骨骼相接处的点,通常是两根骨骼各占50。

如果不怕理论轰炸,可以同时参考这个帖子,对权重解释的很详细:https://konobaka.lofter.com/post/1cefaa3a_5e596e2

在开始前,把view界面最下方的显示骨骼权重打开,就是那个红紫渐变的东西。这样在选定任意一根骨骼的时候,对应的点就会显示权重相关的颜色。


新手刚开始刷权重的时候会有一头雾水的感觉,时间长了才会养成自己的习惯。我个人是从整体到局部的方式,接下来我也会这样演示。

初学者可以从最简单粗暴的方式开始,就是第一根骨骼先用100的权重值刷点,再用第二根骨骼刷50,那么就会自动做减法,前后两根骨骼都是各占50。如果第二根骨骼再用25刷一次,那么第一根骨骼的权重又会自动变成75。因为一个点上的权重总值必须是100。(即使你什么也不刷,这个点的权重也会自动默认给列表中第一个骨骼。这就是为什么一个模型即使不刷权重,在MMD里面只要你移动了全亲它也会跟着动。)

这里我选定上半身2骨骼,然后将大半个身体都刷成100。数值100的权重刷出来的点是大红色。


权重对应的颜色,100是大红,75是紫红,50是紫色,25是深蓝,0是浅蓝。(0和25的颜色非常接近。通常我们不会用0来刷的,但是如果第二根骨骼用100来覆盖前一根骨骼的权重,前一根骨骼在此处就会变成0,而不是像没刷过的地方是黑色。)

接下来选择上半身骨骼,将权重值选为50,在上半身和上半身2交界处刷一遍。而上半身2在此处的权重就会自动减去50。也就是这里的点变成了同时被两根骨骼控制,权重各占50。

注意在刷权重的时候想清楚材质的重叠,比如这里谢波波的辫子,还有项链,不需要刷给上半身,所以就用【绞】去掉显示。每次刷权重的时候只保留需要的材质。

可以看到50的权重对应的颜色是紫色。

如果觉得看不清楚,可以右下角Mode选择权重模式,这样子就可以从红色的深浅来观察到权重覆盖的情况。(忽略裙子骨,那是我后来完成的模型)



然后把下面的部分用100来刷。可以看到交界处是紫色,剩下的是大红色。


然后选择下半身骨骼,在上半身和下半身之间刷50,然后整个下半身再刷成100。

然后用类似的方法刷出。我这里暂时还没有给刘海建立骨骼,所以一同刷进头里了。以后建立了骨骼可以再刷出来。

手和肩也刷出来。肩膀的刷法一直是比较纠结的,不同的模型不同的布线会完全不一样,因此我目前没有十分固定的刷法,而是根据经验来。新手可以去下载一些现成的模型参考权重情况。

然后,对于有裙子和大袍子的模型,虽然后面会用插件自动加骨骼和权重,但是会跟下半身有衔接,所以这里先把裙子位于下半身范围及以下的部分都刷给下半身,而不要刷给腿,也不要空着,否则可能意外留下了没有权重的顶点然后导致bug。

辫子我刷每一节直接100。


每刷完一根骨骼,可以检验一下。PE自带调试功能,点击view界面右上角的【T】可以弹出TransformView界面。点击一根骨骼旋转可以观察一下效果。或者可以直接放进MMD里面调试,点击骨骼进行旋转即可。下图是只刷了躯干。

顺便简单说一下怎么放MMD里面调试。

首先保存模型,不一定要关闭,然后打开MMD,点击【模型控制】下的【载入】键,找到这个模型确定载入,(或者直接将模型拖进去),此时【骨骼控制】下的【选择】按钮应该是按下的,我们可以看到人物的全部骨骼。然后选中一个,点击【骨骼控制】下的【旋转】,会出现一个控制柄,然后可以旋转骨骼,观察模型的动作。

当然在MMD中我们可以直接载入现成的动作数据,让它跳舞,这样模型bug更容易暴露。

点击【文件】-【载入动作数据 (M)】,选择一个vmd文件,确定。然后等几秒钟,人物模型会有反应。然后点击【播放】栏下的【播放】按钮。然后就会播放动画了。


因为此时人物绑骨还未完成,所以各种穿模显现一定很明显,比如上图,我把袍子衣摆之类的暂时绑给了下半身,所以它们就跟着下半身一起动。假如没有绑给任何骨骼,这些部件就会跟随全亲骨一起留在原地,发生模型割裂的情况。还有肩膀之类的地方,虽然绑了,但是权重不合理还是免不了穿模。所以在PE中修改一下,保存,再导进来调试。整个过程就是反复的尝试,最后尽可能的减少穿模。

但是,假如人物在动画中发生了重度变形,比如身体、四肢等部位明显分离之类的,那就很可能是一些骨骼的这些设定没弄好。回头检查一下,跟别人的成品模型对照一下。


继续说绑骨。如果调试中不幸出现了这种情况,那就是有的点没刷进去,或者相加不等于100。


检查是否漏点,还是在权重模式下检查最好,会用对应大色块来显示权重。这样哪里的点没刷到就很明显了。



在刚才的Transfrom界面的菜单栏点击【表示】-【顶点材质masking】,同样可以调出类似于【绞】的材质筛选列表,然后观察部分材质的运动情况,比如被长袍遮挡的腿。当然了因为腿部的骨骼被IK控制,你单独移动或旋转腿上的骨骼是动不了的,必须移动脚底的IK骨来带动整条腿。


因为大多数骨骼都是用汉字标注的,我们基本都认得,所以只有参照现有模型来刷点就行了。尤其是膝盖,肩膀,手肘等各种关节的地方,说起来一言难尽,个人觉得参照现有模型很重要,比如看人家的关节是怎么刷的:

自己就不会刷出腿窝走形的样子。

当然了肩膀那块总是很虐。。。我自己也是反复调整很多次才弄好。而且裸模和穿了一件衣服或者穿了好几层衣服刷起来的方法也是不一样的,甚至同样是裸模,点的排布不同刷的方法也不同,所以只能反复尝试积累经验。

在刷点的时候,如果觉得前后的点堆在一起傻傻分不清,可以选择【mode】-【wire】,变成透明网格显示。或者在Weight模式下也可以看出来。


如果觉得点多还是看不清,可以打开新版的PMXEditor,点击view界面下方的【表顶】,即只显示表面顶点。

必要的时候把两面描画都暂时勾回来,不然看不清楚。


感觉刷权重这种事情,总之还是自己多找模型看,多试吧。_(:з」∠)_


然后,关于模型手臂打开呈45度的问题。当我们绑骨完成后,在Transform界面里,有一项具体数值精确旋转的选项。选择对应的骨骼,设定好数值后,点击【回转】,骨骼就会按照指定的数值旋转。

一般根据实际情况,古二的一些模型我是左手12~15度,右手-12~-15度。有的时候给肩膀5-15度,看具体情况。

当模型的手臂旋转到合适的位置后,可以保存为一个新文件。于是模型手臂的张开角度就调好了。



袍子裙子之类的暂时不刷,先刷给下半身,下一章介绍物理和刚体的时候直接用插件一次性搞定。 



评论(16)

热度(227)

  1. 共8人收藏了此文字
只展示最近三个月数据