2025年1月18日土曜日

ボーンモーフの回転とか順番とかについて(また中編??)

ボーンモーフの回転量、移動量はワールド軸、ワールド座標で記述、処理されます

ボーンを操作して変形の結果を確認しながらの作業がほとんどで、丁寧にセットアップされているモデルさんだと丁寧にローカル軸の設定等はされています

ですから、ワールド軸(座標)、ローカル軸(座標)というのは普段あまり気にする事は無い事柄なんですよね

このワールド軸処理というのはモーションデータの互換性を維持するために必要な仕様ではあるのですが、一見不思議な現象の原因にもなっています

ボーンモーフの回転量を数値入力した場合の順番や量、回数、同時に指定したかどうか等の入力順や方法によって変形結果が変わっちゃうのです

意味がわかんねぇ?何言ってるの?とか言われそうなのですが、本当です

これ、数学が好きな人だとピンと来るかもなのですが(X,Y,Z)という行列を扱う計算なので計算順序で結果が変わります

それが、視覚的に見えているという事です

ベクトルの回転とか行列変換とかフーリエ変換とか、私も深く理解しているわけでは無いですし、そーいう事まで理解する必要は無いと思います

「そーいう事があるんだねぇha-he-」という感じで大丈夫

実際に触ってみて、作ってみて、失敗して、最終的に形に出来ればそれでOKでしょう?


例をいくつか並べてみます

この形がデフォルトです

ここから各軸に90度回転させていきます

入力順序で結果が変わるのがわかると思います


XYZ軸に順次90度回転を入力した結果がコレ

結果Aとしますね






XYZに一括で90度回転を入力したボーンモーフの変形結果だとこうなります

こちらは結果B








X軸90度回転、Y軸90度回転、Z軸90度回転の単独モーフをXYZの順でグループモーフに纏めたもの

各軸に90度の入力をXYZの順番で順次回転させてからモーフ化したモーフ、3軸のモーフを重合加算で結合したモーフも結果は同じになるのですが、途中の変化が異なりました

変形自体は結果Aと同様ですね


グループモーフのリストの順序をZXYの順番に変更したモーフの結果です

順次ZXYに入力したモーフ、XYZ単独モーフを結合したモーフも同様の結果になります

結果Bと同様ですね

一括で入力した場合の内部的計算順序はZXYの順番だという事でもありますね



纏める順番や、入力する順番が変わるとまた結果が変わってきます

こんなになっちゃったり(YXZの順番)

こんなになっちゃったりします(XZYの順番)



結果が随分違うのが解るでしょう?

当然回転する軌道も変わってしまいます


45度回転とかでも色々変わるので弄ってみるのが一番解りやすいはず

サンプルモデルを用意してみましたのでモーフを弄ってみてください



ボーンモーフやグループモーフを作ってみたけどなんか変だぞという時の解決方法

ボーンモーフを統合したり、グループモーフを組む時に特定のボーンを複数軸で回転させてしまう事はありがちです

あるえ?そういう形になっちゃう?あるえ?とかなっちゃう事がありえるわけです

そこで諦めないでちょっと頑張って解決してみましょう


■モーフの結合方法を考える

 結合、結合(重合加算)、グループモーフ、フリップモーフ


■グループモーフ、フリップモーフの場合、処理順序を変更してみる

 モーフリストの順番を入れ替えてみて結果を確認していく


■ボーンモーフを細かく纏めて、順次処理するようにする

 処理順序によって結果が変わる筈なので、その順序でのモーフ適用をデフォルトとする


とそんな感じで行けるハズです

「何故そうなるかが解らない」ではなく「原因と解決方法は見えた」わけですから、何回かトライアンドエラーしていけば慣れてくると思います


ボーンを多数軸で回転させるボーンモーフを組んだ時、ボーンモーフを纏めたときの注意点でした

怖くないよー(こっちゃこーい



2025年1月12日日曜日

ボーンモーフで出来ること(モーフのお話 多分中編)

 先にぶちゃけますと

ボーンモーフで出来る事はボーン操作でも出来る

のであまり重要視されていまいモーフじゃないかなー?と思うわけです

が、ちょっと凝った構造とか不思議な仕掛けを作ろうとすると凄く相性が良いのです

ボーンを移動や回転の操作した場合にピッタリこの位置(角度)にとしようとすると数値入力で対処する事になると思います

1~2箇所なら手間でもないですが、多数のボーンを繰り返し設定するとなると結構な手間がかかります

 壁アクセ 配布してみるのこころを提供したPVで【初音ミク】ポンコツセカイ【MMD-PV】があるのですが、同じ事を手作業で繰り返そうとは思えないでしょう?

手のデフォルトポーズや決まった初期姿勢があるモデルなんかのポーズなんかを用意したりしてもいいでしょう

モーフスライダーで複数のボーンを一括操作出来るのは利便性が向上するのです

また、あまり知られてはいないのですが、ボーンモーフだけは外部親接続したモデル同士でのモーフの伝達が可能です

適切な仕掛けを仕込む必要はあるのですが、これは他のモーフでは出来ない事です


ちょこっと具体例とか紹介

まだまだ基礎編なので細かな説明等は個別応用編で行うとして、こんなことに使っていましたという感じで具体例を上げておきます

配布している物やその動画も紹介しておきますので、触ってみてもらえれば解りやすいかもです


VMD対応の一風変わったスペアナ

 【MikuMikuDance】 レベルメーターステージでWAVE 【ステージ配布】


 スペクトラムキューブステージ配布するよん

 このステージはこんな感じで動きます↓結構派手(0:30あたりから)

 【配布終了】 てとさんじゅういっさい(新人)のヒビカセ


どちらも複数IKをモーフで移動させてIKリンクを作動させています

実際にモーフをスライドさせてみると挙動が解りやすいと思うので触ってみてください

ボーンモーフ単体やUVモーフでもスペアナ自体は作れない事は無い事は無いのですが、ちょっと凝った事をさせようとした結果ですね

IKの挙動のクセを利用してデジタルっぽい動きをさせています



弦楽器の弦の挙動

 むかしのえれきぎたー そっと放流

 アイリッシュブズーキ

弦を押さえたときの弦の挙動や振動とかをボーンモーフにしていますアイリッシュブズーキの方が制御ボーンは若干シンプルになっています

IKを利用してちょっと複雑な事をしていますので、ボーンモーフにしておかないと面倒なのです



IKの親の切り替え

手切りIKの親の切り替えをモーフにしてみた構造配布するよ

手切りIKを普通の手切りIKで動かす→Aを手切りIKの親にする→Bを手切りIKの親にするという切り替えをモーフ化する構造です


ネルさんのストリートパフォーマンス ふたたびEx 主にモーション周りの技術解説編【MMD杯ZERO2Ex2 前編】

この動画で説明されているボールの親を左右の手切りIKに切り替えられるモーフはこの構造の応用です


ボーンモーフでIKリンクのボーン距離を0にする事で手切りIKの親(その逆)を拘束します

これ足IKの有効無効の切り替えもモーフ化出来るって事なんすよね(ちょっと複雑になるのですけど)


筒に何かを差し込むような挙動も面倒な位置調整ですが、前後にボーンモーフで拘束する構造を配置してIKで結んであげれば、モーフで角度合わせが出来ます

この構造はIKの応用で変形階層指定のお話の時に詳しくお話しする事になると思います



貫通防止モーフ

天月りよんさんに入れてある表情の一部やスカートの貫通防止モーフもボーンモーフです

物理演算を切っている状態ですとちょっとハレンチな感じですが、物理演算がONの状態ですと普通のスカートの形状に戻ります

モーションデータを読み込んだ時に足がスカートを貫通してしまう時に0Fでこのモーフを有効にしておくと貫通が回避出来ます

MMDでの作業時にフレーム移動させた瞬間に一瞬だけ物理演算がOFFになります。その一連の挙動で足の貫通が修正される寸法です

足や髪がモーション読み込み時に暴れやすいモデルさんには採用してもいいんじゃないかなと思います


どれもこれもボーン操作で出来る事ですが、複数のボーン操作を行ったり繰り返したりで手間がかかります

ボーンモーフは痒いところに小細工出来る便利モーフなのです



次回は”ボーンとボーンモーフを利用して何が出来るのか?”という流れなのですが、
一番当初に”ボーンモーフ=ボーン操作”だとぶっちゃけています


ですからボーンで何が出来るのか?というお話になる予定のつもりだったのだけど、モーフ変形の順番のお話をするの忘れてた

いかんいかん(==;

モーフのお話(とりあえずの前編))

”あんりみてっど ぼーん わーくす”ってブログですから、モーフと言ってもボーンモーフを中心にお話を進めていきたいのですが、モーフは様々な組み合わせを行う事で本領を発揮すると思っております

ですから、他のモーフの紹介を軽くしない訳にはいきません

ちょっと長めになりそうですので、とりあえずの前編でザックリモーフの種類の紹介です


PMXモデルのバージョン

あまり意識されていないのですがPMXモデルにはPMX2.0とPMX2.1のバージョンがあって、PMX2.1には追加されているモーフがあります

PMX2.1の専用モーフがあるモデルをMMDに持って行ってもモーフは有効に機能しません


PMXEでモーフリストに「新規モーフを追加」でタブに出るモーフには6種(頂点、UVの種を別とするなら7種)あります


頂点モーフ/UVモーフ

ボーンモーフ

インパルスモーフ

材質モーッフ

フリップモーフ

グループモーフ


このうちインパルスモーフ、フリップモーフはPMX2.1のモーフですので共通のモーフから先に軽くお話をします



頂点モーフ

表情モーフや小物の拡大縮小等に良く使われています

小物の出し入れとかでも良く見ますね


実際に表情モーフを頂点モーフで作るとなると結構な手間がかり、下手な頂点編集をすると簡単にモーフが壊れてしまうので少し敷居が高いモーフでもあります

自力で表情モーフが編集できるかどうかはモデラーさんにとっての一つの壁でしょう


私は・・・一応で出来ますよ(目をそらし)

手前みそではありますが、【第18回MMD杯本選】「天月りよん」さんに舞っていただいたでUTAUの天月りよんさんのモデルを配布しています

天月りよんさんは大葉式テイさんからの改変モデルなのですが、少しでも元のイメージに近づけたかったんでまつ毛や目元を弄ったらモーフが崩壊しまして

表情モーフはすべて再構築しました



UVモーフ

アクセサリの柄を変えたり、グラデーションを変化させたりするのに使えるので、ステージや小物、スペアナとかで良く見るモーフではないでしょうか

あるポリゴンに割り振られているテクスチャのUVを変化させてテクスチャの表示を変えるモーフになります

瞳のテクスチャをUVモーフで切り替えているモデルさんもありますね



ボーンモーフ

このブログだとこのモーフをメインで解説していく事になるモーフになる予感がするモーフです


指定したボーンの移動、回転をモーフにします

ぶっちゃけるとボーンモーフで出来る事はボーンの操作で出来る事です

それでも、複数のボーンを纏めて変形をさせるのに便利なので、武器を握るアクションが多いモデルさんだと、手のポーズをモーフ化しておいてもいいかもしれません

目元、口元、眉などに多数のボーンを配置して表情のモーフを作っているモデルさんもありますね

実際のアニメーションだと口元や目元等は歪めて表情を作っている事も多いので、モーフの構築には手間でしょうが、大きな表情を作りたいときとかに有効な仕様だと思います


私が作るモデルのちょっとした仕掛けにもよく使います

応用編は後程お話させれいただきますが、話が濃く鳴りすぎないかが心配な所です



材質モーフ

材質、テクスチャのベース色3種と透過度、エッジを変化させるモーフですね

ALの発光強度の調整とか色目の変化とかで良く見るのではないでしょうか

数値の指定と計算方法で効きの変化量を指定して設定します


加算と乗算の指定が出来るので、使いたいモーフに都合の良い方を選ぶことになります



グループモーフ

PMXEでは同じ種類のモーフを統合して一個のモーフにすることも出来るのですが、それとはまたちょっと違いがあります

複数多種のモーフを一纏めにして作用させるモーフで、それぞれのモーフが作用する比率も指定が出来ます

材質モーフAを60%、材質モーフBを100%、ボーンモーフAを50%、ボーンモーフBを70%、頂点モーフを100%

こんな構成のモーフをグループモーフに纏めるような使い方が出来るわけです


細かなモーフを組んでおいてグループモーフにしてしまうような作り方が楽なんじゃないでしょうか?



PMX2.1専用モーフ

6種の内モーフの内、インパルスモーフフリップモーフがPMX2.1(MMM)専用モーフです

MMM専用のモーフなのでMMDユーザーには馴染みが無いとは思いますが、この2種のモーフは非常に魅力的なモーフです



インパルスモーフ

インパルスモーフは剛体に継続的に力を加えるモーフでMMM版の継続回転機構として使えます

変な設定の余分な構造を必要としない継続回転機構が組めるという事です

MMDの物理エンジンがバージョンアップしてインパルスモーフが有効になれば余計な構造を無理やり組み込むMMDエンジンは不要になるのですが、なかなかそういう事にはなってくれません(私はMMDエンジン消えて欲しい派です)


フリップモーフ

多数多種のモーフを纏めて作用させる事が出来るのは、グループモーフと同様なのですが、フリップモーフは複数のモーフを順々に処理して一つながりのモーフを作ります


モーフAの処理→モーフBの処理→モーフCの処理のような流れです

グループモーフは同時

フリップモーフは順次

という違いですね


グループモーフも組み込めますし、グループモーフにも組み込めます

私ならメカ物の変形合体や、スイッチやキーボード関連とかのモーフとかで使いたいところです


この2つのPMX2.1専用モーフは本当に魅力的なモーフなので、MMMを使う前提のモデルのセットアップなら積極的に使ってみると面白と思います


凄く大雑把モーフの種類を紹介させていただいた訳ですが、”ここのところモット詳しく”とかリクエストとかあれば今後も対応を検討していきます

ご意見、ご要望ありましたらXなり、ココのレスなりに書き込んでやってください



2025年1月3日金曜日

まだまだ基本編 ボーンの設定いろいろ

まだまだ基本編続いたり

イロイロな制限やローカル軸を設定出来ますので、軽く説明です


回転、移動、表示、操作


回転と移動

基本的にボーンは”移動”と”回転”両方の操作が出来るのですが、移動出来てしまうと扱いにくい場合があります

ですから、PMXEでボーンを新規追加するとまず回転のみ可能な設定で新規追加されます

PMXEのボーンリストでは水色のが頭についていて、移動のチェックがOFFになっている状態です








一番良く見るボーンの状態ですね



移動のチェックをONにすると移動の操作が可能になり、ボーンリストのが黄緑色になります








こちらは、センター、全ての親、IKの親やIKのボーン等に設定されます


PMXEで回転のチェックを外した場合はMMMでは回転が出来なくなりますが、回転のチェックがOFFでもMMD、PMXE上では回転出来てしまいます

こういう細かな違いがMMMとMMDで出てきますので、特殊なセッティングをする場合は使用アプリで確認しておくのをお勧めします


表示

チェックをOFFにすると、ボーンリストに記載されますがMMD上のモデルに表示しなくなります

当然選択出来なくなりますから選択出来ません

操作したり、目視で確認する必要が無いボーンに設定すると良いと思います

ボーンリストに但し書きを追加したりにも使います





ちょっと古いバージョンのMMDだとIKのLinkボーンは非表示に設定しても表示されるバグがありました

最近のバージョンなら修正されているはずです


操作

チェックをOFFにすると、MMD上のモデルには表示しますが、操作が出来なくなるハズなのですが、MMD上だと操作出来ちゃったりします





選択操作する必要が無いなら非表示にしておくのが吉だと思います



軸制限とローカル軸

軸制限

軸制限はどのベクトル軸でボーンを回転させるか設定なので、軸制限にチェックを入れた上でXYZの3個のベクトル値をセットします

ボーンリストのは紫色になります

ステージとか機械や楽器モデルではよく使うんじゃないかな?

XYZのベクトルの絶対値が1になるように設定する必要があります

軸制限は絶対座標と同一なら「1,0,0」でX軸、「0,1,0」でY軸、「0,0,1」でZ軸で解りやすいのですが、斜めになると…計算がメンドクサイですね、そういう時にはちょっとしたテクニックがあります


斜めの円柱に軸制限をかけてみましょう



1 軸制限するボーンを回転体させたい中心に置く(頂点を選んで 範囲中心にオブジェクトを置く ボーンもしくはウエイトボーン)


2 ウエイトぬりぬり


 軸制限するボーンからみて回転軸の先になる場所にボーン(軸先)を置く(反対の円の中心のボーンを選択、して上と同じ操作)

 軸制限するボーンと軸先ボーンを親子関係で繋ぐ(軸制限するボーンが親、軸先が子)

  軸制限ボーンの先も設定(この表示先のベクトルに軸制限がかかるから)


5 軸制限のチェックを入れて、3この窓の後ろの>ボタンポチー


この操作で斜めの軸でも軸制限が綺麗にかけられます


軸制限は出来ているのですが、このままだと使いにくそうですね

斜めに軸制限をかけた時には併せてローカル軸も設定してあげるとより良いと思います

ちなみにIKLinkボーンでも軸制限はかかる筈なのですが、斜めに軸制限をかけると角度制限との相性が悪いので使い勝手は微妙(個人的意見)

それでも、そういう事が出来ると覚えてくと手札が一枚増えます



ローカル軸

あるボーンを操作する時のX、Z軸を、どういうベクトルにするかを設定出来ます

腕、ひじ、手首、指のボーンとかで良く目にするのではないでしょうか?

初期姿勢で斜めに走っているボーンはローカル軸を設定しておかないと、操作がワールド軸になってしまって使いにくい時があります

腕~指のの流れはそれにあたるので設定してあるモデルが大多数じゃないでしょうか?


X、Zの2軸を設定する必要がありますので、XYZのベクトル値を2セット設定することになります

が、特に電卓を叩いて手計算する必要はありません


 ボーンの親子関係か表示先を設定する(これは軸制限の時に完了しているとして)


 ローカル軸のチェックをONにして、その下の>ボタンをポチ


の操作で基本的な方向を自動で計算して設定してくれます

左右のボーンで操作方向を揃えたい場合や、自動で設定された向きが気に入らない場合は各数値の正負を反転してみて納得行くように修正してください


下手にローカル軸をいじったりした場合モーションデータの整合性が崩れるのでは?と心と心配してしまう人がいるかもしれないので補足しておきます

モーションデータはワールド軸の回転に置き換えられて保存されますから、データ元モデルと読み込むモデルのローカル軸方向が違っていても大きな問題は無いです


モーションデータから大きく崩れてしまう場合は

 ●必須ボーンが入っていない、もしくは名前が違う

 ●モデルサイズやモデルの手足の長さが違う

 ●初期ボーズの腕の角度が大きく違う

 ●足IKの癖が違う

という場合だと思うので、そういった所を見直されると幸せになれると思います



付与

これはあるボーンの回転か移動の変化をあるボーンに付与する(連動して動く)設定です

ボーンリストのは薄紫色になります

付与される側のボーンに付与親とその付与倍率を設定してあげることで有効になります

ボーンリスト順序は付与親が上(ボーン番号小)、付与を受けるボーンが下(ボーン番号大)が正解です

よく見る使い方は、両目と左右の目、足Dとかだと思います

付与率は整のみではなく、小数点やマイナスも指定出来ますが、小数点を含む付与率を設定すると「巻き戻り」というちょっと面倒な事がおこります

構造の追加や仕掛けにわりと頻繁に使ったりもしますので、後でそれぞれ説明をしていくことになると思います

使用例のステージを配布していたりします

ステージとか小物配布するよ「エレキキュレーター」いろいろ回れ

とか

こんな事にも使ったりなのでわりと有用なんじゃないかな?


PMXEにLのコマンドがあるのですがLにチェックを入れるとローカル軸計算での付与になる筈です

が、よほど複雑な構造でない限りは普通意識しなくていいんじゃないかと思います

付与が変な動きをしているな?と感じたときににチェックしてみてもいいんじゃないでしょうか


つま先ボーンが付与親無し付与率0という設定で足首に繋がれている事があるのですが、これMMDの内部処理を利用したバグに近い処理でして

何時だったかMMDのバージョンが上がった際につま先が追随しなくなった事がありました

ちょっとした修正で対処出来る事だったのですが、配布されているモデルがどういう処理をしているかを把握出来ていないと対処出来なかったかもしれませんね

対処方法としては、

足Dを追加して追加された足Dにつま先を接合する方法はメジャーですね

ボーンを追加しなくても対処する方法はあります、変形階層を指定する方法です

どちらの方法が良いかとかはありませんので、モデルに適した手法を用いれば良いと思いますです、ハイ


変形階層、物理後


つま先びょーんの対処方法として、「変形階層を足IKの流れより後にずらす」もしくは「物理後のチェックを入れる」という処置でもいけます(お勧めは物理後チェック:理由はの後で別章になると思います)

この変形階層と物理後チェックの意味とかある程度でも理解して触ってる人って少数派では無いでしょうか


これは、ボーンの計算順序を明示的に指定する項目なんですね

階層0のボーン番号順に処理→階層1のボーン番号順に処理・・・・階層nのボーン番号順に処理→MMD内部特別処理→物理演算を処理→物理演算後階層0の処理→物理演算後階層1の

のような処理順序になっていってるだろうと個人的に推察しています

(私の場合、念のためなので物理演算後ボーンの階層はあえて物理演算前の階層から一段落とした階層から始めるようにしています)


このあたりの処理とかPMXEとMMDとMMMで微妙に処理が違うので「こっちで上手に行ってもあちらで動かない」なんてことは通常運転ですから、トライアンドエラーです

通常のPMXモデルの規模であればボーン順序を正しく整理してしまえば階層指定をしなくても正しく動くようになります

また、ちょっと凝った構造を組み込もうとすると、階層をいくつか指定していくことになっていくので、組み込みしやすくするためにもボーン順序の整理が必要になります


ボーン順の整理とかのお話は長くなりますので、そのあたりの整理方法は改めて設けますね



次は多分「ボーンモーフ」のお話をしてから、「ボーンで何が出来るのか?

というお話で「ボーンの基礎編」が一応の〆になるんじゃないかな?と思います

…ちょーっと意味不明に感じる事を言い出しかねないので、教材モデルを用意したいところです


ボーンモーフの回転とか順番とかについて(また中編??)

ボーンモーフの回転量、移動量はワールド軸、ワールド座標で記述、処理されます ボーンを操作して変形の結果を確認しながらの作業がほとんどで、丁寧にセットアップされているモデルさんだと丁寧にローカル軸の設定等はされています ですから、ワールド軸(座標)、ローカル軸(座標)というのは普段...