2025年4月28日月曜日

IKとボーンモーフを使ったアイディアの一個

 IKとボーンモーフを使った仕掛けをもう一個提示してみます

親の切り替えは座標への拘束が1点、一点という感じでした


では、2点を固定した場合はどうなるかというと

軸合わせをモーフ化出来るようになるんですね


3点で作れば座標とXYZ軸の強制まで可能ではありますが、MMDエンジン化回避の呪文も組み込まなくてはいけなくなるのでかなり複雑化します

どうしても必要ならば対応は可能ですが、コストに合う効果があるかが疑問ですね(やれないことは無いけどねー、というお話です)

というわけで、まだ理解がしやすいであろう軸合わせのモーフ化のお話になります


組み合わせとして

IKのアームが2セットと2セットのアームを結ぶIK

IKを纏めて動かす親

アームを結ぶIKを親にして移動させられる実ウエイトが乗ったボーン


このアームを短くするようにボーンモーフを組み合わせる事で軸を合わせる事ができます



挙動は動画のような感じになります


 筒先に近い方が先に位置が合ったほうがより現実的ですから、筒先に位置が合ってから全体の軸を合わせて挿入のような挙動が出来るようにモーフはあえて2種に分けてあります

一応サンプルモデルも上げておきますので触ってみてください

筒挿入構造サンプル

なんの仕掛けも無しにこういう挙動のモーションを作るのは結構面倒なんですよね


「直剣を鞘に入れる、出す」とか「迫撃砲の玉を入れる」とか「バラバラの部品をくみ上げる」とか

そういう事に使えるかも?

日本刀なんかでやる場合は軸は合わせられますが、反りに合わせて楕円運動をさせる感じの仕掛けが必要になるでしょう

材質トリックを組み合わせてもいいかもしれません

この、IKのアームとボーンモーフを組み合わせた手法は他にも応用出来る

と思いますので、手法の一手として覚えておくと良いと思います

足IKの有効無効のモーフ化も可能ですね、変形ロボとかには組み込んでもいいかもしれませんね

IKのONOFFをMMD上で小まめにやれば良いのではありますし、上手にモーションを作れればそれだけでOKってお話ではあるんですけどね


こんな仕掛けも作れます

という紹介でした

2025年4月19日土曜日

今更説明してもかな?(疑似的な外部親切り替えのモーフ化)

 ボーンモーフでボーンの移動が出来る訳ですが、IKLINK■黄色のボーンやTERGET■ピンクのボーンにも適用出来たりします

移動モーフとしては、ボーンの初期位置からみてグローバル方向と距離になる事が理解出来ていればボーンモーフでLINKボーン同士の距離を0にする事は難しくないでしょう

その時はどんな感じになるかと言えば、TREGETボーンとLINKの親ボーンの座標が一致する事になります

この挙動を利用すると疑似的な外部親切り替えのモーフ化手切りIKの親の切り替えが可能になったりします

動画でがっつり使われているのはこの動画ですね

使われている技術的な解説はこちらでお話されています

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

の5分25秒あたり

実は、春原さんに相談いただいたときに”球形無印なら外部親の切り替えをモーフ化することは出来るよ”との条件をお話してOKもらえたので仕掛けを組んでお渡ししました

何故球形無印かというと、この時にストックであった構造は手切りIKの親の切り替えをモーフにしてみた構造配布するよにだったので、XYZの座標は一致させられるけれど、角度の制御は考えていなかったので”球形無印”ならという条件だったんです

見ればわかるのですが、ボールの数字がクルクル回っているでしょう?

結構急ぎのようでしたし、球形のボールでしたので助かりました

では、このクルクル回るのをなんとか出来ないか、どいう話になるのですが、結論としては対処出来ました思いつくまで時間が必要でしたけど(==;

これ、時間置いてどーうするといいかをグルグル考えて作ってみて、あかんかったら修正して、ってお話になるので急ぎだと時間が読めないのですよ(閃くまでのお時間が)

IKを付与で動かして、物が置かれるボーンでキャンセルをかける格好です、2段にすると先がMMDエンジン化しましたので、先にお話しした付与の橋渡しをしてMMDエンジン化を回避しています

サンプルを用意してみたので興味があれば触ってみてみださい

物の角度が変わらないので一応安定してはいるのかな?と

芝居するとなるとボーンを足して左右の手頸の回転も付与すると使いやすいかもしてませんね

理屈でいえば2個アームがボーンモーフで長さが0になるとアームの基部に物がくっつくという理屈です

ですから、モーフの適用順序は先端側から適用させる必要があります

また、やる気さえあれば段数を増やす事も可能ではあります

使うのであればモデルに組み込んで使う事になると思うので状況に合わせてカスタムしてあげてください

ネルさんが玉をいじったり掴んだりするやつはMMM専用でしょうからあの動画まんまが出来るとは思いませんが、誰かが対応してくれるといいよね(投げっぱなし)

それでも、疑似的に「IKの親の切り替え」や「外部親の切り替え」がモーフ化できますよというお話ではありますから応用は効くんじゃないかな?


ただいま今後どんなお話をしていこうか悩む所であります
更新間隔を開けて動画やモデル作成を進めていこうかとも思っていたり



2025年4月12日土曜日

付与率は小数点が面白い・・・のです

 デフォルトのスケルトンに関係しそうな情報は大体抑えたのかな?

そうすると、わりと使うテクニックについて、ちょっとずつ突っ込んだお話になっていく事になると思うわけです

で、今回は付与のお話です

付与親のボーンの回転、移動が

付与率倍で

付与を受けるボーンが動く

のが付与なわけですが、ちょっと気を付けないといけない事があります

付与率が整数倍なら気にすることはありません

付与倍率が1なら付与親と付与ボーンの動きはほぼ同一ですし、2倍、3倍ならその倍率に従ってグルグル回ります

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

ここで配布しているステージとか、ターンアラウンドカメラボーンとかはMMDエンジンの代替え構造として大倍率付与を利用しています

このあたりは、先にここで説明していたりしますので興味があればどうぞ


付与率に少数が含まれる場合

これが一癖あるわけです、付与親の回転が180°を超えると、付与を受けるボーンが巻き戻ってしまいます

これはMMDモデルが3DでXYZなので行列式で計算を簡単にしたいのでフーリエ変換とかしているので180度以上の角度でちょっち癖が出るのが原因です

付与親が0~180度までの回転では付与ボーンは素直に付与倍率に従って回転します

付与親が180度を超えるとマイナス方向にジャンプします

付与親が更に回って0になると付与ボーンも0になって帳尻を合わせる動きになります


歯車を嚙合わせるように付与をする場合

1回転する付与親の親歯車と付与率10倍で回る子歯車←これは出来る

10回転する付与親の親歯車とその0.1倍で回る歯車←これは工夫が必要になる

こんな事になるわけです


この巻き戻りは厄介な動きに思えるのでしょうが、実は結構便利に使われていたりします


■捩じりボーン

これは、腕やひじを捩じる時に雑巾絞りで千切れそうになる事を、巻き戻りを利用して回避するの仕掛けになります

普通にモデルさんに組み込まれていますよ


■繰り返し構造

ある範囲でループする素材をシンクロさせて移動し続けるようにみせる仕掛け

尺取虫構造と巻き戻りを組み合わせてあげると

ステージとか小物配布するよ「エレキキュレーター」いろいろ回れこの動画の1分35秒あたりからのチューブ状背景とか、チェーンの回転とか、無限テープとかの表現が出来ます




■クロック構造

ある一定のタイミングで止まる回るを繰り返す構造

これも結構な種類があれいますね、良くあるのは時計の秒針とかです

ワープするタイプの構造はわりと簡単にできますのでレッツチャレンジです

少し凝った事をするとこんな事も出来ますね

これはそのうち配布するつもりはあるので、気長におまちください

動画を作らないとなぁ(==;

2025年4月6日日曜日

2重関節の足IK (接地させよーとするとめんどいのよ)

 MMDモデルでの2重関節はいくつかのモデルでは早い時期に採用されていました

■1軸で動くのがデフォルトである事

■終端の位置が元のモーションとズレても問題が出ない事

この2点が条件になりますが、元のボーンの回転を2個のボーンに分けて合計1になるように付与率を与えれば良いのでわりと簡単なんです

PMDモデルでも採用されているモデルがあったはずです


私の場合だと
【第11回MMD杯本選】Mechanical Dress【MMDモデル配布】
このモデルの指から採用してたんじゃないかな?

指2や3のボーンはZ軸以外まず動かさない

指先の位置はズレますが形は合う

ので先に上げた条件に合いますからわりと問題が起きにくいです


では足IKのひざは1軸(x方向のみの回転)ですね

ということは、ひざもこの簡易な2重関節構造でやれなくは無い訳です

実際採用されているモデルもあったと記憶しています


ではどんな感じになるかなのですが、答えは簡単ですね

足IKの位置と足先の位置が合わなくなる訳ですから

接地が決まらなくなります


こんな感じ
ピンクの方が簡易版です

ただ構造は単純になるので、接地感に拘りが無いのであれば採用しても悪くは無いかも

最近のメカって大抵宙に浮いてますから、歩かせる必要が無ければ採用してもいいかもです


歩かせようとすると、左で見えるズレをどう修正するかで苦労しそうです



触ってもらった方が解りやすいと思うのでファイルも上げておきます

足IKひさの2重関節サンプル2種

ダンスさせる場合はこんな感じになります、滑ったり潜ったりしますから接地感が気になるならお勧めはしません




一応自分のORZシリーズとかの構造をお勧めはしてみる宣伝です

【第9回MMD杯本選】ロボらしく動け【モデル配布】

【第10回MMD杯本選】CROSSING POINT【MMDモデル配布】

【MikuMikuDance】 LatさんとロボがHYBRIDを踊るよ 【MMDモデル配布】

あ、ちなみにミクモデルさんにも採用はされてますよ

Gourikimal式初音ミクG型 Ver1.70

良いモデルさんなので宜しくなのであります


では、この簡易構造を「1軸で動くのがデフォルト無い」場所に使った場合はどうなるかなのですが

単純に対応させるとクランク状に曲がる可能性があります


大きく曲げる可能性が低い場所であればそんなに気にならないかもしれません

ひじや、棒状の部位に使うと目立つ事になると思います

1軸以外の回転を他所に持っていく等の工夫が必要になるでしょう



一応は上でリンクしてあるORZシリーズのひじとかは参考になるかと思います

ORZ-79DやEZには「初期モーフ」を入れるようにと説明があります

これは、配布モーションに対応しつつ、IKの角度制限を利用した変形補正を行っているからです

ひじ周りは通常のモデルはYに回転させるのがデフォルトだと思いますが、IKをY軸のみの回転に制限しようとするとロックしやすくなって破綻してしまうのです

初期姿勢では回転を許す軸をグローバル軸Z、Xになるような姿勢にしておいて、「初期モーフ(ボーンモーフ)」で一般的な形に変形させています

モーションを受け入れるボーン自体は通常のMMDモデル同様にアロースタンスの腕角度なので、配布モーションが受け入れられる仕組みです

IKを利用して服を被せているイメージが理解しやすいでしょうか

一応この考え方は普通のヒューマノイドモデルの衣装にも応用できます

【第18回MMD杯本選】「天月りよん」さんに舞っていただいた

このモデルさんの腕回り応用されています、穴あきの袖でどうやって捩じりに対応しようか悩んだ結果です

今回は普通のモデルではあまり必要ないようなお話ではありますが、ひざ周りや変形補償に興味がある方には参考になるかもね、です





2025年3月28日金曜日

足IKの話(後編) ガニ股内股のクセは調整出来るのよ

 前回のお話では「IKの角度制限はグローバル軸でかかります」というお話までしました

そして、一般的なひざボーンの角度制限のパラメーターはX軸(-0.1~-180)、Y軸Z軸(0,0)のような感じになっていると思います

これどういうことかと言えば


足IKの膝の角度制限は足~足首のローカルの位置関係や軸方向は関係無くグローバル軸に水平に折り目が付くという事です

図にすると、足~足首がX座標が同一でない限りは膝の曲がる軸には斜めに制限がかかることになるのが解ると思います

足~足首(黄色のライン)が斜めになっている場合は、膝の角度制限は黄色ラインに対して斜めに角度制限がかかるという事です

(あにまさ式ミクさんの足はとても素直ですね)

X軸に斜めに折り目が付いている足IKを縮めて曲げようとするとY軸に回転しようとするのが想像出来ると思います

長方形の紙に斜めに降り癖を付けて曲げ伸ばしすると捻じれ方向に回ろうとするのと同じ感じかな?


実際そんな感じで、ひざボーンの角度制限の歪みで足IKの動きに癖が付きます

これは別に悪い事では無く

モデルのイメージに合わせて調整できる

という風に捉えれば良いと思います

女の子モデルなら内股気味に、オッサンならガニ又癖をつけるとか出来るわけです

では「どうやって調整するのか」なのですが、極簡単な方法で調整が可能なんですね

初期姿勢の形状をちょっといじってあげれば良いのです


1 TransformViewを開いて、足IKをOFFにする




2 足ボーンをZ軸で回転させる

3 現在の形状で保存(別名保存推奨)

これでOKです

初期状態では足IKとつま先IKがTERGETである足首、つま先から離れる事になりますが問題ありません

MMDに読み込めばひざの角度制限がグローバルにかかった状態で足IKに向かって足首、つま先が動き通常の位置関係に収まります

簡単でしょう?


初期の足、足首ボーンの角度と癖の関係は垂直であれば特に癖は出ません



足首が内側に入ると、ひざが曲がるときに足ボーンがY軸外向きに回りやすくなる

結果、ガニ又癖になります







足首が外側に広がると、ひざが曲がるときに足ボーンがY軸家向きに回りやすくなる

結果、内股癖になります

こんな感じの差が出ます


ここで足IKのループも影響してきて、ループ数が少ないと癖が強く出て、多いと癖が弱まります

カカトの埋まり方も見て、足IK、つま先IKのループ数も調整していきましょう


あ、そうそう

足首がクルリンする理由に足IKのY軸の回転が足首のZ方向の回転に影響が出るから

というのも意識はしておきましょう

内股癖、ガニ股癖は足首のZ回転に影響が出るのです

IKってグローバル軸ZXYの順に回転のし易さがありますので、足首がZ方向に回りやすいのもあります

配布モーションを読み込ませた時に足首が暴れると思う時は元モーションのモデルさんと使用モデルさんの足周りのボーンの関係を合わせてみてもいいかもしれません

少しは落ち着くかも?

それでも暴れるのなら足IKをY軸に回してその都度修正するほかありません、足首のZ軸方向の回転は結構気になると思います

究極の接地感を求めるなら「足切りIKにチャレンジ」となるでしょうね


おまけ
足IKのひざの位置は足~足首のラインから若干前側にないとひざがロックして足首が埋まってからポッキュンって感じで跳ね上がって曲がるような感じになるよ
ってお話をしました
この動画の黄色の側がそういう感じのセッティングになっています
けれど、赤の方はちゃんと動いていますよね?
足、足首ボーンとひざボーンの位置がこんな感じに極端でもちゃんと動くようには出来ます
当然普通には出来ません


足首を3軸で曲げたいのでちょっと変わった事をしていますが、
足IK自体はセオリーから外れていません
足ボーン辺りにウエイトが乗っていない(見えなくなっている)のです
普通に曲がる足IK、足Dの流れにデザイン上必要な位置にモモとひざ関節をIKでくっつけている訳です

2重関節で出てくる筈の歪みを吸収してる恰好ですね


こんな感じで動きますよ?という事で宣伝です
現物もダウンロードできますよ


もう片一方も結局は似た構造で本来出る歪みはモモの長さに出ます
モモが若干伸び縮しているんです

普通に人型モデルであればここまで極端な位置関係にする必要は無いとは思います

どーしてもこんな感じで曲げた理由が有る時には採用すればいいんじゃないかな?

メカ物とかだと「ココで曲がるんだぜぃ」ってデザインになっていたりもしますので覚えておいても良いかもね
です


2025年3月23日日曜日

今更ながら足IKのお話(前編?

 今更ながら足IKのお話をしようかと思います

多くの方が足IK周りの情報を上げておりますので本当に今更なのではあります

それでもデフォルトの重要な構造ではありますので触れないわけにはいきません


「足IKが倒せない」はよく聞くお話ではありました

今時はあんまり聞きませんが、今更聞けない××みたいな感じでありますね


足IKの基本形は

下半身→足→ひざ→足首→つま先

の並びと

足IK→つま先IK(の親子、足IKの親はセンター)

の組み合わせだと思います


これ足首のボーンが黄色表示なので混乱しやすいのですが


足→ひざ→足首(足首がTERGETの足IKのIK列)

足首→つま先(足首がLINK、つま先がTERGETのつま先IKのIK列)

この2セットのIK列の複合して足首のボーンが黄色表示になっているんですね

足IKとつま先IKが親子関係で結ばれているので足IKをいじって足首の操作が出来る構造になります


このTERGETがLINKになる構造は他に応用が出来るので、覚えておいても良いテクニックです


足IK周りのパラメーターの調整の基本としては単位角とLOOP数を弄る事になります

単位角はあまりいじる必要は無くて(弄れば結果が変わりはします)LOOP数を弄った方が変化が大きいと感じています

 

 足IKのLOOPが多め(30~60くらい?)

 つま先IKのLOOPは少なく(3~10くらい)かな?と思います

ある理由で足IKには内股癖やガニ股癖(こっちは少な目)が付くことがあり、その時にはLOOPの影響は結構大きく出ます

足IKのLOOP数が多くなると膝の向きが素直になる感じ?かなとは思います

(右足LOOP40 左足LOOP60)



センターをY軸に下げると足が曲がる訳ですが、基本的にカカトが少し埋まります

この埋まり方が大きすぎると不自然になるので結構悩む所です

つま先IKのLOOP数が多すぎるとカカトが埋まりやすくなる傾向があります

これ、足IK周りの構造(繋がり)が、つま先IKが決まってから足IKの位置が決まるような動きになるからで

つま先IKのLOOP数が小さければ変形結果が素早く決まりますから、足IKがより短時間で決まる=カカトの埋まりが小さくなる

という感じです



ひざボーンの位置

カカトの埋まりが起こる場合の原因はもう一つあって

足、ひざ、足首ボーンのZ軸の位置関係も大きく関わってきます


足と足首ボーンを結ぶ直線から「ひざボーンはほんの少しだけ前に位置する」必要があります

←左側がモデル前側

隣に走るボーンの表示線は足ボーンから足首ボーンのライン


ひざボーンが若干前側にあるのが解ります

ひざボーンが若干でも後ろ側に位置していると足IKが曲がろうとする時に角度制限が影響してIKがロックしてしまう瞬間があるからです

IKはまず楽な方向に曲がろうとしますが、角度制限にひっかかるとロックしてしまいます

「こっちに曲がると楽に曲がるからね」と誘導してあげる必要があるわけです

「足が曲がらないでカカトが埋まって、思い出したように足がカックンと曲がる」という症状が出ている場合はチェックしてみてください

実は足ボーンやひざボーンの位置がとんでもない位置にあっても普通に曲がる構造は組めます

普通はあんまり必要無いとは思うのですが、メカ物をやっていると欲しくなるかもしれませんね

これはまた後ほど詳しく説明する事になると思います



足切りIK

このカカトの埋まりが気になる事を嫌って作られた「足切りIK」という構造があります

改造方法はわりと簡単です

足首複製

元々ある足首ボーンを足IKにリネーム、既存の足IKからパラメーターを移植

新しい足IKの親を設定(全親、センター、足IK親等)

足IK、つま先IKは削除

元々しっかりした接地感を求めた構造ですからお芝居向けではあります






一応モーションの流し込みにも対応はしていますが

 足ボーンのY回転の影響は足首に伝わらない

 足IKを移動させ過ぎると脛辺りがビヨーンと伸びる

の2点に注意です



ひざの角度制限

ひざの角度制限についても触れておきます

まず、PMDモデルにはひざボーンの角度制限は必要ありません

というか、PMDのIKには角度制限等の設定をする方法がありませんが、それでもひざボーンについては曲がる方向に制限をかける必要はあります

PMDモデルのひざの角度制限をどうやって制限をかけているかというとMMD側(アプリケーション側)で自動で行う事になっています

PMDモデルの「ひざボーン」は特別な扱いになっているのです、また足IK周りについても若干の修正が加わっていると思われます


IKについては、PMXのIKから非常に多くの設定項目が追加拡張され、利便性が大幅に上がっています

そのせいか、PMXモデルはひざボーンに角度制限をかける必要があります

ひざボーンに角度制限をしないと曲がってはダメな方向にぐんにゃりする事になりますので「おかしな挙動してるぞ」という時には見直ししてみてください

通常はX軸方向(-0.1~-180)Y軸(0~0)Z軸方向(0~0)みたいな感じの設定になっていると思います




0~0ということは「YとZには動いちゃいかんよ」

X軸方向にだけ-0.1~-180の範囲だけ動いていいよ

という意味になります


ではこのIKの角度制限というのは「何を基準にしているのか」というお話になります

これはグローバル空間(軸)を基準にして設定されているんですね

厳密に言うと「モデルの初期姿勢のボーンにグローバル軸基準で角度制限がかかる」という事です


これ意識して利用すれは、足IKの挙動の調整(クセの修正、強要)に使えますので、次回はそのお話に繋げて行こうかと思います


2025年3月16日日曜日

ちょっと拘ってみましょう(拡張視線IKとかのお話)

 ちょっと拘ったボーンの仕掛けを作ってみましょう

例として視線IKを上げてみます注視線IKっていう場合もあるのかしらん?


今回ちょっと

今回ちょっとアンニャロメが悪さするんですが、その回避方法として「謎構造」が出てきます(==;

IK細工をしていく時にわりと重要な謎呪文にばりますので覚えておいて損は無いかも?


前置きはここまでで、一番単純な視線IKといえば


頭を親としたIKを1セット

IKの回転を両目ボーンに付与



の恰好でIKを移動させると両目が動く仕掛けになりますね

IKをテーブルに置いたコップとかにくっ付けてあげれば、体が揺れても目がコップを追う様になります

非常にシンプルで練習にもちょうど良いかもしれません


ここからちょっと拘って発展させたものなのが、DONDON式ミクさんの視線IKになります

【MMD】腕フルIK、注視点ボーンテスト【モデルテスト】

現在配布終了なのが残念ですが、DONDON式ミクさんはPMXモデル黎明期のモデルさんでありながら積極席にIKを利用した機能を組み込んでいる秀逸なモデルさんだと思います

DONDON式ミクさんの視線IKの拘りポイントは一個のIKを頭と両目に一定の比率で振り分けて付与して頭と目が動くという所になると思います

付与率の基本は合計で1になるようにするのでしょうが、モデルさんによっては比率を調整する必要はあるでしょうね


ここでとてもとても結構重要なポイントが一個あります


IKの親は頭な訳で、その頭にIKの回転を付与させる形なので、回帰的付与になります

MMDエンジンのになる下地が完成なのですよ(==;

ヤバーイ感じになるので対処が必要です

頭ボーンを複製して頭+ボーンに視線IKを組み込んで、頭ボーンを親にした両目に付与をかければOK

←こんな感じ


だと思うでしょ?


実はこれだとダメなんですネ


髪が物理演算オンリーであれば実はそのままで動くのではありますが、髪IKの入っているモデルだと髪IKがMMDエンジンになっちゃうのです

物理演算OFFにすると髪IKがMMDエンジンしてちょっとしたホラーな映像が見られます

物理演算オンリーだとしても何かしらの爆弾を抱える事になりますので対処したい訳です

本当に邪魔者なんですよMMDエンジンはぁあぁ(==)

一見計算順序等に問題が無いのに大暴れしてくれます

対処方法が見つけられなければここでゲームセット、廃棄処分という事になります

ここで謎呪文構造が登場します

私の記憶している限りこの呪文もDONDONさんが発表されていました



親は首でIKの回転を付与


親は首で

付与を橋渡しするような恰好で繋ぎます


こんな感じで付与を橋渡しすることでサブルーチン的な処理をしているのではなかろーか?
と私的推察しています

付与親とは直接の親子関係を切ってレーンチェンジするようなイメージかな?


で改めて頭の回転を付与して、頭にモーションが入った場合に対応してあげます



これでMMDエンジンが暴れなくなります

当時この記述を見つけたときは小躍りしました

MMDエンジンが謎発生する時の対処方法の手法の一つだと覚えてくと良いと思います


頭に髪IKだけでなく、ちょっとした仕掛けをしようとしたときにも使えますからね


で、私が配布した拡張注視線IKのお話になります

頭遅延連動視線IKとか付与率可変型視線IKって名前にしておりました

注視点IK作成用プラグイン配布【PMXEditorプラグイン】でかなり詳しく春原さんが説明してくださっています

基本的な構造はDONDON式ミクさんのものと同一です


IKのLINKが2節になっている所が”ちょっと拘ったポイント”という事になります

IKというのは、LINKの先がIKボーンに向かって動くわけですが、LINKが2個あればその角度を分け合います

ここで、IKの数値設定のクセというか挙動を利用します


先が曲がって用が足りるなら根っこ側はサボろうとする

LOOPが小さいと先調子で曲がる、LOOPが大きいと胴調子で曲がる

というお話はしたと思います

根本側を頭、先側を両目に付与することで、角度を分け合う恰好で視線がIKに向かいます

また目が先に動く感じになります

IKの特徴を利用して頭と両目の付与割合を変化させて、頭と目の付与率の割合がIKの距離で可変出来るんですね

実際の人間の視線の移動は移動距離やその速度、興味の度合いや好意、忌避の感情の動きで頭と目の動きの割合が変化します

そういった細かい所を芝居に組み込みやすくできないかな?というのが当初の発想で実現化したい所でした

プラグインの動画ではあまり触れられていない事で私的には最大の特性「拘りポイント」だと思う所です

IKを極端に近づけると顔を背けつつ視線が行くような感じにもなります

モデルさんによっては眼の動きに制限をかけないと厳しいモデルさんもあるとは思います

そういうとこには角度制限も有効な手段だと思いますが、IKを置く距離とLOOPを調整してみるのも手です


私の配布してるサンプルに組み込んであるので、分岐する髪IKと合わせて現物を見てやってください

合言葉はむちり 膝枕してもらえるといいなぁ(==)

紫苑式ミクさんに色々組み込んでおります

頭遅延連動視線IKとしています、名前が揺れて申し訳ないのではありますが、何分埋もれて長いのに定評がある私の配布物ですのでご勘弁いただきたい所です

「こういう感じに動くといいなぁ」を拘ってみましょう

2025年3月2日日曜日

秘密結社は解散したのだろうか?(タダーンのお話)

前回モデルのボーン整理をして見通しが良くなったので、簡単な作業で出来るボーン改造をしてっみましょう

ぶっちゃけPMXEのプラグインでポチットナで終わるような事ではあるのです

が、基礎とか大事なので予習復習も兼ねて手作業で入れる練習をしてみましょう


ボーン改造の基本的な手法には大きく3通りあると思います


1,ボーンのウエイトはそのままで、ウエイトの乗ったボーンの前後にボーンを追加する

  全ての親等の各種多段化、シンプルな視線IK等


2,ウエイトの乗ったボーンをリネームして、リネーム前のボーンを追加する

  足D、腕IK等


3、ウエイトの変更を伴うボーンの追加

  上半身2、つま先EX等


3の上半身2やつま先EXはウエイトを弄る必要があるのでポリ割によってはちょっと面倒です

一応はプラグインで追加した場合でもウエイト設定もザックリ入してくれるのですが、周辺の変形もしっかり確認して必要ならウエイトの調整が必要になると思います

最近のモデルさんはデフォルトで入れてくださっている事も多いのでそういうモデルさんを使えば良いというお話があったりなかったり

(身も蓋もありません、が、元々プラグイン使えばええじゃんな事をしている訳で喀血)


今回は一番シンプルかつ、今でも結構有用だろうと思われる”多段化”をやってみようと思います

配布モーションで左右の手のひらや指先をくっつけるモーションがありますよね

モーションの作成時のモデルさんでないとボーンの長さが違うわけで、ズレたり、隙間が空いたり、重なったりという事がおきます

そういうのを修正しようとする時に、肩、腕、ひじのような”実際にモーションデータの回転”が入っているボーンをいじってしまうと元のデータに戻せなくなってしまいます

そんな時に多段化したボーンに修正角を入れてあげれば、元データはそのままなので修正作業が格段に楽になります


1、多段化したいボーンを選んで

今回は”右腕”

2,追加 複製を追加

これで、同じパラメーターのボーンが追加されます


3,どのボーンが追加したボーンかが解るように直ぐリネーム

私が良くやるのは”右腕+”とか”右腕++”とか


4,追加した”右腕+”ボーン番号を”右腕”よりも小さくする

要は”↑”ボタンを押して上に上げる


5,右腕ボーンの親を右腕+に変更

6,モーションの修正作業が作業し易いように表示枠に登録する

7,”解りやすいように名前を変えて保存”

これ大事ですよー、改造ミスしたときに巻き戻れるようにしておきましょう


という流で繰り返して、必要なボーンを必要なだけ多段化すれば良いです

飛行機物の動画だとセンター(とか重心とか)のボーンが10段以上多段化してあるのは良くあるらしいです

手作業でやっても短時間で手が入れられるますし、ぶっちゃてボーンダブラーみたいなプラグイン使えば良いです(真顔

アイデア次第で応用はいくらでも効きますので初心者からGOD級までお勧めです


肩P、肩Cは上の手順で肩、腕を多段化してリネーム、付与で肩Pの回転を肩Cでマイナスで付与して打ち消しています


付与を使った改造として基本的な改造になるでしょう

変わり種としては”インド首”とかもあった記憶があるんですが?動画が残っているのかな?

【MMD】鳩首ボーンと手首鳩ボーンの仕込み「鳩首」だったみたい動画が残ってました


実はボーンの改造や追加というのは、追加したボーンで何をどう連携させるかという変化はありますが

「ボーンを複製してリネーム、適正なボーン番号に変更、親ボーンの切り替え、表示枠の適正化」

の繰り返しが作業の殆どと言ってもいいくらいです


ウエイトの乗ったボーンをリネームして利用する場合(私はウエイトの乗っ取りと呼んでいます)の例として足Dを入れてみましょう


1,足、ひざ、足首、つま先のボーンを複製


2,元のボーンを~~Dにリネーム

3,~~Dの流れを↓で足IK、つま先IKよりも下位に持っていく


4,複製したボーンの親子関係を設定しなおす

修正前はひざ、足首、つま先のボーンの親は~~Dのはず



5,足IK、つま先IKのLINK、TARGETを修正する

IKのLINKリストにある足D、ひざDを削除

足、ひざをINDEXコピーしてLINKリストに貼り付け

ひざに角度制限を設定

TERGETを足首に

つま先IKも同様に修正

6,~~Dの流れの親子関係を再確認する

多分そのままいけるはず

7,~~Dのボーンの付与親を設定する

足Dの付与親は足

付与率は1

8、~~Dの階層指定を足IKの階層よりも後に設定する

9,表示枠を設定、正常に動けば別名保存して完了

簡単でしょう?

この程度の追加であれば、それなりの時間で簡単に出来ちゃうのです

(プラグインで一発なんですけどね、なんですけどねー)

チョイ改造や、こういう構造があると便利かな?と自力で構築するのも結局は同じ事の繰り返しです

れっつトライなのです

2025年2月23日日曜日

モデルさんをモミモミしてみる(ボーンの順序を整える)

 実際のモデルさんで解説したかったんだけど条件が合いそうなモデルさんが見つかりませんでした

仕方がありませんので、例を挙げる形でボーン整理のお話を進めていこうかと思います

ここから先は私の好みの部分もありますので、違う並びが好きというのは有りです

要は「ユーザー(自分)が後で困らないように、よりシンプルに整理、並び替え」が出来てればよいのです


計算順序を考慮して並び替えてあげることで、スタンダードなスケルトンは全て階層0にすることが出来ます

そうすることで、PMXEプラグインでのボーン追加や、オリジナルの構造を組み込むときの見通しが良くなります

ちょっとしたボーン改造する場合でも意識されると良い事あるかもしれません


階層指定設定のあるモデルさんが失敗しているという訳ではありません、正解ですけどちょっと無駄があるというだけです

何故配布モデルに階層付けをされているモデルがあるかの理由は


”出力アプリの配慮”

”MMDのバージョンアップに伴う追加ボーンの不具合修正”

の為に起こった仕方のない事だったと思います



実際の並び替えの作業

基礎の大本のボーンに”センター”が一番最初になるでしょう

順標準ボーンでセンターの上位に「全ての親」とかの便利ボーンを置く場合ももありますが、スタンダードなスケルトンなら「センター」から始まります

私の場合は


センター

上半身

両目

右目(両目ボーンから付与を受ける)

左目(両目ボーンから付与を受ける)

下半身


と体幹と両目を並べます

今でも散見されるの例ですが


頭(階層指定無)

右目(階層2、両目ボーンから付与を受ける)

左目(階層2、両目ボーンから付与を受ける)

(いくつか飛んで)

両目(階層指定無)


のような並びと階層指定になっているパターンがあります

階層指定を特にしていない場合は階層指定は”0”になっています


意図的に階層指定して動くようにしてしまう場合もあるかもしれませんが

モデル制作時にデーター出力時に絶対動くようにアプリがそういう風に指定してしまう事があるからみたいです


ボーン処理順序としては

頭→右目を読んで見たけど階層2だから飛ばして→左目を読んで見たけど階層2だから飛ばして→…→両目をこれだけ動かして

階層0の処理が終わったから次の階層の処理に進んで

階層2の処理に進んだ

右目に両目のボーンの角度を付与させる

左目に両目のボーンの角度を付与させる


という処理になります

どの位置に両目ボーンがあってもちゃんと動く動く、けどちょっと回りくどい

そんな設定になっちゃってますよね

ボーンの順序が両目が下位になっている事で、視線回りの追加ボーンをプラグインで追加出来なかったりする事例もあったり

基準のボーンが視線になっていて、その先にある両目ボーンとの間に割り込む格好で追加しようとして失敗してたりしました


なので

両目

右目

左目

のような並びにして、階層指定の必要が無いシンプルな順番にしてあげましょう


あと、体幹関係でチェックした方が良いのがX座標の数値です

中央に走るのが基本なのでX座標は0なのですが「-6.960701E-11」みたいな指数表示になっている事がありませんか?

これボーン座標が自動設定される時ほとんど0だけど微妙にずれている時に自動で入力される数字になります

実際の数字は「0.0000000000696070」のようなほぼ0ですから、こういうの数値を見つけたら「0」と修正してあげましょう

他の自動入力の場合もこういう数値が入ることがあります

本当に小さな事ですが処理軽減になりますので気が付いたら修正してあげると良いでしょう



体幹の次に

左右の肩~指(指先&ダミーボーン)

を並べます

このあたりで差異が出ることは殆どありませんね

ちょっと特殊な捻りや肩回り、鎖骨なんがを実装しているモデルさんもありますので、そのへんもこのあたりに纏めておきます

握りや拡散ボーンを追加している場合、私は体幹と左右肩の間に置くことが多いかな?


そして足周りを並べます


足   (linkなので黄色)

ひざ  (linkなので黄色)

足首  (ターゲットなのでピンクになりそうだけど、つま先IKのLinkの黄色が優先になってる)

つま先 (ターゲットでピンク)

足IK (をLinkに「足、ひざ」、Targetに「足首」、PMXモデルの場合は0.1~-180°くらいで「ひざ」に角度制限がかかる)

つま先IK(足IKの流れの末端、Linkに「足首」、Targetに「つま先」)


IKは、この「Link黄色TargetピンクIK赤」の順に並べるのが基本になると思います

最近のPMXモデルの足IK周りはちゃんとこんな感じになっているモデルがほとんどですね

足IK親なんてボーンもありますが、そういう感じのボーンはIKのリンクの中には置くと混乱する原因になりかねませんので、私はIK並びの上位に置くようにしています

MMDモデルは現在PMXモデルが主流になっていると思いますが、PMXモデル黎明期のPMDモデルのスケルトンを参考にしたモデルに散見されたパターンがあります


足IK(階層指定2

つま先IK(階層指定2

ひざ

つま先


このパターンです

これも、先に挙げた「両目、左右目」と同じような感じで順番を階層指定して遅らせているのでちゃんと動きます

が、スマートで無いのもあるのですが付与で足、ひざ、足首の回転を取り出すときにちょっと面倒な事がおきます

足、ひざ、足首の階層は指定されていませんから、付与を受けるボーンは普通にそれらのボーンの下位に置けば良いのですが、IKの処理は階層2なのでおかしなことになります

バージョンによっては動かなかったり、MMDエンジン化したりしますし、何かしらの追加ボーンを仕込む時に混乱しかねません


足Dのとかを追加する場合

足Dはデフォルトで階層1のようですから、IKの階層が1ならそのままで行けると思いますが、IKが階層指定2だとNGになります

というわけで足D等を追加したりする可能性も含め、先に説明した、足、ひさ、足首、つま先。足IK、つま先IK(全て階層指定無し)の順に並べるのがお勧めです


※追記として

古いモデルに”つま先”を親にして、付与率0の付与ボーンの形でつま先EXを追加しているモデルがありました

これ、MMDのバージョンアップで追随しなくなったので、そうそう見ないと思います

もし見かけたら足Dの流れを追加してつま先EXを処理してあげましょう

その時に上手く動かない場合は階層指定やボーン順序をチェックすると良いです


膝枕ボーンやORZ79D等では追加構造を物理演算後にしないと目に見えるくらいのズレがおきていました

通常の変形処理が終わった後に足IKに大き目の補正がかかっていたのが原因だろうと思います

比較的新しいバージョンのMMDで足Dと足IKの差異を確認してみましたがほぼ合致していましたので修正がかかったのかな?とも思います

足IKから付与等で回転を取り出した時に気になるズレが起こったなら”物理演算後”に指定するといいかも?

という感じで頭の片隅に置いておくといいかもしれません


足IK周りの次に物理演算ボーンたちを置きます


IKと物理の両方の設定がされるボーンの流れ

ネクタイIK、髪IKとかがそれです

MMDで物理演算がONであれば物理演算が優先されますので、静止画制作時にIKを設定してあげるのも良いと思います


物理演算のみのボーンの流れ

特殊な設定でもなければ、普通に揺れ物全般ですね


その後に表示されるその他のボーン

非表示ボーン(~~先等のボーン)

と置いていきます

非表示の~~先ボーンについては、解りやすさ優先で親ボーンの近くに置いておいても良いと思います

このあたりは好みですよね


こんな感じでボーンの順番を整理していくと

基本のスケルトンは階層指定をしなくても良いシンプルな状態に出来ます

その後の順標準ボーン等の追加もしやすく、追加されたボーンも理解しやすく配置出来ると思います


そんなこんなで今回の作業でボーン改造の下地が整いました(という事で進めていきましょう)

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の順序でボーンを処理して次のフレームの処理へ進む流れになります

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

メッチャ地味です

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

基本は大事なのです

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


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

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

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


2025年2月14日金曜日

MMDエンジンの代替え構造のお話

 継続回転として有名なのがMMDエンジンですね


先のお話でもしましたが、MMDエンジン自身はメッチャ迷惑なバグです

複数の種類があるのですが、回帰的付与や親子関係が設定されると処理残りの角回転し続けるというのが大まかな理屈です

このバグのおかげで回帰的設定を含む(結果含んでしまう)構造を作ろうとするとメチャクチャリスキーな事になったり謎呪文を唱えたり、最悪あきらめたりすることになります

ですから、私個人としては好ましく思っておりません・・・がgagg、後で説明する仕掛けとの比較も必要でしょうし、軽く触れておきます


一番シンプルな1ボーン型

自身に付与します

付与親が赤字になっているのは”設定がおかしいよ”という警告です

MMDエンジンは故意にそういう感じの設定をします

付与率は適当でOKです

適当に回ります


自身で付与+IK

回転軸をIKで固定してるので少しは扱いやすいのかな?

IKのループ数とかは適当でOKです


やっぱり適当に回ります

元々がIKの設定ミスで起こる暴走を体系化したものなので他にもいくつかあの種類がありますが、使用目的を考えればこの辺を知っておけば困ることは無いと思います

利点としては”適当な操作で適当に回転し続ける”事ですね


■回転速度はPC環境に左右されるので安定しません

■動画出力中にも処理負荷次第で回転速度が変わりえます

■出力FPSの設定で回転速度の結果が変わります

「安定した角回転するものでは無いよ」なのです


回しっぱなしで出力するのなら、回転開始時の角度もランダムになりますからフレーム毎の絵は出力ファイルで違う事になります

編集で繋ぐ時とかに制限が出来るんじゃないかな?

操作時と動画出力時の回転速度が違ってしまいますから、プレビューでは無く出力結果を見て速度調整する必要があります

突っ込んでいるモデルやエフェクトの処理も負荷に関わってきますからシーンによっても変動しえます

結局のところそれなりに調整が面倒なんですよね

私みたいにボーンを弄って遊んでる人には邪魔ものでしかないし


「適当に回る」以外に良いところあるのかな?

というのが正直なところです

お手軽なのは解るのですが、前にもお話ししたデメリットが大きすぎます


では、MMDエンジンよりもシンプルな構造で、安定していて使い勝手が良い構造があるのか?というお話になるのですが

ちゃーんと存在するのです


ここからが本題

MMDエンジンは使わない継続回転の仕掛け

MMDで物を回転させるのには60度毎回転させるキーをバカバカ打ち込む必要がある

と思い込んでる人が多いのでMMDエンジンが重宝されるのだと思います

シンプルで使い勝手の良い継続回転の構造は昔からあるのです

配布しているサンプルなのですが、ザックリこんな感じ
説明用PDFも誤字ありますけど添付してます

回転角を指定されるボーンがコレ




その回転角を付与で受けて増幅する(この場合は179倍)

回転親が180度回ると89.5回転します

回転軸をお手軽に変えたいならセンターを双方の親に設定すると便利

このボーンに外部親でモデルをくっつけると継続回転出来るわけですね



とてもシンプル

組み込み簡単

エラーを含まない安定した構成


素晴らしい


開始フレームに初期角度(楽曲頭、デフォルトなら省略可)にキーを一個

回転終わり(楽曲終わりまで回すなら最終フレーム)にキーを一個

途中で回転の変化をつけるなら補完曲線をイジイジ


最小1キー打つだけで良いわけです

このサンプル動画だとステージの最終フレームに一個ポチっとキーを入れています



こんな感じですね

今回は倍率50倍だったので

楽曲の終わりに180度回すキーがモーフのキーを一個入れれば、(180度×50倍)で25回転します

キーは回転終わりのフレームに1個だけです



2分ちょいの楽曲なら毎分4~5回転する計算になります(結構高速に回りますよ)

もっと早くしたいならモーフ化していれば2とか3とかを直接入力しても良いですし、付与の倍率を上げてもいいですね

1楽曲数分間継続回転させるには十分だと思いませんか?

ボーン操作なら補完曲線も使えますし、倍率にもよりますがかなりな高速回転も出来ます(こんな感じ)

これは、donburiroomさんが紹介されているオートグループボーン揺らぎボーン等の継続回転部分になります

この部分の仕掛けは単純で当たり前すぎてわざわざ紹介されなかったのもあるのでしょうね

2011 年発売の「P さんのための MikuMikuDance モーション作成教室」にも欄外扱いでしたが軽く紹介されていました

結構古くからあるものなんですよ


MMDエンジンに慣れすぎてしまって回転開始フレームでボーンを回せば勝手に回転すると思い込んでいませんか?

その操作で回転するのは本来イレギュラーなんですよ?

ボーンを弄ってるのに回転しない、設定をミスってるか、キーを滅多打ちしないと回転しないやつだと勘違いしてませんか?

開始フレームと終了フレームにキーを打って補完曲線弄ってね?って経典でも説明されてますよね

終了フレームで大本のボーンに回転終了角度のキーを打ってあげる

プレビューや動画出力時には、それを数倍~数百倍した角度でボーンが回る

それに乗っかっているモデルやアクセやドームが回る

そういう事です


結構この構造私の配布してるステージとかに採用してるんで触って確認してみてください


ボーンの回転角を指定するのですから、VMDデータとセッティング済のボーンセットと同梱して配布何てことも可能です

これはMMDエンジンではとても難しいんじゃないでしょうか?

実際に見てもらうために動画を作ってVMDデータを含め配布しています

MMDテトリス 誰か文字付けテッテッテテトリス

カメラボーンをグルグル回してあげてモデルさんが回っているように見せています

確認してもらえばキーがめっちゃ少ないのが解ると思います

一応汎用性も考えてIKでの注視モードと手動モードをカメラの接続先を変える事で切り替えられます

背景接続位置にステージ等を外部親接続すると、接続されたカメラからは停止して見えるようになります

継続1は100倍、継続2は10倍、回転補助1~3と全てつながっているので、凄く細かい制御が可能になっています

動画中のちょっとした演出に使うと面白いんじゃないかなぁ?

という所



いくつかサンプルを紹介させていただきましたが、楽曲終わりにキーを1個打つのを大きな手間とは言わないでしょう?

開始、終了時の回転角を指定する訳ですから、フレーム毎の絵面はプレビュー時でも出力結果もで同一になります

ステージを切り替えても倍率と回転角さえ記録しておけば同じ条件で回転する

止める角度も決定出来る

構造もシンプルで組み込みやすく安心して使えます

適当に回るだけの不安定なMMDエンジンと比べると絵作りにもメリットがとても多いのです


結論として

MMDエンジンは無くなってもどうにでもなるのです

この仕掛けがもっともっと広まってMMDエンジン不必要勢が増えてくれるといいなぁ?と思うおっさんなのでした


2025年2月1日土曜日

ボーンで何が出来るのか(とりあえずの基礎編とりまとめ)

 多少変化球もありますが、ザックリとMMDモデルのボーンの基礎なんかを書き進めてみました

これから実際にモデルのスケルトンや、便利構造とかもうちょっと突っ込んだお話に進んでいく事になると思います

以前にニコニコのユーザーブログに書いた事と重複するかもしれませんが、そこはご勘弁ください

MMD関連ブログの魚拓の保護を進めておられる方もお見えになりますので、そちらも有効活用されると宜しいと思います

さて前置きはここまでで、本題に入っていこうと思います


MMDモデルのスケルトンを見たことが無いという人はここを訪れていないと思います

ボーン複数繋げて人型に模式化してスケルトンというのは、とても解りやすいネーミングです

只、このスケルトンを見慣れているが故に気が付きにくい事があります

MMDやMMMのボーンやボーンモーフを使うと、とても自由度の高いアナログコンピューターとして作動するという事です

何を言い出しているのかと思うかもしれません


入出力はボーンの回転角や移動量になりますが、これは意訳された数値、数量、フラグと置き換えて考える事が出来ます

 足し算、引き算、掛け算、割り算、ベクトル演算、行列式計算、理論式(AND、OR、NOT、NOR等)

MMDの処理能力が許す限りの範囲でこれらの演算することがが可能です


マイナスを足せば差の計算になりますので、和差の模式化ですね

構造という程の事はありませんが、計算尺や歯車式の計算機はこんな感じですよね



(X0、Y0、Z0)+N(X1、Y1、Z1)の模式化です

掛け算割り算を含むベクトル算なわけです
N<0なら割り算、N>0なら掛け算ですね

IKを使って少し複雑化になってます



理論式のANDとORです

IKの特性を使って閾値として扱っています

NOTは、ここから180度回転させれば否定扱いになるので省略しています

突き詰めればで数ビットの2進数和くらいは組めそうですが、かなり複雑化しそうですね




上のモデルを触ってみたい人はココからどうぞ


自分で0から構築していくと手間はしっかりかかります

それでも自由な思考発想でMMDモデルや便利構造にチャレンジしてもらえば嬉しいです



■これから出てくるだろう呪文みたいな謎ボーンについて

これから先、スケルトンや便利構造、ちょっとしたテクニックについてお話していく事になると思います

が、謎の呪文っぽい不思議構造が出てきたりすることがあると思います

ぶっちゃけたお話をすると、MMDエンジンっていう邪悪な存在が邪魔しなければ発想と手間で大抵の事は実装可能なのです

(ボーン弄りして遊んでる人はMMDエンジンへのヘイトは理解してもらえると思います)

IKや付与処理は内部的なボーン計算順序に入れ替わりが発生しやすいのです、これが回帰的構造になってしまってエンジン化する事が比較的頻繁に発生します

MMDやMMM自体は本来回帰的構造や付与も許容しています

MMDエンジンが目的の構造を邪魔したり、複雑怪奇な謎呪文構造の原因になっているのです

今後、便利機構を紹介していく事があると思うのですが、妙に意味不明な追加ボーンがあるなぁ?という場合ほぼIKの処理とMMDエンジン絡みの処理の為です

これが、ボーン改造や仕掛けの開発や理解を進める時の大きな壁になっています

MMDエンジンが邪魔しなければかなり簡素で理解しやすい便利構造が一般化されて、その結果を多くのユーザーが享受出来ていただろうと思います

私個人でもいくつも没にした構造がいくつもあります


MMMはMMDエンジンは動きませんが、インパルスモーフがあります

MMDの物理エンジンがバージョンアップされていたならMMDにもインパルスモーフが実装されていた可能性があったと思っています(PMX2.1以上のバージョンに対応したMMDの登場がありえたかも?)

過去の書籍にも紹介されているMMDエンジンよりも簡便で使い勝手が良い継続回転構造もあります(これは次に紹介、解説します)

この回転にはMMDエンジンは使っていません
キーは1個です
MMDエンジンにはこういう事をしようとすると相当面倒な事になるでしょうね


MMDエンジンに代わる何かなんてどうにでもなるのです


過去にMMDエンジンが消えるかもしれない事がありました

その時には”MMDエンジンが無いと困る”という声が大きすぎて”MMDエンジンは邪魔だし次を考えよう”って声は響きませんでした

もしも、もしも今後そのような機会があるのであれば、MMDエンジンを消す方向に声をあげていただきたいと思う次第です


2025年1月26日日曜日

ボーンモーフの伝達(モーフのお話の締めに入っていきたかっただけのお話)

ボーンモーフを外部親接続した子モデルに伝達する方法がありますよ?という、ちょっとだけ応用編です

これは外部親接続のお話にもなります


モデルの合成をしないでモデル同士をくっつける外部親接続は非常に便利な機能です

外部親接続が実装されるまでは、2個のモデルを特定のボーンでくっつけようとするとモデルをマージしてしまうくらいしか手がありませんでした

Xファイルのアクセサリとかだとくっつけるボーンの指定は出来るのですが、こちらは変形操作動が出来ないです


モデル同士を外部親で綺麗にくっつけられる条件は


■演算順序が親側のモデルが上位、子側のモデルが下位

 この順番が違うと、変形時にちょこっとフニャります


■接続ボーンは移動ボーン

 外部親接続の設定時にリストに出てこない場合はこれを見直してください


で、この外部親接続ですがかなり自由度が高く上の条件さえ整えられれば


●モデル内部のボーンでも親が切り替えられる

●複数の接続も可


なのです


今回は「複数の接続も可」の条件を使って「ボーンモーフの伝達」をしてみましょう


●接続する用の受け口のボーンセットを用意する

●親モデルにマージ

●外部親で必要なボーンの接続


これで親モデル側から接続された子モデルのボーンモーフの制御が可能になります

親モデルから子モデルに伝達出来る移動、回転は親子関係を結んだ通常のボーンの挙動と変わりはありません

親が回れば子はくっ付いているだけです


1対1で単純な移動、回転であれば、これで問題はありませんし、難しい仕掛けは必要ありません


ところが、回転や移動を複数のボーンで付与したい場合は何とかして子ボーン自体に回転してもらわねば付与が出来ません

そこで、IKを利用します

一見動いていないように見える仕掛けなのですが、親ボーンが回転したときに子ボーンはそれを打ち消すように回転することになります

接続された子ボーンは回転するので、その回転を複数のボーンに付与する事が可能になります

移動については、回転を取り出して尺取虫構造で伸縮させれは移動付与と似た結果が得られる理屈です

伝達出来るボーンモーフ(正逆可)は1種類につき1セット必要になりますから、複雑化すればするほどボーン数は増えます

そのあたりの事がありますので、あまり認知されていない使い方ではあります



シリーズもので同一の接続ボーンセットが利用出来る場合

接続の統一化を意識したセットアップが行える場合

VMDのキー数制限にひっかかるのでキーの大半は子モデルに受け入れてもらって変形制御だけ親モデルで行いたい

そんなときには使えるんじゃないでしょうか


外部親は単一モデル内部でも設定することが可能です

親指定していないボーンを手のダミーボーンに親として登録する、とかですね


一応サンプルモデルも用意はしてみました


親モデルさんを準備する(今回はぐーちゃん)


接続用ボーンをマージ(D&Dで追加する、同名ボーンをマージで行けるはず))


で、別名保存



こんな感じ









ここまでPMXEでの作業ですね

MMDに親モデル、子モデルの順で読み込む

順逆になってしまう場合はモデルの計算順序を入れ替える








モデルの説明に従って外部親接続を必要な数行う



これで親モデルに登録してあるモーフで変形出来る筈






えんじょい!