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モデルの規模であればボーン順序を正しく整理してしまえば階層指定をしなくても正しく動くようになります

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


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



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

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

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


2024年12月31日火曜日

えふけーあいけー

 えふけーあいけー


FK(えふけー)

Forward Kinematics(フォワードキネマティクス)の省略形、順運動学


A→B→Cという感じで親子関係を結んだボーンの変形をA→B→Cの順序で変形処理していく方法の呼び方です

MMDモデルで見ると青いボーンと矢印で結ばれている普通のボーンの事ですね

PMXEのボーンリストの先頭には回転のみ可能なボーンは水色の、移動可能なボーンは黄緑色の付与ボーンは薄紫の、軸制限ボーンは紫のになります

腕とかひじとかの「ふつーのぼーん

あんまり難しく考える必要は無い感じじゃないかしら?




IK(あいけー)

Inverse Kinematics(インバースキネマティクス)の省略形、逆運動学

目標地点を先に決め、それに向かうようにボーンが変形する変形方法の呼び方です

MMDモデルで見ると「黄色の矢印で繋がったLinkの先端にあるTargetが目標地点であるIKに向かって単位角分動く、それをLoop数分繰り返す」という動きをします

その際に、特定のボーンに角度制限をかけることで変形に制限をかける事が出来ます、角度制限で代表的なのはひざボーンですね

PMXEのボーンリストではTargetはピンクの、Linkは黄色の■、IKはになっています


こっちは設定のお約束とか数値設定とか色々あって、「ちょっと難しそうなぼーん」に見えて敷居が高く感じるかも?


コツがつかめていないと安定したりしなかったり、MMDエンジン化したりと困ることもあるのですが、機能追加のボーン改造とか、ちょっと変わった小物とかに組み込もうとする場合が多いと思うので、ぜひ使いこなしていただきたい所です

IKについてはもう少しパラメータと制限についてお話をしようと思います



Loopと単位角のイメージ

Loopが多 演算に時間がかかる、Linkが長いと暴れやすい、Linkのボーン毎に滑らかに繋がりやすい


Loopが少 大雑把に動く、あまりにLoop数が少ないとLinkが長い場合Targetに追随仕切れない事もある


単位角大 一回に回転出来る幅が大きいので少な目のLOOP数でもTargetに合致しやすい、長いLinkだと先端が強く曲がりやすい

結果的に演算が早めに収束していくので変形を早く終わらせたい場合には良い結果が出やすいかも(例:足首)?


単位角小 細かく調整されるので、多めのLoop数に設定すればより厳密な結果が出やすい、長いLinkの場合は全体に滑らかな曲線になりやすい


こんな感じで結構違いが出るものでしょう

実際に触ってみると解りやすいと思うので教材モデルを用意してみました

ものすごく拘るのであれば、組み込むボーンの変形のイメージや実際の変形の様子を見ながらLoop数や単位角をいじって調整していくのですが、適当でも動いてくれますからそんなに心配しないでオッケーです。ハイ


このIKの回転は、TargetとIKが完全に合致すると演算が止まります

無駄に動かしたくない場合は完全に同一点にしてしまう、とか、常に動かしたい場合には極微小にずらすというテクニックもあったり無かったり

また、制限されない場合はXYZの3軸で回転しますから、意図しない回転やロックをする場合がありますが、普通はあんまり気にしないで大丈夫


意図的にの演算順序をずらして、物理エンジンの演算エラー回転をLinkに乗せ続けるテクニックがMMDエンジンです

ちなみに以前にも公言していますが私はMMDエンジンは嫌いです、そのうちその理由や、代替え構造サンプル動画とかも含めてお話することもあるんじゃないかしら?



角度制限って?


Linkに設定されたボーン個別にXYZ軸で回転できる角度の範囲をMMDのワールド軸で指定出来ます

範囲なので上限と下限(-180~180の範囲が一般的じゃないかな?)を入力することになります

上限下限に同一の角度を指定した場合はその角度で固定されることになりますね


Linkボーン角度制限の代表としては”ひざボーン”でしょう、PMX人型モデルには入っている筈ですよね

ひざボーンの角度制限の設定は「X軸には-180~-0.5の範囲で曲がっていいよ、Y軸とZ軸には曲がっちゃダメ」という設定ですね



これでタコ踊りをしなくて良くなる訳です



PMDモデルにはこの設定が必要ありません、というかPMDモデルには角度制限という項目がありません

”ひざ”というLinkボーンにMMDが特別な処理をして自動で制限がかかる仕様になっています


後述する予定の「足IKの内股、ガニ股の調整方法」でまたお話することになると思いますが、角度制限について覚えておいてほしい事は、「角度制限はワールド軸でかかる」という事です


簡単にではありますが、えふけーあいけーのお話でした


2024年12月29日日曜日

ボーンの必須パラメーター

PMXモデルでの ボーンの最小必須パラメーターのお話になります

ボーンは点だと先に述べましたが、1個のボーンではモデルは成り立ちません

XYZの座標の他に、ボーン番号ボーン名のパラメータが必要になります

この3種のパラメーターが最小必須のパラメーターです







XYZの座標

文字通り、MMD空間上の絶対座標です



ボーン番号

ボーン番号順でボーンリストに並んでいます

このボーン番号で親ボーンを指定して、ボーンとボーンの親子関係を結んでいきます

また、基本的にボーン番号順に変形処理をしていきます

ボーンリストの上から順に処理していくのが基本という事です

ボーン順序がちゃんとしていないと不必要なトラブルを抱える事になりがちですから、メタセコからポン出ししたまんまのモデルとかは、ボーン順序を見直したり整理する事をお勧めします

意図的に順序を逆に設定する事は可能です

モデルのボーン順序整理も含めちょっと突っ込んだお話になりますので後で詳しく説明させていただきます

親子関係が逆転している場合はMMDエンジン化したり、モデルがグンニョリしたりします


◆FKであれば、ボーン番号の小さい方が親、大きい方が子

◆付与親がボーン番号が小、付与されるボーンが大

◆外部親でし直して親を切り替えたりするモデルの場合(刀とか)親がボーン番号小、くっつける物が大


このような感じで並べていくのが基本になります


ホーンの表示先もこのボーン番号で指定する事が出来ます

理解しやすく使い良い感じに設定してあげましょう

後から表示先を変更しても大事にはなりませんから適当に繋いで後から調整でOK



ボーン名

この名前は、モーションやポーズのデータの保存や受け渡しに使われるものです

”座標、親子関係、ボーン番号等”関係なく、単純にこのボーン名で回転、移動のデータをやり取りすることになります

モーションデータ配布出来るのは、ボーン名が完全に合致していればモーションデータのやり取りが出来るからなんですね


「モーションデター読み込ませたけどなんか違うなぁ?」と思ったらモデルのボーン名を見直すといいかもしれません

よくあるのは全角半角、とかカタカナ、ひらがな、漢字の違いとかですね

必須ボーンが足りない場合もありますから、配布モーションのリードミーはよく読みましょうね

(モーション配布ありがたや、ありがたや)


2024年12月22日日曜日

”ぼーん”ってなんなのさ?

 基礎編 前置き

ある程度MMDを触って動画を作ったり、モデル作成や改造をしているユーザーにとっては今更感なお話なのではありますが、基礎は大事なので再確認がてら駄文をあげてみます

MMDに読み込めるモデルにはX、PMD、PMXとありますが、ボーンのお話なのでPMD、PMXのお話になります

MMDはとてもシンプルな”ボーンアニメーション制作アプリケーション”です

多機能なソフトでは色々な便利機能が山盛りあったりするのですがMMDではデフォルトでそういった機能はありません

MMMとかでは自動腕IKぽい事が出来たりしますが…MMDでは無いですね

単純に、ポリゴン面を作るいくつかの頂点に”ボーン”という”制御点”でどのくらいの割合で動くのかを設定して(ウエイト設定して)ある量分だけ移動、回転させることでアニメーションを作っていくアプリケーションです

デフォルトのモデルに機能を追加したい時は、大抵の場合PMXEのプラグインを使われるのではないでしょうか?便利ですし、私も使うときは使います

では、プラグインで追加される便利機能(追加ボーンとその設定)はどこから来たのでしょうか

勝手に沸いてきたりはしませんよね、先達のMMDERの方々が”一個一個その手で設定して組み上げた機構”があって初めてプラグインが作れるわけです

簡単な追加で出来てしまう改造もあれば、大規模な物もありますが”一番最初は誰かが思いついて手設定で組み込んで試した”という事ですね

イコールプラグインで出来る事は手設定でも出来るという事です

こういう感じに出来ると便利だよなぁ? とか ここはこんな感じに動くと自然だよなぁ?

って時に自分でオリジナルで作って組み込めると便利ですよね?

また、プラグインで一律の設定値で追加された場合は、そのモデルに対してベストな設定値でしょうか?

モデルデフォルトの設定値は使いやすい設定になっているでしょうか?

そういう時に微調整が出来るとよりいい感じの作品が出来るかもしれません

最終的にそういった事まで含め踏み込んで行きたいと思っています。が、難しい事をいきなり理解しようとしても混乱してしまうだけです

基礎の基礎からのんびり進めていきましょう


基礎編 その1

”ボーン”ってさ?

PMXモデルでのボーンというは”制御点”です

”点”ですから”長さ”とか”向き”の要素はボーン自体にはありません

長さや方向があるように勘違いしてしまう場合が結構ありますが、MMD空間上の”点”だと理解しておかないと混乱の原因になります

ボーンとボーンの距離とその方向

ボーンと頂点の距離とその方向

これらを”長さ”と”向き”と勘違いしてしまう事が多いですが、ボーン1個だけでは成立しませんね

PMXに”表示先”という項目がありますが、あれは人間が親子関係や回転の変化を理解しやすいように表記してあるだけです

相対表示の場合も結局は解りやすくするための表示でしかありません

表示先がグチャグチャでも全く表示が無くてもMMDの内部処理としては影響はありません

試しにPMXモデルの”表示先”を消してしまってからモーションを入れて再生しても普通に動いてしまいます


”ボーンはMMD空間上の点”


MMDモデルを初めて観た人はボーンの矢印で形作られた人型を見て”ボーンに長さがある”と勘違いしちゃうのではないかな?と思います

実は私も当初勘違いしていて混乱した覚えがあります

多分、ボーンいじりをしようとした場合に一番最初に躓く所ではないでしょうか?


MMD空間上のボーンAと子ボーンを結んだ線分をボーン”Aのベクトル長”だとした場合

親子が一対一で完結してしまえるならそれでも良いのかもしれませんが、子ボーンは手と指ボーンのように複数設定が出来ますよね

その場合一個のボーンが複数のベクトル長を持つという、とても不自然な事になってしまいます

また長さが有ると仮定するならば、ウエイト等、ボーンの親子関係が影響しうる範囲が限定されるべきですが、実際にはMMDが演算可能範囲全て全方向に影響が及びます

ボーンを長さがある線分として扱うのに無理があるという事が解ると思います


新しく構造を作ったり、既存の構造を理解しようとすると幾何学的な理解が必要になってくる事があるのですが

ボーンを点、ボーンとボーンの距離、ボーンと頂点の距離

矢印は”人間が理解しやすくする為の補助的表示

と飲み込んでしまえれば、かなりとっつきやすくなると思います

基礎の基礎として、これを理解しておきましょう


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

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