Table of Contents

Interface IVrm

Namespace
VMagicMirror.Buddy

サブキャラとしてVRMのロードと操作を行うAPIです。 本APIは作成途上のものであり、VMagicMirror v4.0.0の時点では本APIは利用できません。

public interface IVrm

Remarks

本APIはVRMのロードと操作を行うためのAPIです。 VMagicMirror v4.0.0の時点では機能整備が完了していないため、本APIの利用手段は提供していません。 ここでは、想定している機能を提示する目的でドキュメントを公開しています。

VRMやGLBによる3Dオブジェクトをサブキャラとして表示する機能は、 v4.0.0 以降のマイナーアップデートとして提供予定です。

Properties

Transform

オブジェクトの基本姿勢に関する値を取得します。

ITransform3D Transform { get; }

Property Value

ITransform3D

Methods

GetBlendShape(string, bool)

ロードしたモデルについて、ブレンドシェイプの現在値を取得します。

float GetBlendShape(string name, bool customClip)

Parameters

name string
customClip bool

VRM1.0の標準ブレンドシェイプの値を取得する場合は false、カスタムのブレンドシェイプの値を取得する場合は true

Returns

float

現在適用されているブレンドシェイプの値

Remarks

指定したブレンドシェイプがモデルに存在しない場合、この関数は 0 を返します。

GetCustomBlendShapeNames()

モデルに定義されたカスタムブレンドシェイプの名称の一覧を取得します。

string[] GetCustomBlendShapeNames()

Returns

string[]

HasBlendShape(string)

ロードしたモデルに指定した名称のカスタムブレンドシェイプが存在するかどうかを取得します。

bool HasBlendShape(string name)

Parameters

name string

カスタムブレンドシェイプの名称

Returns

bool

指定した名称のカスタムブレンドシェイプが存在すれば true、そうでなければfalse

Hide()

モデルを非表示にします。

void Hide()

LoadAsync(string)

ファイルパスを指定してVRMをロードします。

Task LoadAsync(string path)

Parameters

path string

VRMのファイルパス

Returns

Task

LoadPresetAsync(string)

名称を指定してプリセットVRMをロードします。

Task LoadPresetAsync(string name)

Parameters

name string

Returns

Task

Remarks

プリセットVRMとは、アプリケーション本体に組み込まれたVRMのことです。 このメソッドでVRMをロードする場合、事前にVRMを用意する必要はありません。

v4.0.0では name に指定できる値は "A" のみです。 これ以外の名称を指定した場合、 LoadAsync(string) で存在しないファイルを指定した場合と同様のエラーになります。

RunVrma(IVrmAnimation, bool, bool)

VRM Animationを再生します。

void RunVrma(IVrmAnimation animation, bool loop, bool immediate)

Parameters

animation IVrmAnimation

対象になるVRM Animation

loop bool

VRM Animationをループ実行したい場合は true、そうでなければfalse

immediate bool

補間を行わずにただちに指定したアニメーションを再生する場合は true、現在のポーズとの補間を行う場合は false

Remarks

v4.0.0の時点では immediate オプションの値によらず、補間を行わない動作が適用されます。 このフラグは将来のバージョンで参照されるようになります。 バージョンアップによる挙動変更を避けたい場合、 immediate の値としては true を指定してください。

SetBlendShape(string, bool, float)

ロードしたモデルについて、ブレンドシェイプの値を適用します。

void SetBlendShape(string name, bool customClip, float value)

Parameters

name string

ブレンドシェイプの名称

customClip bool

VRM1.0の標準ブレンドシェイプに値を適用する場合は false、カスタムのブレンドシェイプに適用する場合は true

value float

適用するブレンドシェイプの値。 [0, 1] の範囲で指定します

Remarks

指定したブレンドシェイプがモデルに存在しない場合、この関数を呼んでも何も起こりません。

SetBoneRotation(HumanBodyBones, Quaternion)

ボーンのローカル回転を設定します。

void SetBoneRotation(HumanBodyBones bone, Quaternion localRotation)

Parameters

bone HumanBodyBones

回転を設定するボーン

localRotation Quaternion

ボーンのローカル回転

Remarks

指定したボーンが任意ボーンであり、そのボーンが存在しない場合、この関数を呼び出しても何も起こりません。

SetBoneRotations(IReadOnlyDictionary<HumanBodyBones, Quaternion>)

ロードしたモデルについて、ボーンのローカル回転を一括で適用します。

void SetBoneRotations(IReadOnlyDictionary<HumanBodyBones, Quaternion> localRotations)

Parameters

localRotations IReadOnlyDictionary<HumanBodyBones, Quaternion>

回転を適用したいボーンをキー、ローカル回転を値としたディクショナリ

Remarks

ボーン回転を更新したくないボーンについては、キーを含めないようにします。 任意ボーンについて、モデルに該当するボーンが存在しない場合、その値は無視されます。

SetHipsLocalPosition(Vector3)

ロードしたモデルについて、Hipsボーンの位置をローカル座標扱いで指定してモデルの現在位置を更新します。

void SetHipsLocalPosition(Vector3 position)

Parameters

position Vector3

Hipsボーンの位置

Remarks

SetParent(IReadOnlyTransform3D) などで親オブジェクトを指定している場合、 position は親要素に対するローカルな位置として扱われます。 そうでない場合、position はワールド座標の位置として扱われます。

SetHipsPosition(Vector3)

ロードしたモデルについて、Hipsボーンの位置をワールド座標扱いで指定してモデルの現在位置を更新します。

void SetHipsPosition(Vector3 position)

Parameters

position Vector3

Hipsボーンの位置

SetMuscles(float?[])

ロードしたモデルについて、モデルの姿勢をMuscle値ベースで適用します。

void SetMuscles(float?[] muscles)

Parameters

muscles float?[]

Muscle値の一覧

Remarks

この関数はUnityのHumanoidの仕様を十分理解している場合に、効率的に姿勢を適用する目的で使用します。 muscles は長さが 95 の配列であるのが期待値です。 muscleの一部のみを更新する場合、更新したいmuscleの値のみを有効な値とし、それ以外は null にします。

Show()

LoadAsync(string) でロードしたモデルを表示します。

void Show()

StopVrma(bool)

RunVrma(IVrmAnimation, bool, bool) で再生したVRM Animationを停止します。

void StopVrma(bool immediate)

Parameters

immediate bool

補間を行わずにただちに停止させる場合は true、現在のポーズとの補間を行いながら停止させる場合は false

Remarks

VRM Animationを再生していない状態でこの関数を呼び出した場合、何も起こりません。

v4.0.0の時点では immediate オプションの値によらず、補間を行わない動作が適用されます。 このフラグは将来のバージョンで参照されるようになります。 バージョンアップによる挙動変更を避けたい場合、 immediate の値としては true を指定してください。