mmd-for-unity-proj / mmd-for-unity

MikuMikuDance for Unity
BSD 3-Clause "New" or "Revised" License
414 stars 83 forks source link

AvatarSettingScript:全ての親ボーンと腰ボーンが無いモデルでMecanimがおかしい不具合の修正 #32

Closed eral closed 10 years ago

eral commented 10 years ago

全ての親ボーンと腰ボーンが無いモデルに於いて、Avatarの情報が人型を保っていない不具合を修正しました。 あにまさ式初音ミクさんとLat式ミクさんにHumanoidAvatar形式のモーションが正しく適応されない不具合が修正されます。

テストモデル

Mecanim Locomotion Starter Kitが正常動作するかで判断しています。 テストモデル確認時に #31 は当たっていません。

GRGSIBERIA commented 10 years ago

プルリクありがとうございます. MMDも例外的なボーン構造が多いので,なるべく直接指定は避けたほうが良さそうですね.多少重くなっても,条件に合致するようなボーンを探索するのがベタっぽいです.

eral commented 10 years ago

ボーン構造について初期モデルと現在主流のモデルを比べると、 色々と拡張されていますが後方互換は結構保たれてる様に思いますね。 モーション(VMD)がボーン名マッチングに為る関係上主要なボーンの名前が安定している事と、 ローカル座標での変形なので親子関係を崩し辛いのがその主原因かと思います。

多段ボーン・捩りボーン・付与親ボーンのノウハウが形成されるにつれてボーン構造が複雑化してきていて、 今では腕のポリゴンが腕ボーンに乗っていない様な事は増えています。 しかし、腕ボーンを動かすとなんやかんやと巡り巡ったり巡らなかったりで腕のポリゴンが変形するのは変わらないです。 結局、間接ボーンの探索はボーン名で引っ張ってくるのが高速かつ正確かなと思い始めています。

装飾ボーン・IK影響下ボーン・物理演算ボーンの探索は決定打が無いですが、 それらを探索する時はあんまり細かい指定が無くて物理演算ボーン全部とかなので苦労してない気がします。