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
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
pathstringVRMのファイルパス
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
loopboolVRM Animationをループ実行したい場合は
true、そうでなければfalseimmediatebool補間を行わずにただちに指定したアニメーションを再生する場合は
true、現在のポーズとの補間を行う場合はfalse
Remarks
v4.0.0の時点では immediate オプションの値によらず、補間を行わない動作が適用されます。
このフラグは将来のバージョンで参照されるようになります。
バージョンアップによる挙動変更を避けたい場合、 immediate の値としては true を指定してください。
SetBlendShape(string, bool, float)
ロードしたモデルについて、ブレンドシェイプの値を適用します。
void SetBlendShape(string name, bool customClip, float value)
Parameters
namestringブレンドシェイプの名称
customClipboolVRM1.0の標準ブレンドシェイプに値を適用する場合は
false、カスタムのブレンドシェイプに適用する場合はtruevaluefloat適用するブレンドシェイプの値。 [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
positionVector3Hipsボーンの位置
Remarks
SetParent(IReadOnlyTransform3D) などで親オブジェクトを指定している場合、
position は親要素に対するローカルな位置として扱われます。
そうでない場合、position はワールド座標の位置として扱われます。
SetHipsPosition(Vector3)
ロードしたモデルについて、Hipsボーンの位置をワールド座標扱いで指定してモデルの現在位置を更新します。
void SetHipsPosition(Vector3 position)
Parameters
positionVector3Hipsボーンの位置
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 を指定してください。