PMX を VRM に変換する完全ガイド:MMD モデルをデスクトップキャラクターにする
好きな PMX/MMD モデルを見つけたのに、使いたいアプリは `.vrm` を求めている。このガイドでは、Blender と VRM Add-on を使った PMX→VRM 変換をヒューマノイド骨格のマッピング、表情、MToon マテリアル、Spring Bone 物理、メタデータ、AniMate へのインポートまで通して解説します。
なぜ PMX を VRM に変換するのか
PMX は MMD(MikuMikuDance)の標準モデル形式です。ボーン、モーフ、マテリアル、物理が MMD のアニメーション向けに調整されているため、ダンス動画では強い反面、ほかのキャラクタープラットフォームでは扱いにくくなります。
VRM はバーチャルキャラクター向けのオープンな 3D 形式で、VTuber ツール、ソーシャル VR、AniMate のようなデスクトップコンパニオンに広く対応しています。変換後は同じモデルをいろいろな場所で使えます。
- 瞬き、マウス反応、待機、ダンス、アプリのそばでの常駐といったデスクトップコンパニオン体験。
- VTube Studio や Warudo など VTuber 制作ツールとの組み合わせ。
- VR ソーシャルプラットフォームやアバターコミュニティ。
- 今後 VRM に対応する別のアプリやツール。
まとめると、PMX は MMD パイプラインに属し、VRM はアプリを越えて持ち運ぶための形式です。
PMX→VRM の変換ルート
| ルート | ツール | 向いている人 | 難易度 | おすすめ |
|---|---|---|---|---|
| ルート A:Blender | Blender + VRM Add-on + MMD Tools | はじめて変換する人、パネル操作で進めたい人 | 初心者向け | 推奨 |
| ルート B:Unity | Unity + MMD4Mecanim + UniVRM | Unity に慣れていて、コライダーを細かく調整したい人 | 中級者向け | 必要なときだけ |
VRM の技術的な土台:何を変換しているのか
Blender を開く前に、VRM ファイルの内部構造を少しだけ理解しておくと、変換トラブルの原因が分かりやすくなります。PMX の概念を間違った VRM の仕組みに対応づけてしまうのが、多くの失敗の正体です。
VRM は glTF 2.0 の拡張として作られている
VRM はゼロから作られた形式ではなく、Khronos Group が策定した glTF 2.0 の上に成り立っています。VRM ファイルは実質 `.glb` バイナリに `.vrm` 拡張子を付け、VRM 固有の情報を glTF の拡張フィールドに記録します。
extensionsUsed: [
"VRMC_vrm", // VRM core
"VRMC_materials_mtoon", // アニメ調マテリアル
"VRMC_springBone", // スプリングボーン物理
"VRMC_node_constraint", // ノード制約
"KHR_materials_unlit", // アンライト補助
"KHR_texture_transform", // テクスチャ変形補助
]
glTF 2.0 をサポートするレンダラーは、これらの拡張を実装すれば VRM を読み込めます。この共通基盤があるからこそ、デスクトップアプリ、VTuber ソフト、ソーシャルプラットフォームの間で同じモデルを共有できます。
VRM の5つの主要サブシステム
| サブシステム | フィールド | 役割 | 必須 |
|---|---|---|---|
| Humanoid | humanoid | glTF ノードを標準的な人型骨格に割り当てる | はい |
| Meta | meta | モデル名、作者、バージョン、ライセンス | はい |
| FirstPerson | firstPerson | VR 一人称視点の頭部メッシュ表示ルール | 任意 |
| Expressions | expressions | VRM 0.x の BlendShape に相当する表情システム | 任意 |
| LookAt | lookAt | ターゲットへの視線追従 | 任意 |
更新順序:なぜ並びが重要なのか
VRM は毎フレーム、各サブシステムを決まった順序で評価します。表情と瞬きが競合したり、スプリングボーンが理由なく揺れたりするときは、たいていこの順序に関係があります。
1. Humanoid ボーンの解決
| (頭の位置が決まる)
2. LookAt の解決
| (ボーンで眼球回転 / 表情で重み設定)
3. 表情の更新
| (外部入力 -> LipSync -> AutoBlink -> LookAt 表情)
4. 表情の適用
| (全表情の重みを加算して反映)
5. 制約の解決
| (回転制約、IK 制約など)
6. Spring Bone の解決
VRM 0.x と VRM 1.0 の違い
| 項目 | VRM 0.x | VRM 1.0 |
|---|---|---|
| 表情名 | BlendShape | Expression |
| 表情の重み | 0-100 | 0-1 |
| 感情名 | joy, sorrow, fun | happy, sad, relaxed |
| 驚き | なし | surprised |
| 表情バインド | おもに MorphTarget | MorphTargetBind + MaterialColorBind + TextureTransformBind |
| 競合処理 | 仕様に明記なし | Override による block / blend モード |
| 拡張プレフィックス | 不統一 | VRMC_ |
| chest ボーン | 必須 | 任意 |
| neck ボーン | 必須 | 任意 |
公式リファレンス
| リソース | アドレス | 用途 |
|---|---|---|
| VRM 公式サイト | vrm.dev | 形式概要、ツール、事例 |
| VRM 仕様リポジトリ | github.com/vrm-c/vrm-specification | JSON スキーマ付きの詳細仕様 |
| UniVRM | github.com/vrm-c/UniVRM | Unity のインポート・エクスポート実装 |
| VRM Add-on for Blender | github.com/saturday06/VRM-Addon-for-Blender | Blender 用 VRM アドオン |
ルート A:Blender + VRM Add-on で変換する
Step 1:ツールを準備する
| ツール | バージョン | 入手先 |
|---|---|---|
| Blender | 3.6 以上、できれば 4.2 以上 | blender.org |
| VRM Add-on for Blender | 最新版 | GitHub |
| MMD Tools | 最新版 | Blender のアドオン管理からインストール |
| CATS Blender Plugin | 任意 | GitHub または Blender Extensions から |
VRM Add-on のインストール
- Blender を開き、編集 → プリファレンスを開きます。
- アドオンタブで右上のインストール…を選びます。
- ダウンロードした VRM Add-on の `.zip` を選択し、アドオンをインストールを押します。
- 一覧のVRMを探して有効にします。
MMD Tools のインストール
- プリファレンス → アドオン → インストール…で MMD Tools の `.zip` を選択します。
- インストールして有効にします。
- Blender のファイル → インポートに
MikuMikuDance Model (.pmx/.pmd)が追加されます。
Step 2:PMX モデルをインポートする
- ファイル → インポート → MikuMikuDance Model (.pmx/.pmd)を実行します。
- ファイルブラウザで `.pmx` を選択します。
- メッシュ、テクスチャ、アーマチュアのボーンが正しく入っているか確認します。
Step 3:MMD ボーンを VRM Humanoid にマッピングする
PMX と VRM では骨格の構造が異なります。VRM は標準化された Humanoid 骨格を要求するため、PMX アーマチュアを VRM のボーン名に対応づける必要があります。必須ボーンが欠けていると書き出しが止まり、あとでアニメーションが崩れる原因にもなります。
- モデルのアーマチュアを選択します。
- 右側のプロパティパネルでVRMタブを開きます。
- Create VRM Modelを押し、自動マッピングを実行します。
- Humanoidセクションで結果を確認します。
MMD ボーン対応表
以下の表はよく使われる MMD ボーン名と VRM Humanoid ボーンの対応です。太字は VRM 1.0 で必須、ほかは任意ですが、よいアニメーションのために推奨されます。
胴体と頭
| MMD ボーン名 | 部位 | VRM ボーン | VRM 1.0 必須 |
|---|---|---|---|
| 全ての親 | ルート / 腰の基準 | Hips | はい |
| 上半身 | 上半身 | Spine | はい |
| 上半身2 | 胸 | Chest | いいえ |
| 上半身3 | 上胸 | UpperChest | いいえ |
| 首 | 首 | Neck | いいえ |
| 頭 | 頭 | Head | はい |
| 左目 / 右目 | 左右の目 | LeftEye / RightEye | いいえ |
| あご | あご | Jaw | いいえ |
脚
| MMD ボーン名 | 部位 | VRM ボーン | VRM 1.0 必須 |
|---|---|---|---|
| 左足 | 左もも | LeftUpperLeg | はい |
| 左ひざ | 左すね | LeftLowerLeg | はい |
| 左足首 | 左足 | LeftFoot | はい |
| 左つま先 | 左つま先 | LeftToes | いいえ |
| 右足 | 右もも | RightUpperLeg | はい |
| 右ひざ | 右すね | RightLowerLeg | はい |
| 右足首 | 右足 | RightFoot | はい |
| 右つま先 | 右つま先 | RightToes | いいえ |
腕
| MMD ボーン名 | 部位 | VRM ボーン | VRM 1.0 必須 |
|---|---|---|---|
| 左肩 | 左肩 | LeftShoulder | いいえ |
| 左腕 | 左上腕 | LeftUpperArm | はい |
| 左ひじ | 左前腕 | LeftLowerArm | はい |
| 左手首 | 左手 | LeftHand | はい |
| 右肩 | 右肩 | RightShoulder | いいえ |
| 右腕 | 右上腕 | RightUpperArm | はい |
| 右ひじ | 右前腕 | RightLowerArm | はい |
| 右手首 | 右手 | RightHand | はい |
指:任意だけど入れておきたい
MMD の指ボーンは 指0 から 指3 のような名前です。VRM 1.0 は指の完全な骨格を定義しています。デスクトップの基本操作では必須ではありませんが、指さしや手のジェスチャーに使えます。
| VRM 指ボーン | 補足 |
|---|---|
| LeftThumbMetacarpal | 親指の中手骨 |
| LeftThumbProximal | 親指の基節骨 |
| LeftThumbDistal | 親指の末節骨 |
| LeftIndexProximal → Distal | 人差し指チェーン |
| LeftMiddleProximal → Distal | 中指チェーン |
| LeftRingProximal → Distal | 薬指チェーン |
| LeftLittleProximal → Distal | 小指チェーン |
右手も同じ構成です。Left を Right に置き換えてください。
VRM 1.0 Humanoid の階層
Humanoid ボーンには決まった親子関係があります。途中のボーンがない場合は祖先にさかのぼります。マッピング失敗のデバッグにはこのツリーが役立ちます。
root(Humanoid ではない原点ノード)
+-- hips
|-- spine
| +-- (chest)
| +-- (upperChest)
| |-- (neck)
| | +-- head
| | |-- (leftEye)
| | |-- (rightEye)
| | +-- (jaw)
| |-- (leftShoulder)
| | +-- leftUpperArm
| | +-- leftLowerArm
| | +-- leftHand
| +-- (rightShoulder)
| +-- rightUpperArm
| +-- rightLowerArm
| +-- rightHand
|-- leftUpperLeg
| +-- leftLowerLeg
| +-- leftFoot
| +-- (leftToes)
+-- rightUpperLeg
+-- rightLowerLeg
+-- rightFoot
+-- (rightToes)
hips だけで、ほかの Humanoid ボーンは回転します。Humanoid ボーンの間に非 Humanoid ノードを挟むことはできますが、ボーンのスケールは正の値が必要です。自動マッピングが失敗したら
- アーマチュアを選択した状態で、アドオンのAuto Mapをもう一度実行します。
- Humanoid パネルで不足しているボーンを手動で割り当てます。
- PMX が標準的な MMD ボーン名を使っているか確認します。日本語名が正しく読み込まれている必要があります。
Step 4:表情(Expression / BlendShape)を設定する
デスクトップコンパニオンで瞬き、口パク、感情表現を動かすには、VRM 標準の表情が必要です。VRM 0.x では BlendShape、VRM 1.0 では Expression と呼びます。概念は同じですが、VRM 1.0 の方ができることが多いです。
感情表現
| VRM 1.0 | VRM 0.x | よく使う MMD モーフ | 意味 |
|---|---|---|---|
happy | joy | 笑い | 笑顔 |
angry | angry | 怒り | 怒り |
sad | sorrow | 困る | 悲しみ |
relaxed | fun | にっこり | リラックス |
surprised | 0.x にない | びっくり | 驚き(VRM 1.0) |
口パク
| VRM 1.0 | VRM 0.x | よく使う MMD モーフ | 母音 |
|---|---|---|---|
aa | a | あ | a |
ih | i | い | i |
ou | u | う | u |
ee | e | え | e |
oh | o | お | o |
瞬き
| VRM 1.0 | VRM 0.x | よく使う MMD モーフ | 意味 |
|---|---|---|---|
blink | blink | まばたき | 両目 |
blinkLeft | — | 左まばたき | 左目のみ(1.0) |
blinkRight | — | 右まばたき | 右目のみ(1.0) |
視線表現
| VRM 1.0 | 意味 |
|---|---|
lookUp | 上を見る |
lookDown | 下を見る |
lookLeft | 左を見る |
lookRight | 右を見る |
leftEye / rightEye を回転させ、Expression は4つの視線表現を頂点やテクスチャオフセットで動かします。MMD モデルの多くはテクスチャ目なので Expression モードが合います。Blender での設定方法
- VRM パネルで BlendShape Master(VRM 0.x)または Expressions(VRM 1.0)を開きます。
- 表情グループを1つずつ追加し、MMD モーフを VRM 標準の表情へ対応づけます。
VRM 1.0 の表情バインドタイプ
| バインドタイプ | 効果 | 主な用途 |
|---|---|---|
| MorphTargetBind | メッシュの MorphTarget を動かす | 瞬き、口を開く、笑顔などの頂点変形 |
| MaterialColorBind | マテリアルの色を変える | 頬の赤み、瞳の色変化 |
| TextureTransformBind | テクスチャ UV をずらす / 拡縮する | 視線用の目テクスチャ回転 |
VRM 1.0 では1つの表情に複数のバインドをまとめられます。たとえば頬を少し膨らませる MorphTarget と、頬マテリアルを赤くする MaterialColorBind を「照れ」に含めることができます。
VRM 1.0 の Expression Override
アプリが複数の表情を同時に動かすと、顔が崩れることがあります。Override には次の3つの戦略があります。
| モード | 挙動 | 使いどころ |
|---|---|---|
none | 介入しない | デフォルト |
block | この表情が動いている間、対象のプログラム表情を0にする | 笑顔中に瞬きを止めるなど、はっきり切る場合 |
blend | この表情が0→1になるのに合わせて対象をフェードさせる | なめらかな遷移。推奨 |
各表情は overrideMouth、overrideBlink、overrideLookAt を設定できます。
happy、angry、sad に overrideBlink = "blend" と overrideMouth = "blend" を設定します。笑顔と瞬きが同時に起きても、まぶたが顔にめり込みにくくなります。モーフを一括マッピングするスクリプト(任意)
モーフが多い場合は、短い Python スクリプトで作業を速くできます。次の例は VRM 0.x の BlendShape グループ向けです。
import bpy
# メッシュを選択した状態で実行する。
# よく使う MMD モーフ名を VRM 0.x BlendShape 名へ対応づける。
Proxy = {
"blink": "まばたき",
"a": "あ",
"i": "い",
"u": "う",
"e": "え",
"o": "お",
"joy": "笑い",
"angry": "怒り",
"sorrow": "困る",
}
for name, morph_name in Proxy.items():
bpy.ops.vrm.add_vrm0_blend_shape_group(
armature_object_name=bpy.context.active_object.name,
name=name
)
# 実際のモーフ割り当ては VRM Add-on UI か、このスクリプトを拡張して行う。
happy / sad / relaxed を使い、surprised を追加します。MorphTarget の重みは VRM 0.x の 0-100 ではなく 0-1 です。Step 5:LookAt を設定する
LookAt はキャラクターの目をターゲットに向けます。AniMate ではマウスカーソルを自然に目で追う動きに使えます。
| モード | 実装 | 向いているモデル |
|---|---|---|
| Bone | leftEye と rightEye を回転 | 目ボーンが分かれているモデル |
| Expression | lookUp / lookDown / lookLeft / lookRight を駆動 | テクスチャ目の MMD モデルに多い |
左目 / 右目 という名前のボーンがあれば Bone モードを試します。目が顔メッシュの一部でテクスチャ表現なら Expression モードにします。MMD モデルの多くは後者です。LookAt Space とオフセット
LookAt は head ボーンに親子付けされた LookAt Space を使います。offsetFromHeadBone は目の原点、通常は両目の間を指定します。
LookAt Space
|-- Parent: head bone(頭と一緒に動く)
|-- Origin offset: offsetFromHeadBone(例 [0, 0.06, 0])
+-- Rotation: 頭ボーンの静的モデル空間回転の逆行列
RangeMap:目の動く範囲を制御する
| プロパティ | 意味 |
|---|---|
rangeMapHorizontalInner | 鼻側への内側水平回転 |
rangeMapHorizontalOuter | 耳側への外側水平回転 |
rangeMapVerticalDown | 下方向の垂直回転 |
rangeMapVerticalUp | 上方向の垂直回転 |
各 RangeMap には inputMaxValue と outputScale があります。inputMaxValue を小さくすると同じ角度で目が大きく動き、outputScale は Bone モードなら度数、Expression モードなら 0-1 の表情重みです。
inputMaxValue を 90 から 45 に下げるか outputScale を上げます。動きすぎなら逆にします。Step 6:マテリアルを MToon に変換する
PMX と VRM ではマテリアルシステムが異なります。VRM では VRMC_materials_mtoon 拡張で定義されるアニメ調シェーダー MToon を推奨します。MToon はランバート風ライティングに、明暗2色、トゥーン境界、リムライト、アウトラインを組み合わせ、手描き風の見た目を保ちます。
- モデルのメッシュを選択します。
- マテリアルプロパティで各マテリアルを処理します。
- MMD マテリアルからMToonへ変換します。
Alpha Mode と透過
| プロパティ | 意味 | 推奨 |
|---|---|---|
| Alpha Mode | OPAQUE / MASK / BLEND | 肌: OPAQUE、髪の端: MASK、レース: BLEND |
| transparentWithZWrite | BLEND 描画中に深度を書き込む | 半透明オブジェクトのソートが必要なとき有効 |
| renderQueueOffsetNumber | BLEND 用の描画キューオフセット | 透過オブジェクト同士のめり込み補正 |
描画順は OPAQUE > MASK > BLEND + ZWrite > BLEND です。
明色と陰色
| プロパティ | 意味 | 推奨 |
|---|---|---|
Lit Color(baseColorFactor) | 明るい側の色 + テクスチャ | 元の PMX ベーステクスチャ |
Shade Color(shadeColorFactor) | 影側の色 + テクスチャ | 元テクスチャか少し暗い色。純黒より自然 |
従来の Lambert モデルは影側が真っ黒になりやすいですが、MToon は影の色を指定できるため、セルルックを保ちやすいです。
トゥーン境界の制御
| プロパティ | デフォルト | 意味 |
|---|---|---|
| shadingToonyFactor | 0.9 | 明暗境界の鋭さ。1に近いほどハードなセルエッジ、0に近いほどグラデーション |
| shadingShiftFactor | 0.0 | 境界位置のシフト。正の値で明部が広がる |
| shadingShiftTexture | — | R チャンネルで領域ごとの境界位置を制御 |
多くのアニメ調モデルでは shadingToonyFactor を 0.8〜1.0 にします。
リムライト
| 要素 | プロパティ | 意味 |
|---|---|---|
| MatCap | matcapFactor + matcapTexture | ビュー空間ノーマルでテクスチャをサンプリングする固定ハイライト |
| Parametric Rim | parametricRimColorFactor、parametricRimFresnelPowerFactor(既定5.0)、parametricRimLiftFactor(既定0.0) | フレネル計算によるリムライト |
| Rim Mask | rimMultiplyTexture | リムライトが出る場所を制限 |
髪には薄い青や紫のリムライトを入れ、Fresnel Power を3〜5にすると柔らかい逆光エッジになります。
アウトライン
| プロパティ | 意味 |
|---|---|
outlineWidthMode | none / worldCoordinates / screenCoordinates |
outlineWidthFactor | 線の太さ。world はメートル、screen は画面高比率 |
outlineWidthMultiplyTexture | G チャンネルで領域ごとの太さを制御 |
outlineColorFactor | 線の色 |
outlineLightingMixFactor | 0 はフラットな線、1 は表面ライティングを掛ける |
shadingToonyFactor を調整します。MToon は頂点カラーを無視するため、テクスチャやマテリアル設定で補ってください。UV アニメーション
| プロパティ | デフォルト | 意味 |
|---|---|---|
uvAnimationScrollXSpeedFactor | 0.0 | 1秒あたりの X 方向 UV スクロール速度 |
uvAnimationScrollYSpeedFactor | 0.0 | 1秒あたりの Y 方向 UV スクロール速度 |
uvAnimationRotationSpeedFactor | 0.0 | UV 中心 (0.5, 0.5) 周りの回転速度(ラジアン/秒) |
テクスチャチャンネルのまとめ
| チャンネル | テクスチャ |
|---|---|
| R | shadingShiftTexture |
| G | outlineWidthMultiplyTexture |
| B | uvAnimationMaskTexture |
shadingToonyFactor = 0.9 にしてから個別に微調整します。Step 7:Spring Bone 物理を設定する
VRM では髪、衣装、アクセサリー、しっぽを Spring Bone で揺らします。PMX には MMD の物理データが入っていても、VRM では SpringChain として再構築する必要があります。
| 対象 | 例 |
|---|---|
| 髪 | 髪の毛先のボーンチェーン |
| 胸 | 必要に応じて胸の物理 |
| 衣装 | スカート、マント、リボン、長袖 |
| アクセサリー | リボン、しっぽ、浮遊小物 |
SpringChain の構造
VRM Spring Bone は物理を SpringChain にまとめ、各チェーンが順番に並んだジョイントを持ちます。チェーン a-b-c-d では、ランタイムが次の head-tail ペアを作ります。
head(回転) tail(位置 + 衝突)
a -> b
b -> c
c -> d
- head ノードの回転は tail ノードの変位から計算します。
- 最後のジョイントは tail としてだけ働き、自身のパラメータは無視されます。
- 最後のセグメントも揺らすには、末尾に空ボーンを追加します。
joints[n] は joints[n+1] の親または祖先でなければなりません。1つのジョイントを複数の SpringChain に含めることはできません。分岐する髪は実行順が未定義のため、別々の SpringChain にします。Spring Bone ジョイントのパラメータ
| パラメータ | 型 | 意味 | 調整 |
|---|---|---|---|
hitRadius | float(メートル) | ジョイントの衝突半径 | ボーン長の小さな割合、例 0.02〜0.05 |
stiffness | float(>=0) | 初期姿勢へ戻す力 | 小さいと柔らかく、大きいと硬い |
gravityPower | float | 毎フレームの重力 | 大きいと垂れやすい。0 で無効 |
gravityDir | float[3] | 重力方向 | 通常 [0, -1, 0] |
dragForce | float(0-1) | 減衰 / 慣性の減り方 | 小さいと揺れ続け、大きいとすぐ止まる |
Verlet 積分の処理
Step 1: 慣性
inertia = (currentTail - prevTail) x (1.0 - dragForce)
spring = deltaTime x parentWorldRotation x initialLocalRotation x boneAxis x stiffness
gravity = deltaTime x gravityDir x gravityPower
nextTail = currentTail + inertia + spring + gravity
nextTail = worldPosition + (nextTail - worldPosition).normalized x boneLength
Step 2: 衝突
SpringChain に割り当てた各コライダーについて、
ジョイント tail との距離が0を下回ったら押し出し、
ボーン長を再制約する。
Step 3: 回転の適用
prevTail = currentTail
currentTail = nextTail
to = (nextTail x inverse(parentWorldMatrix x initialLocalMatrix)).normalized
node.rotation = initialLocalRotation x fromToQuaternion(boneAxis, to)
コライダー
| タイプ | パラメータ | 用途 |
|---|---|---|
| Sphere | offset、radius | 頭、胸、手 |
| Capsule | offset、radius、tail | 胴体、もも、腕 |
Center Space
Spring Bone はデフォルトでワールド空間で評価します。VRM 1.0 では center ノードを基準空間にできます。慣性は center 空間、重力はワールド空間のままです。キャラクターが動いたとき髪が激しく振れすぎるなら、center を head ボーンに設定すると頭の動きへ追従しやすくなります。
Blender で Spring Bone を追加する
- アーマチュアを選択します。
- VRM パネルのSpring Boneエリアを開きます。
- Spring Bone Group(1つの SpringChain)を追加します。
- チェーンの Root Bones を設定します。
stiffness、gravityPower、dragForceを調整します。- 必要なら Collider Group を追加します。
Unity で調整する(上級)
より細かい物理を調整したい場合は、Blender で基本変換を済ませ、VRM を Unity にインポートして UniVRM で Spring Bone を設定します。UniVRM のビジュアルコライダー編集は微調整に向いています。
| パラメータ | Unity コンポーネント | 意味 |
|---|---|---|
stiffness | VRM10SpringBoneJoint.m_stiffnessForce | 硬さ |
dragForce | VRM10SpringBoneJoint.m_dragForce | 減衰 |
gravityPower | VRM10SpringBoneJoint.m_gravityPower | 重力の強さ |
hitRadius | VRM10SpringBoneJoint.m_hitRadius | 衝突半径 |
| コライダー | VRM10SpringBoneCollider | Sphere / Capsule |
Step 8:メタデータを入力して VRM を書き出す
VRM パネルのMetaエリアでモデル情報(VRMC_vrm.meta)を入力します。
| 項目 | 意味 | 例 |
|---|---|---|
| Name / Title | モデル名 | My School Uniform Avatar |
| Author | 作者名 | 自分の名前またはモデル作者 |
| Version | バージョン | 1.0 |
| Description | モデルの説明 | MMD PMX から変換し、VRM 1.0 のデスクトップ用に調整 |
| License | 利用ライセンス | readme を読んで選択 |
| Avatar Permission | 他人のアバターとしての利用可否 | Only allowed / allowed / disallowed |
| Allow Excessively Violent Usage | 過激な暴力表現の可否 | Allowed / disallowed |
| Allow Excessively Sexual Usage | 性的表現の可否 | Allowed / disallowed |
| Commercial Usage | 商用利用 | Allowed / disallowed |
| Third Party Licenses | 第三者ライセンスの注記 | 元モデル作者の規約を添付 |
VRM ライセンスフラグ
| ライセンス | 意味 |
|---|---|
| Redistribution | 再配布の可否 |
| Modification | 改変の可否 |
| Credit | クレジット表記の要否 |
書き出し前チェック
- モデルがT-Pose(腕を伸ばし、手のひらを下に向けた姿勢)であることを確認します。VRM Humanoid は T-Pose を初期姿勢とするため、別のポーズだとインポート後にアニメーションがずれます。
- 書き出しバージョンを選びます。デスクトップコンパニオンと新しいプラットフォームは VRM 1.0、古い互換性が必要なら VRM 0.x。
- ファイル → エクスポート → VRM (.vrm)を実行します。
- 保存先と書き出し設定を確認して完了します。
最終ステップ:変換した VRM を AniMate にインポートする
`.vrm` を書き出したら完成ではありません。AniMate にインポートする前に、次のチェックリストを確認しましょう。
- 骨格:必須 Humanoid ボーンがすべて割り当てられ、腕、脚、頭の自動マッピングに抜けがない。
- 表情:瞬き、口パク、感情表現があり、必要な箇所で VRM 1.0 の Override が blend になっている。
- マテリアル:透過マテリアルが黒くならず、MToon の明暗境界が意図通り。
- 物理:髪やスカートが目立ってめり込まず、頭と胴体にコライダーがある。
- ライセンス:Meta の項目が元の readme と一致している。
AniMate ではデスクトップキャラクターを右クリックして Workshop(工房)を開き、キャラクターを追加から書き出した `.vrm` を選択します。読み込み後はサイズ、位置、マウス反応を調整し、Workshop でモーション、ダンス、ステージを追加できます。AniMate は VRM 0.x と VRM 1.0 を直接インポートでき、キャラクター、モーション、ダンス、音楽連動アセットを1つのライブラリで管理します。
関連ページ
| トピック | ページ |
|---|---|
| VRM デスクトップコンパニオンとは | VRM デスクトップコンパニオン |
| すでに `.vrm` を持っている場合 | VRM インポートガイド |
| モデルを探す | 無料 VRM モデル一覧、VRM モデルの探し方 |
| ダウンロードと整理 | VRM モデルダウンロード完全ガイド |
| ダンスやステージを追加する | AniMate Workshop、ダンス・ステージガイド |
| VRM モデルをゼロから作る | AI と Codex で VRM モデルを作る、デスクトップマスコットの作り方 |
よくある質問
AniMate は PMX ファイルを直接読み込めますか?
AniMate は VRM デスクトップコンパニオンを前提としているため、`.vrm` が最も確実です。PMX は Blender と VRM Add-on、または Unity と UniVRM で変換してからインポートしてください。
3D ソフトの経験がなくても PMX を VRM に変換できますか?
はい。Blender と VRM Add-on を使えば、プラグインのインストール、PMX のインポート、VRM Model の作成、各パネルでのボーン・表情・マテリアル・物理の設定まで、ほとんどの作業をスクリプトなしで進められます。
VRM 0.x と VRM 1.0 はどちらを選べばよいですか?
新規のデスクトップコンパニオン用途では VRM 1.0 を推奨します。表情名の統一、Expression Override による競合制御、Spring Bone の仕様がより整っているためです。古いプラットフォームで必要な場合だけ VRM 0.x を使います。
変換後に髪やスカートの物理が劣化するのはなぜですか?
VRM Spring Bone は剛体物理ではなく粒子バネ方式です。SpringChain の親子関係を確認し、hitRadius、stiffness、gravityPower、dragForce を調整したうえで、頭部と胴体にコライダーを追加してください。
他人の MMD モデルを変換して商用利用できますか?
まずモデルの readme を確認してください。多くの MMD モデルは商用利用と再配布を禁止しており、改変、配信、商用利用の可否は作者のライセンスごとに確認する必要があります。
変換した MMD キャラクターをデスクトップに
まず AniMate の内蔵モデルで体験を確認し、その後変換した VRM をインポートしてキャラクター、モーション、ダンスを Workshop で管理しましょう。