MMD骨骼解析

发布于 2019-01-04  125 次阅读


本篇文章内容为解析MMD模型文件中各骨骼的实际用处

骨骼基础

位置:骨骼包括一个向量和一个原点,位置就是原点;骨骼的原点为顶点的旋转中心,和骨骼的向量一起为自身/子级提供一个旋转角度;当骨骼自身没有权重时,其定位为辅助类型骨骼,可用于处理动作,其子级将拥有更灵活的旋转方案,使子级可以围绕自身原点旋转或者父级原点旋转;
親ボーン:父级骨骼的编号,子级将受到父级的位移/旋转/缩放等全部影响;
表示先:骨骼的向量,向量的长度没有意义,向量的方向有参考意义,有默认方向值;
可参见文末Pmx的文档翻译。

RemMiku的所有表示非物理非左侧骨骼

操作中心:原点,世界中心,不影响人物;

センター组

全ての親:无权重,原点,整体移动;
センター:无权重,表示身体重心,指向原点的骨骼,为腰提供旋转角度;
グルーブ:无权重,与父级センター的原点很近,功能也一样;
腰:无权重,与父级グルーブ类似,限制了移动;
注:这部分的骨骼不带权重,用于辅助调整身体的整体位置;

IK组

右足IK親:所有右足IK的父级,没有控制链,位置接近原点;
右足IK:目标为右足首,控制链为大腿和小腿;
右つま先IK:目标为右つま先,控制链为脚
注:因为IK骨的父级最终指向全ての親,并不会因为带权重骨骼的移动
注:IK即反向动力学,为目标骨骼的原点指定一个理想的位置,目标骨骼的原点会尽量靠近这个位置;
注:根据上一条,IK骨的旋转没有意义,只有位置具有参考意义;
注:因为脚部骨骼有IK,在降低重心时大腿和小腿因为受IK影响而弯曲,使模型不会降到地板以下;

上半身

上半身:有权重,腰部到乳房以下的区域;
上半身2:有权重,整个胸部+脖子根部区域+肩根部区域;
首:有权重,脖子区域;
頭:有权重,整个头部非活动区域;
右肩P:无权重,与右肩重合,右肩的父级;
右肩:有权重,右肩区域;
右腕:有权重,上臂区域,权重分给了3个子级;
右腕捩(ねじ):有权重,肘关节处,下臂的父级;
右ひじ:有权重,下臂,权重分给了3个子级;
右手捩:有权重,手腕关节处,手的父级;
右手首;有权重,手掌心区域;
右ダミー:dummy,无权重,表示掌心位置;
右親指0/右親指1/右親指2/右小指1/右小指2/右小指3/右薬指1/右薬指2/右薬指3/右中指1/右中指2/右中指3/右人指1/右人指2/右人指3:有权重,指根/骨骼1/骨骼2,大拇指的原点靠近右手首;

下半身

下半身:有权重,腰部+臀部;
右足:无权重,大腿骨骼,父级为腰キャンセル右→下半身;
右ひざ:无权重,小腿骨骼;
右足首:无权重,脚骨骼;
右足D:有权重,大腿区域,父级为腰キャンセル右→下半身;
右ひざD:有权重,小腿区域;
右足首D:有权重,脚区域;
右足先EX:有权重,脚尖区域;
注:带字母结尾的骨骼有对应无字母结尾的骨骼的旋转付与,付与率为1;
注:可以手动调整右足先EX实现踮脚;

头部

舌1:有权重,舌根部位;
舌2:有权重,舌尖部位;
右目:有权重,瞳孔区域,同时受到両目的旋转影响;
両目:无权重,可控制左目和右目的旋转,

PMX文档中关于骨骼的部分

●ボーン骨骼
PMXのボーンの変形特性は属性として個別に設定可能
在PMX中可以依次对每个骨骼的属性进行修改实现不同的变形效果
□基本設定
ボーン名 : ボーンの名称 | 各複製処理などのKeyとなるので重複/未設定は望ましくない
親ボーン : 親となるボーンのIndex
基础设定
骨骼名:骨骼的名称,将作为复制处理时的识别标志,请不要重复/未设置;
父级骨骼:父级骨骼的编号,没有父级时为-1;

□表示先(>) - ボーンの>表示の指定
ボーン : 表示先を指定のボーン(Index)の位置で設定 ※<<ボタンにより単独で親参照しているボーンを指定可能
相対 : 表示先をボーン位置から任意のオフセット差で指定 XYZ
朝向:指定骨骼的朝向
骨骼:设置当前骨骼朝向为的指定编号的骨骼的原点,可依据父级关系进行指定;
相对:设置当前骨骼朝向为指定的向量;

□変形順
変形階層 : 変形順を決定する値(階層値が小さい方が先)
物理後 : ONの場合物理演算後にボーン変形を行う
※物理前/後でグループ化、各グループ内を階層→Index順で並べ順次変形します。
权重效果顺序(指定动画系统的工作顺序)
权重效果优先级:根据优先级决定权重效果被施加的顺序,值越小优先级越高。
物理后:开启后,先进行物理演算,再处理权重效果;
注:根据物理前后进行分组,每个组内再根据优先级→骨骼编号顺序处理权重效果;

□性能
回転 : 回転可能
移動 : 移動可能
IK : IK用
表示 : 表示可能
操作 : 操作可能
开启的功能
旋转:是否可以旋转
移动:是否可以移动
IK:IK设置是否生效
显示:是否显示骨骼
操作:是否可以被操作

□付与 - 付与親の回転/移動量をボーン変形量に追加する属性
回転+ : 回転量の付与
移動+ : 移動量の付与
付与率 : 付与率
付与親 : 付与元のボーンIndex
L : ローカル付与
付与:向被付与的父级骨骼追加变形属性
旋转:在追加的变形属性中包括当前骨骼的旋转;
移动:在追加的变形属性中包括当前骨骼的移动;
付与率:(将当前骨骼的变形属性以多少比例进行追加)
被付与的父级骨骼:被付与的父级骨骼编号
L按钮:是否启用本地付与

※付与される変形量(付与親の変形量)
注:付与功能提供给被付与的父级的变形属性值
■ローカル付与(ローカル付与ON) :
・付与親の現在の変形量(移動/回転量を分離して適用)
在开启了本地付与时的算法:
·被付与的父级的当前变形量,分别计算移动和旋转;
这段没看懂,搜索“ローカル付与”有一段解释是:将付与親的变形量传递给当前骨骼;

■通常付与(ローカル付与OFF) :
・ユーザーがボーンに指定した移動/回転量
・ボーンモーフから設定された移動/回転量
・IK変形によるリンクの回転量
・多重付与変形量
在关闭本地付与时的算法:
·用户指定/表情/IK/其他付与等带来的属性值;

□軸制限 - 回転/移動時に任意の軸を操作軸に固定
軸方向 : 軸の方向ベクトル
※軸設定はView側のローカル軸の簡易設定機能推奨 (>ボタンにより表示先方向への簡易設定可能)
轴限制:旋转/移动时,将任意轴作为操作轴固定
轴的方向:轴的方向的法线
轴设定可以使用>按钮进行简单设置

□ローカル軸 - ボーン操作時のローカルフレーム指定
X : ローカルX軸
Z : ローカルZ軸
※3軸はX/Zの設定により補正される(X/Zが直交ではない場合はZが補正される)
※軸設定はView側の軸制限簡易設定機能推奨 ([>]ボタンにより表示先方向への簡易設定可能)
本地轴:指定操作骨骼时的本地框架

□外部親 - 外部からボーン親を指定する場合の識別用Key
親Key : Key値
使用外部物体作为父级

□IK - IKボーンのみ
Target : IKのターゲットボーン(Index)
Loop : IK計算のループ回数 (近似状態へ到達するまでの最大回数/MMDでは無視される場合があります)
単位角 : IK計算で使う単位角度[deg]
Loop:每一帧中IK计算次数;
单位角:单次计算中骨骼的最大旋转角度,会逐渐接近理想位置而减小角度

Link : IKリンクボーン | 追加はボーンリストからIndexコピー→Indexコピーから追加など
角度制限 : リンクの変形をXYZで制限
X/Y/Z : 各軸の制限角度[deg]

[→0] : 制限角度を初期化

○ボーンリストメニュー

[追加] -
[最後尾に追加] : 新規ボーンを最後尾に追加
[複製を追加] : 選択ボーンの複製を"選択位置に"追加
[削除] : 選択ボーンを削除
[上へ移動] : 選択ボーンを一つ上へ移動
[下へ移動] : 選択ボーンを一つ下へ移動

[全て選択] : リスト項目を全選択
[Indexコピー] : 選択項目をIndexコピー(ボーン系リストなどで追加可能)
[名称の一括編集] : 名称一括編集を表示

[PMDボーン種類で設定] : PMDのボーン種類形式で属性値を設定 ※利用は非推奨

[CSVファイルへ保存]
[CSVファイルから追加/更新]
[クリップボードへ保存]
[クリップボードから追加/更新]
→PMXのCSV変換について

○IKLinkリストメニュー

[削除] : 選択対象を削除
[上へ移動] : 選択対象を一つ上へ移動
[下へ移動] : 選択対象を一つ下へ移動
[全て選択] : リスト項目を全選択
[Indexコピーから追加] : ボーンリストからコピーされた対象を追加(Index降順に変換)

■PMXボーンタブでのIK列の作り方
1. IK対象となる列ボーン及びIKボーンを作りIKボーンのIK属性をON
2. IK移動の基準となるボーン(列の最も先)をIK枠のTargetに設定(Index)
3. 列ボーン(IK/Target以外)をリストから複数選択し、右メニュー[Indexコピー]
4. IKボーンのIK-Linkリスト上で右メニュー[Indexコピーから追加]
5. Loop数や単位角、各リンクボーンの角度制限の調整を行う

※IK列はView側から簡易的に作成する機能もあります。

[選択ボーン] -
[選択状態の維持] - チェック時、ボーン選択をクリア状態にしない

[子系列の選択] - 選択ボーンの子系列ボーンを全て選択状態にする(ボーン上でのダブルクリックと同処理)
[左右ボーン位置合わせ] - 選択ボーンの左右ボーンが存在する場合(ボーン名から判断)、Y軸対称(X符号反転)で位置を設定。

[IKボーンを含む系列をIK化] - 親子関係で連結された一連のボーン列と任意のIKボーン1つを選択対象に含め実行すると自動でIK系列化
[多段ボーンの作成-親側] - 選択ボーンを多段化(同位置に新規の親ボーンを挟み込む)/IK自動対応/複数ボーン可能
[多段ボーンの作成-子側] - 選択ボーンを多段化(同位置に新規の子ボーンを挟み込む)/IK自動対応/複数ボーン可能

[中間ボーンの作成] - 2つ以上の系列選択ボーンに対して間に新規ボーンを作成する/IK自動対応/複数ボーン可能
[操作(付与)ボーンの作成] - 選択ボーンに対して操作用の付与ボーンを追加(既に付与親がある場合は追加しない)

[非表示ボーンは剛体/Joint作成不可] - 以下の作成機能で、非表示ボーンの場合は対象にしないチェック
[基礎剛体の作成 - ボーン追従] - 選択中のボーンに基礎剛体(カプセル形状の任意の大きさ)をボーン追従剛体として自動作成します。
[基礎剛体の作成 - 物理演算] - 選択中のボーンに基礎剛体(カプセル形状の任意の大きさ)を物理演算剛体として自動作成します。
[基礎Jointの作成] - 選択中のボーンに基礎Jointを自動作成します。Jointの接続に関しては適宜設定する必要があります。
[基礎剛体/連結Jointの作成] - 選択中のボーンに基礎剛体と基礎Jointを作成し親子関係のボーンに関連する剛体をJoint連結します。

[表示先方向へ軸制限] - 選択ボーンの表示先方向を制限軸として設定及び軸制限属性を追加
[表示先方向をベクトルコピー] - 選択ボーンの表示先方向をベクトルコピーに保存(フォーム側軸設定などにベクトルペースト可能)

[ローカル軸の簡易設定] - 選択ボーンのローカル軸を、X:表示先方向 Z:画面奥方向で簡易設定
[ローカル軸初期化] - 選択ボーンのローカル軸を初期化


关注成长,注重因果。