2025年2月16日日曜日

ボーンの計算順序(私的考察含む)

 前回継続回転に付与を使うといい塩梅なんですよ?と紹介していました

この付与というのは、便利構造に結構頻繁に使われます

代表例とかだとPMXEプラグインで入れられる”足D”や”肩キャンセル”とかです

こういうのをプラグインで入れるのも手間いらずなので使っちゃえば良いのです

が、このブログは「UNLIMITED BONE WORKS」と謳っている訳ですから、手作業で追加出来るようになれるといいなぁ?な流れで話を進めて行こうと思います


では、ボーン改造する準備として最初に何をするか?なのですが、私はボーン改造や追加を行う初手にモデルさんのボーンをマッサージします


PMXEのプラグインで便利ボーンを追加しようとして失敗した経験がありませんか?

これは、モデルさん毎でボーンの順番や階層、細かなボーン名称、末端の処理の仕方、追加されている準標準ボーン、便利な独自構造等などなど結構な差異があったりします

この差異がボーン追加の条件に合わない場合にあえて追加しない(出来ない)という処理になっちゃうからなのです


基本的なスケルトンであればボーンの並び順を適切に並べ替え変形階層を全て0にしてあげられます

ちゃんとボーン順序や階層を整理することで正常にプラグインで追加が出来る事が多いのです


モデル毎の差異を全体的にザックリ把握しつつ

ちゃんと動くから”間違いではない”のだけど”ビミョーに無駄”だったり

IKのボーン並び順をそういう感じにちゃうと後で自分が困るかな?

という感じの所を整理していきます

一見無駄に感じると思いますが、モデラーさんの創意工夫が感じられる作業でもあります


ほうほう、こういう事してるのねー?

とか

このボーン並びでどうやって変形させてるんだろ?(ウエイト覗いてみて)うわぁぁぁぁぁぁぁ

とか

これは思いつかなかったなぁ?今度どっかで使ってみよう

とか

モデル作成時に協力させていただいた構造とか使われていたり、紹介されていてホッコリしたり

そんな感じでわりと楽しいお時間です


変形処理の順番(個人的考察を含む)

実際にマッサージってどういうことをするのかなのですが、要はボーンの処理順序の整理適正化です

そのためには、”ボーン番号”と”階層指定”、”物理後演算”の意味と処理のルールを把握しておく必要があります

前にもお話した事と重なりますが、少し詳しく説明していきます


ボーンの変形処理の流れは1フレームの間に下のような感じで進んでいきます


1 ボーン番号

基本的にはボーン番号の小さい順(リストの上)から大きい順(リストの下)に変形処理をしていきます

IKの処理と付与ははちょっと特殊な順番になっていると思われます

私的推察として

同一階層のボーンの処理が終わるまでIKのボーンは一旦FKとして仮処理している

    仮処理ではFKは変形していないのでIKの付与は動かない

    FKの親ボーンにする場合親子関係が内部処理的に逆転する

付与親や親ボーンとして扱う場合はIKの処理を待つために階層指定を遅らせる必要がある


付与を指定した場合は付与親の計算結果を読みに行く割り込み処理が行われるようで親子関係の計算結果に影響を与える

MMDエンジン化したIKを正常化する手段に、付与ボーンで2重化したボーンを親ボーンに切り替える手法があります

割り込みがかかる事で親ボーンの内部的逆転が正常化するのではないだろうか? 

という感じです

一見IKのボーン順序や付与の順序に不正は無いのに正しく動かないという事があるのはこのあたりが関係しているのだろうな?という感じで、これまでの作業経験と結果から推察しています


2 階層指定

変形順序のレイヤーのような感じですね

IKの処理タイミングも重ねて考えると

階層0のボーン順序で処理→階層0のIKの変形処理→階層1のボーン順序で処理→階層1のIKの変形処理→階層2の…という感じになります

普通のモデルさんにはほとんど階層指定は必要無いですが、ちょっと濃いめの構造とかには頻繁に出てきます

IKからの付与を受けてうんちゃらーとか、そういうのをちゃんと動かそうとするとガッツリ大盛になります


3 足IKの処理

多分ここのタイミングで処理しているのだろうなぁ?という推測です

PMDモデルはモデル側で足IKのひざの角度制限が出来ません(必要ありません)

MMD内部で特別な処理をしてグンニャリしないようにしているのですが、その処理をするタイミングが多分ココだろうと推測仮定して作業しています

PMXモデルで足IKに細工をすると微妙に崩れる事があるのですが、多少この処理の影響が出てるのかな?と思っています

また足IK周りに何かを普通に追加しようとするとスッポ抜ける事例もこのあたりが悪さしているのかな?と思っています


4 物理演算

1、2、3の処理を終えてIK、FKの変形がはぼ決まってから物理演算が動く感じ

IKと物理演算が同じボーンに働いている場合は物理演算が優先されます

MMDで物理演算をOFFにするとIKが有効になります

髪IKと物理演算は共存可なので、静止画出力時用に髪IKやネクタイIKを追加してても良いのではないかな?と思うのでした


5 物理演算後

物理演算後のチェックを入れると物理演算を終えてからもう一回ボーン順(IK)、階層指定順で変形処理が走ります

物理演算の揺れものから何かをしようとすると必須ですね

上手に利用出来れば、物理演算とIKの結果を合成出来たりもします

【第18回MMD杯本選】「天月りよん」さんに舞っていただいたで配布させていただいているりよんさんのケープとか髪に使っています

足IKがらみの仕掛けで変形が崩れる場合は、物理演算後に処理をすると良いんじゃないかな?と思います

足Dも物理演算後の付与にすると変形結果のズレが最小になるんじゃないかな?

物理演算の突き抜けが小さくなる可能性もあるので一回試してみてはいかがでしょうか?


足IKの内部処理のタイミングがあのあたりだろうなと推察したのは思い出深いエピソードがありまして

初音ミク@七葉1052式(仮)G型にひざ枕ボーンを組み込んでいる時に動画を出力するとどうしても膝の変形が崩れてしまっていました

ほとんど諦めかけていた時に、試しに物理後処理のチェックを入れたら劇的に改善して採用できたという事がありました

その後自分のORZシリーズ等への足IK回りの処理には物理後処理を採用しています


1~5の順序でボーンを処理して次のフレームの処理へ進む流れになります

モデルのマッサージというのは、こういう流れで処理されると意識してボーンの順番を並べ替えて整理していく作業になります

メッチャ地味です

が見通しが良くなりますし、大雑把でもモデル事の基礎を把握しておくと後が楽になります

基本は大事なのです

少し長くなりましたので実際の作業はまた次の機会にしうようかと思います


折角ブログ用にステージ作ったりしているので、そろそろそれなりにちゃんとした動画を仕上げたい所

少し更新がノンビリになっていくかもしれないのだけれど

更新が止まらないように応援してやって欲しいおっさんでした


0 件のコメント:

コメントを投稿