2023年12月06日

Pとか Cとか

※またブログが広告まみれになっているので... (3ヵ月ぐらい新しい記事を書かないと勝手に広告が表示されるようになります。↓の広告欄には180日以上と表記されるも、実際は90日程度の模様...謎)
追記: やっと90日表記に修正されたようですね (随分かかりました)


MMDの標準(同梱) モデルで 「肩の上げ下げ」 モーションを作成してください。皆さんできますよね?

まず MMDの基本として、肩ボーンを動かす=回転させると、腕の方向も一緒に変わってしまいます。まあ当たり前ですね。

腕が上がってしまうならその分を下げて調整すればいいだけなので、実際の作成作業としては、

肩を上げ → 腕を元の向きまで下ろし → 今度は肩を下げ → また腕を戻し...

という手順で一応作成はできそうです。やってやれないことはないですが、何度も繰り返し調整することや、左右の向き合わせなどを考えると非常に面倒です。

...と、当時のユーザー一同も思っていたので、作られたのが "肩キャンセルボーン" になります。

ここまでが今回の導入。肩キャンセルの詳細については適当に検索などでご確認ください。


で、ここからが本題。さて、この肩キャンセル...実際には 肩P とか 肩C とかのボーンが実体なんですが...「誰だこんなテキトーな名前を付けた奴は?」 という話。

まあここまでの流れでだいたい察せられますよね...おそらく名付け親は 自分 だと思われます。

なにぶん随分と昔(SNS時代) の話なので記憶も定かではありませんが、当時からの流れとしてはこんな感じ。

ボーン(肩?)に回転付与で逆向きのカウンターをかけるとそのボーン以下の向きを維持できる、という話題を提示 (自分ではないです)

その日記(=SNS内の記事の呼び方) で記載されていた作成手順を簡易スクリプトにまとめた (これが自分/本文はローカル保存してあり確認済み)

そのスクリプトを元に個別の (PMDエディタ)プラグインを作成し配布 (これを含め以降は自分ではないです)

汎用的な統合プラグインに機能として取り込み

今に至る

で、これが自分の日記に記載したスクリプトの一部 (冒頭)
----
// キャンセル肩追加スクリプト(標準ミク用/右側のみ)
// 対象ボーン取得/追加ボーン作成
IPXBone rs = bone.First((IPXBone b) => b.Name == "右肩");
IPXBone ra = bone.First((IPXBone b) => b.Name == "右腕");
IPXBone rsp = (IPXBone)rs.Clone(); rsp.Name = "右肩P";
IPXBone rsc = (IPXBone)ra.Clone(); rsc.Name = "右肩C";
(以下略)
----

見ての通り、肩Pと肩Cがありましたね。

現在では情報元の日記を確認できないため、そちらで書かれていた可能性もありますが、自分の性格から考えると、このような名前の付け方は "自身の仕業" にしか見えません。

「PとかCとか何のことだ?」 といった疑問に対しては、単純に親(Parent) とキャンセル(Cancel) の頭文字というだけだと思います。
※rs:RightShoulder / ra:RightArm / rsp:RightShoulderParent / rsc:RightShoulderCancel

そもそもよく考えて付けた名前ではないですからね。スクリプト用として使い捨てるだけ (だったはず) の仮称が 「今に至るまでそのまま使われている」 ってのが実情というわけです。

Q.「キャンセル(C)ボーンなのになんで Pを動かすんだ?」
A. Cボーンはカウンターで相殺するための非表示ボーン。動かすのは別に元のボーン指定でもよかったんだが、配布モーションとの互換性を考慮して多段化=親側なので Pが付いた (子側で Childにすると CとCで被ってしまう)

長く使われることが想定されているなら、それ相応の名称を用意することもできましたが...今となっては後の祭りです。
※MMDは仕様上ボーン名に強く依存しているため、今更の修正も難しい


ちなみに余談ですが、"全ての親" や "多段ボーン" という用語や使い方も、実は PMDエディタの初版 (ver0001/2008/9/9) 添付の readme.txt で自分が書いていたりします。

実際に有効活用されるようになるのは、それよりもずっと後の話になりますが、技術的な提案については極々初期の頃からおこなわれている、みたいなことは世の中よくありますね。

今日のこの日においても、皆さんが知らないだけで技術者や研究者の方々は未来のために日夜頑張ってくれているわけです。

といった感じで、なんかイイ話?にまとまったところで、今回のお開きにしたいと思います。

以上、広告対策として適当に蔵出しした昔話でした。





----
・本文に入らなかった内容

肩キャンセルなどの変形構造は MMMなどの後続環境ではモーション作成機能で対応しています。わざわざモデル側を改造する必要はありません (配布モーションによっては適用時に必要になる場合アリ)

なんなら PMXエディタの TransformViewでも Shift+でのボーン操作(ハンドル移動) で簡単に実現可能です。

モーション側の互換性を考えると、本来はこのような動作仕様の方が望ましい形です。
※モデル改造による対応はあくまで一時的な措置としたい

各用語については現在なら、

全ての親 → ルート(ボーン)
多段ボーン → ボーンレイヤー
キャンセル構造 → カウンター構造

みたいにするかもですね。まあ 3DCGに限らず、技術系の用語は 「そのままカタカナに変換しても伝わらない」 のが定番なので、いつも (意訳に)苦労します。

万人に広めたいなら言葉=文化をしっかり理解することが最重要。

※「eスポーツが流行らないのは何故だ?」「"eスポーツ" なんて名前にするからだろう...」 (スポーツ:運動 ≠ sports:競技)


【関連する記事】
posted by - at 05:58| MMD | 更新情報をチェックする