スクリプト
VRM Toolkit for AviUtl2
スクリーンショット

概要
VRMモデルを3D配置して表示するカスタムオブジェクト(VRMA対応)
詳細説明
VRM Toolkit for AviUtl2
VRM Toolkit for AviUtl2 は、AviUtl2 上で VRM モデルを 3D 配置し、VRMA 再生と Expression / LookAt 編集を行うためのツールキットです。
含まれる主なコンポーネント:
VRMToolkitModel.obj2- AviUtl2 の 3D 空間に VRM を配置するカスタムオブジェクト
VRMToolkitBridge.mod2- VRM / VRMA の解析、スキニング、モーフ、制約、SpringBone などを行うネイティブモジュール
VRMToolkitExpressionEditor.aux2- Expression / LookAt の JSON タイムラインを編集する専用エディタ
概要
このツールキットは obj2 を表示層として使い、重い処理をできるだけネイティブ側へ寄せる構成です。
主な用途:
- VRM 0.x / 1.0 モデルの表示
- VRMA によるアニメーション再生
- JSON による Expression / LookAt タイムライン制御
- Expression Editor による専用編集
導入方法
配布物は .au2pkg.zip 形式です。
VRM-Toolkit-for-AviUtl2.au2pkg.zipを入手します。.au2pkg.zipを AviUtl2 のプレビュー画面へドラッグ&ドロップしてインストールします。- 導入後、以下が利用可能になります。
VRM Toolkit ModelVRM Toolkit Expression Editor
手動配置する場合の配置先:
Plugin/VRMToolkit/VRMToolkitExpressionEditor.aux2Script/VRMToolkit/VRMToolkitBridge.mod2Script/VRMToolkit/VRMToolkitModel.obj2
キャッシュについて
本ツールキットは、実行時に展開画像や加工済みテクスチャのキャッシュをユーザー環境の一時フォルダ配下へ生成します。
主な保存先:
%TEMP%\aviutl2\VRMToolkitCache
通常、この一時フォルダは AppData\Local\Temp 配下です。
使い方
1. モデルを配置する
VRM Toolkit Modelを追加します。VRMファイルに.vrmを指定します。- 必要に応じて
VRMAファイルに.vrmaを指定します。
2. Expression / LookAt を指定する
VRM Toolkit Model には以下の制御があります。
表情JSON- Expression / LookAt の時系列 JSON
VRMAとJSON合成上書き
上書き はカテゴリ単位です。JSON にそのカテゴリの要素が 1 つでも含まれていれば、そのカテゴリでは VRMA を参照せず JSON を優先します。
カテゴリ:
- 表情
- リップシンク
- 瞬き
- 視線
- カスタム
表情JSON の形式:
- ルートは
{"v":1,...}です e- Expression トラックの配列です
- 各要素は
["名前", [[時刻, 値], ...]]です
l- LookAt トラックです
yが水平角度、pが垂直角度です- 形式は
{"y":[[時刻, 角度], ...], "p":[[時刻, 角度], ...]}です
- 時刻の単位は秒です
- Expression の値は通常
0.0から1.0です l.y/l.pは正規化値ではなく角度値です
最小例:
{"v":1,"e":[["happy",[[0,0],[0.5,1],[1,0]]]],"l":{"y":[[0,0],[1,20]],"p":[[0,0],[1,-10]]}}
例の意味:
happyを 0 秒で 0、0.5 秒で 1、1 秒で 0 に補間- 視線を 1 秒かけて水平 20 度、垂直 -10 度へ移動
補足:
VRM Toolkit Expression Editorはこの compact JSON を直接編集します上書きは「JSON にそのカテゴリのトラックが存在するか」で判定され、定義区間だけでなくカテゴリ全体に適用されます
3. Expression Editor を使う
VRM Toolkit Expression Editor では、Expression / LookAt の JSON タイムラインを編集できます。
主な機能:
- 時系列ベースのキーフレーム編集
- カテゴリごとの表示切替
- 視線の水平 / 垂直編集
- AviUtl2 の現在フレーム位置の表示
VRM 仕様対応
| 要素 | VRM0 | VRM1 | 現状 | 詳細 |
|---|---|---|---|---|
| 基本表示 | 対応 | 対応 | glTF 読み込み、メッシュ表示、スキニング、基本マテリアル表示に対応 | 専用ビューアーと完全同一の見た目は保証しません。 |
| Humanoid 定義の解釈 | 対応 | 対応 | VRM 0.x の humanoid.humanBones 配列形式と、VRM 1.0 の VRMC_vrm.humanoid.humanBones に対応 |
VRMA リターゲットの基礎として利用しています。 |
| VRMA humanoid リターゲット | 対応 | 対応 | VRM1 に加えて VRM0.x にも適用可能 | VRM0.x では基準姿勢差を吸収する補正を入れています。 |
| Expression: morph target bind | 対応 | 対応 | morph target 反映に対応 | 主要な表情変化はここで処理します。 |
| Expression: texture transform bind | 対応 | 対応 | UV の offset / scale を反映 | CPU 側で UV を組み替えて obj2 へ渡しています。 |
| Expression: material color bind | 未対応 | 未対応 | なし | VRM0 materialBind と VRM1 MaterialColorBind は未対応です。obj2 のテクスチャ描画では、テクスチャ色と材質色変更を自然に合成しづらいためです。 |
Expression: isBinary |
対応 | 対応 | isBinary の 0/1 判定を反映 |
サンプルモデルで確認済みです。 |
| Expression: procedural override | ー | 対応 | overrideMouth / overrideBlink / overrideLookAt を反映 |
VRM0 側の仕様外要素です。 |
| LookAt: bone type | ー | 対応 | 視線入力から目ボーン回転を反映 | VRM0 側の仕様外要素です。 |
| LookAt: expression type | ー | 対応 | 視線入力を lookLeft / lookRight / lookUp / lookDown に変換 |
VRM0 側の仕様外要素です。 |
VRMC_node_constraint |
ー | 対応 | roll / aim / rotation を処理 |
VRM0 側の仕様外要素です。 |
VRMC_springBone |
ー | 対応 | VRM 1.0 の SpringBone に対応 | VRM0 側は secondaryAnimation で別対応です。 |
secondaryAnimation |
対応 | ー | VRM0 の旧揺れ物仕様を内部 spring 表現へ変換して処理 | VRM1 側では VRMC_springBone を使用します。 |
KHR_texture_transform |
対応 | 対応 | base UV の offset / scale / rotation を反映 | マテリアルの基本 UV 変形に対応しています。 |
baseColorTexture * baseColorFactor |
対応 | 対応 | テクスチャと baseColorFactor の乗算を反映 | 見た目差が大きかったため優先して実装しています。 |
| MToon: alpha mode / transparentWithZWrite / render queue / UV animation | 一部対応 | 一部対応 | alphaMode / alphaCutoff / transparentWithZWrite / renderQueueOffsetNumber / uvAnimationScrollXSpeedFactor / uvAnimationScrollYSpeedFactor / uvAnimationRotationSpeedFactor を反映 |
この行に含めていない MToon プロパティは、下の「MToon: 詳細仕様」にまとめています。 |
| MToon: toon shading / rim lighting / outline | 未対応 | 未対応 | なし | 現在は obj2 を表示層にしており、専用材質シェーダー前提の描画経路を持っていないためです。 |
MToon: 詳細仕様 (uvAnimationMaskTexture など) |
未対応 | 未対応 | なし | 現時点で未対応なのは、少なくとも shadeColorFactor、shadeMultiplyTexture、shadingShiftFactor、shadingShiftTexture、shadingToonyFactor、giEqualizationFactor、matcapFactor、matcapTexture、parametricRimColorFactor、parametricRimFresnelPowerFactor、parametricRimLiftFactor、rimMultiplyTexture、rimLightingMixFactor、outlineWidthMode、outlineWidthFactor、outlineWidthMultiplyTexture、outlineColorFactor、outlineLightingMixFactor、uvAnimationMaskTexture です。 |
実装方針上の制約
- 描画は
obj2ベースです。 - そのため、AviUtl2 の 3D 空間との整合を優先しており、専用 VRM ビューアーと完全に同一の描画結果を保証するものではありません。
開発者向け情報
ビルド方法、SDK 配置、ディレクトリ構成などの開発者向け情報は DEVELOPMENT.md を参照してください。
ライセンス
このリポジトリのソースコードは MIT License の下で提供します。
免責
本ソフトウェアの利用、導入、改変、再配布、およびこれらに関連して生じた一切の結果について、作者は責任を負いません。利用者の責任で使用してください。