Interface IVrm
- Namespace
- VMagicMirror.Buddy
サブキャラとしてVRMのロードと操作を行うAPIです。 本APIは作成途上のものであり、VMagicMirror v4.0.0の時点では本APIは利用できません。
public interface IVrmRemarks
本APIはVRMのロードと操作を行うためのAPIです。 VMagicMirror v4.0.0の時点では機能整備が完了していないため、本APIの利用手段は提供していません。 ここでは、想定している機能を提示する目的でドキュメントを公開しています。
VRMやGLBによる3Dオブジェクトをサブキャラとして表示する機能は、 v4.0.0 以降のマイナーアップデートとして提供予定です。
Properties
Transform
オブジェクトの基本姿勢に関する値を取得します。
ITransform3D Transform { get; }Property Value
Methods
GetBlendShape(string, bool)
ロードしたモデルについて、ブレンドシェイプの現在値を取得します。
float GetBlendShape(string name, bool customClip)Parameters
Returns
- float
- 現在適用されているブレンドシェイプの値 
Remarks
指定したブレンドシェイプがモデルに存在しない場合、この関数は 0 を返します。
GetCustomBlendShapeNames()
モデルに定義されたカスタムブレンドシェイプの名称の一覧を取得します。
string[] GetCustomBlendShapeNames()Returns
- string[]
HasBlendShape(string)
ロードしたモデルに指定した名称のカスタムブレンドシェイプが存在するかどうかを取得します。
bool HasBlendShape(string name)Parameters
- namestring
- カスタムブレンドシェイプの名称 
Returns
- bool
- 指定した名称のカスタムブレンドシェイプが存在すれば - true、そうでなければ- false
Hide()
モデルを非表示にします。
void Hide()LoadAsync(string)
ファイルパスを指定してVRMをロードします。
Task LoadAsync(string path)Parameters
- pathstring
- VRMのファイルパス 
Returns
LoadPresetAsync(string)
名称を指定してプリセットVRMをロードします。
Task LoadPresetAsync(string name)Parameters
- namestring
Returns
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
- animationIVrmAnimation
- 対象になるVRM Animation 
- loopbool
- VRM Animationをループ実行したい場合は - true、そうでなければ- false
- immediatebool
- 補間を行わずにただちに指定したアニメーションを再生する場合は - true、現在のポーズとの補間を行う場合は- false
Remarks
v4.0.0の時点では immediate オプションの値によらず、補間を行わない動作が適用されます。
このフラグは将来のバージョンで参照されるようになります。
バージョンアップによる挙動変更を避けたい場合、 immediate の値としては true を指定してください。
SetBlendShape(string, bool, float)
ロードしたモデルについて、ブレンドシェイプの値を適用します。
void SetBlendShape(string name, bool customClip, float value)Parameters
- namestring
- ブレンドシェイプの名称 
- customClipbool
- VRM1.0の標準ブレンドシェイプに値を適用する場合は - false、カスタムのブレンドシェイプに適用する場合は- true
- valuefloat
- 適用するブレンドシェイプの値。 [0, 1] の範囲で指定します 
Remarks
指定したブレンドシェイプがモデルに存在しない場合、この関数を呼んでも何も起こりません。
SetBoneRotation(HumanBodyBones, Quaternion)
ボーンのローカル回転を設定します。
void SetBoneRotation(HumanBodyBones bone, Quaternion localRotation)Parameters
- boneHumanBodyBones
- 回転を設定するボーン 
- localRotationQuaternion
- ボーンのローカル回転 
Remarks
指定したボーンが任意ボーンであり、そのボーンが存在しない場合、この関数を呼び出しても何も起こりません。
SetBoneRotations(IReadOnlyDictionary<HumanBodyBones, Quaternion>)
ロードしたモデルについて、ボーンのローカル回転を一括で適用します。
void SetBoneRotations(IReadOnlyDictionary<HumanBodyBones, Quaternion> localRotations)Parameters
- localRotationsIReadOnlyDictionary<HumanBodyBones, Quaternion>
- 回転を適用したいボーンをキー、ローカル回転を値としたディクショナリ 
Remarks
ボーン回転を更新したくないボーンについては、キーを含めないようにします。 任意ボーンについて、モデルに該当するボーンが存在しない場合、その値は無視されます。
SetHipsLocalPosition(Vector3)
ロードしたモデルについて、Hipsボーンの位置をローカル座標扱いで指定してモデルの現在位置を更新します。
void SetHipsLocalPosition(Vector3 position)Parameters
- positionVector3
- Hipsボーンの位置 
Remarks
SetParent(IReadOnlyTransform3D) などで親オブジェクトを指定している場合、
position は親要素に対するローカルな位置として扱われます。
そうでない場合、position はワールド座標の位置として扱われます。
SetHipsPosition(Vector3)
ロードしたモデルについて、Hipsボーンの位置をワールド座標扱いで指定してモデルの現在位置を更新します。
void SetHipsPosition(Vector3 position)Parameters
- positionVector3
- Hipsボーンの位置 
SetMuscles(float?[])
ロードしたモデルについて、モデルの姿勢をMuscle値ベースで適用します。
void SetMuscles(float?[] muscles)Parameters
- musclesfloat?[]
- 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
- immediatebool
- 補間を行わずにただちに停止させる場合は - true、現在のポーズとの補間を行いながら停止させる場合は- false
Remarks
VRM Animationを再生していない状態でこの関数を呼び出した場合、何も起こりません。
v4.0.0の時点では immediate オプションの値によらず、補間を行わない動作が適用されます。
このフラグは将来のバージョンで参照されるようになります。
バージョンアップによる挙動変更を避けたい場合、 immediate の値としては true を指定してください。