あ~あ、ウエイトペイントさえなければ秒でMMDモデルできるのになぁ~🙄
この世の理不尽の象徴のようだよなぁ~🙄
だって人間の形なんてみんな一緒だし…🙄
なんか楽する方法ないかなぁ…🙄
遡ることうさぷちゃんを作っていた頃、とにかくウエイトペイントを正攻法で攻略する気が無かった私は、人体ウエイトの自動設定サービスに目を付けました。
サービス名はMixamo、かのadobeの提供する無料webサービスです。web上ですべて作業が完結し、足と肘と顎の位置を適当に設定すればくるくるチーンと2分ほどで人間のウエイトが設定されます。
そいつをBlenderに持ってきて、頂点グループ名をスクリプトでMMD標準ボーンの名称に置き換えればあら不思議、MMDで動くじゃないですか!
が、やはりそれも完璧とは言い難く、Blender上での修正は超面倒でした。
それでも自力で一から塗るよりはだいぶマシでした。
はぁ…もうわけわかんねぇよ…
Mixamoの限界を感じていて、なーんか他の方法ないかな~?と思って探し回っていたところ、BlenderのアドオンにRigifyとか言うなんか凄そうな人体専用Rigアドオンがあるじゃないですか!
顔面rigまで自動ウエイトが可能ときて、試さない訳がなかった。そして試しにやってみたところ、実にいい感じでした。
rigifyのこの素晴らしく細かい顔面ボーンを利用して、顔面もボーンモーフにしようと思っていたのですが、おま環でボーンモーフ対応のPMX出力アドオンが息をしていないので、とりあえずそれは諦めました。
それじゃぁこれをスクリプト組んでMMDのボーンに対応させれば一瞬でウエイトペイントが終わる夢の生活が始まる、そう考えていた時もありました。
いやぁもうこれ書いてるだけでしんどい。
名前の対応もそうですが、ウエイトのついている範囲も正確に合わないとうまく動く訳がありません。
一旦MMD標準ボーンを自動ウエイトでウエイト付け、PMXEに持ってって準標準ボーンを追加、またBlenderに戻してウエイトの構造を調べました。
Rigifyはかなり細かくウエイトが分けられているため、そこそこ準標準ボーンに対応してくれると思ったら、Rigifyは腕捩りにあたるウエイトが2段しかなく、残念ながら準標準ボーンとは合いませんでした…
また、手のひらや顔、太もも、胴など細かく分けられている場所はMMDの準標準ボーンの方に対応するボーンが無かったため生かすことはできませんでした…
準標準ボーンの追加ボーンに合わせられたのはつま先や上半身2くらいかな?ここら辺でスクリプトで変換する事の意義が半分くらいになっています。
Mixamoのボーン名を弄ってる辺りからうすうす感じていたのですが、Blender上のボーン/ウエイトの左右ミラーに対応するための"_L"や".L"などのサフィックスがインポーター/エクスポーターを通過する時にどう変化するのかがいまひとつ掴みきれず、どこがどう対応するのかを調べるのが超しんどかった。
後々になってエクスポーターの機能であらかじめ名前変換を定義できるとかなんとかを知ったのですが、時すでに遅し、Blenderの左右ミラーを捨てて生のボーン名で行く事になってしまいました。
どうしてこうなった。
rigifyには2種類のrigがあるみたいなんですが、どうも指先はhuman-rigの方が綺麗なウエイトが付くので指先はそっちを使ってみました。この指のコントローラーがとってもsexyですね…
ある日ウエイトを拗らせて丸一日指の塗り直しをしていたのですが、無事発狂してスクリプトの変換に頼りました。はっきり言って私が1日こねくり回したウエイトよりよっぽど綺麗です。この場合だけはスクリプトの変換が思い通りの働きをしてくれたような気がします。
スクリプトで変換したウエイトの塗り直しは必要なく、関節のコントラストが甘かったのでウエイトのレベル調整のみを行いました。
1枚目:human-rigによる自動ウエイト
2枚目:スクリプトでMMDボーンに対応する頂点名に変換したもの
PMXに出力してPMXEで軽くセットアップし、躍らせてみます。
…と、足のボーンのコントレイストが外れているじゃないですか。とりあえず対応を調べる時に作成したモデルの足ボーンをCSVに出力して読み込ませて修正できました。よかった…。
って、何でこんなめんどくさい事をしてるんでしょうね。
rigifyのウエイトは下塗りくらいには役に立ちましたが、手以外は基本的に原型がないくらい調整しました。
どうやらこれらはそこそこに無駄な行為でしたね。
今後はサフィックス変換も考慮してせめて左右ミラーくらいはまともに使えたら、今後少しは役に立つ物になるんじゃないかと思います。
次章、ウエイトペイント編2