setExpressions
import { Vrm } from "@hmcs/sdk";
vrm.setExpressions(weights) は現在の表情オーバーライドをすべて置換します。レコードに含まれない表情は VRMA アニメーションの制御に戻ります。
const character = await Vrm.findByName("MyAvatar");
// happy と blink をオーバーライド -- 他のすべての表情はアニメーションに戻る
await character.setExpressions({ happy: 1.0, blink: 0.5 });
ヒント
どの表情をオーバーライドするか完全に制御したい場合は setExpressions を使用してください。他のオーバーライドを変更せずに変更をレイヤリングしたい場合は modifyExpressions を使用してください。
例:感情リアクションシーケンス
const character = await Vrm.findByName("MyAvatar");
const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms));
// 驚きリアクション
await character.setExpressions({ surprised: 1.0 });
await sleep(1000);
// 嬉しい表情に移行
await character.setExpressions({ happy: 1.0 });
await sleep(2000);
// アニメーション制御に戻す
await character.clearExpressions();