Vixxyを使用したエフェクトの切り替えとトリガー
- This page is available in English: English
Vixxyは、Basis Frameworkプロジェクトにおいて、アバターのエフェクトを切り替えたりトリガーしたりするための、ユーザーがアクセス可能なインターフェースです。
主に、プログラマーではないユーザーがUnityインスペクターを通じて直接使用することを想定しています。
エフェクトは、メニュー、音声、アバターのさまざまな測定値、フェイストラッキング、または外部のハードウェアやソフトウェアからの入力に基づいてトリガーできます。
オブジェクトのON/OFFの切り替え 、シェーダーのマテリアル設定の変更、ブレンドシェイプ、マテリアル内のテクスチャ、TextMeshProコンポーネント内のテキストなどを変更できます。
インストール
Vixxyは、2026年5月1日以降、公式のBasis FrameworkリポジトリのBasis/Packages/dev.hai-vr.basis.comms/フォルダにデフォルトで含まれています。
Basis Demo(現在はBasis Labsと呼ばれています)アプリケーションの参加者は、通常のアバター作成手順に従ってください。
新しく追加された機能を利用するには、プロジェクトを更新する必要がある場合があります。
開発者向けの序文
Vixxyは、Basisでエフェクトを作成するためのさまざまな方法の1つです。主に非プログラマーのユーザーが利用しやすいように設計されていますが、開発者も使用できます。
とはいえ、あなたがソフトウェア開発者であれば、他のアプローチを検討することをお勧めします:
- アプリケーション開発者であれば、Basis Frameworkアバター通信APIを直接 使用する。
- Cilboxによるスクリプト作成を検討し、GameObjectやコンポーネントを直接変更する。
VixxyのネットワーキングはBasis Frameworkアバター通信APIを使用して構築されていますが、それ以外は純粋なUnityソフトウェアです。 Vixxyコードの大部分は、Basis Framework APIに依存せずにシングルプレイヤーで使用できます。
メニューで切り替えを作成する
アバターに新しいGameObjectを作成し、HVR Vixxy Controlコンポーネントを追加します。
What activates this controlで*Select...*をクリックし、Menu Itemを選択します。このボタンをクリックすると、このコンポーネントの上にHVR Vixxy Menuコンポーネントが自動的に作成されます。

オブジェクトをToggle Objectsカテゴリにドラッグします。
各オブジェクトの横にチェックボックスが表示されます。このチェックボックスは、各選択肢に対するオブジェクトの表示/非表示を定義します。
- #1はメニューがOFFであることに対応します。これにチェックを入れると、メニューがOFFのときにオブジェクトが表示されます。チェックを外すと、OFFのときに非表示になります。
- #2はメニューがONであることに対応します。これにチェックを入れると、メニューがONのときにオブジェクトが表示されます。チェックを外すと、ONのときに非表示になります。
メニューのデフォルト値を変更するには、上部にある対応する選択肢のDefaultボタンをクリックします。

オブジェクトそのものではなくコンポーネントを切り替えたい場合は、オブジェクトをToggle Objectsカテゴリにドラッグしてから、ドロップダウンで目的のコンポーネントを選択します。
HVR Vixxy Controlコンポーネントを追加すると、アバターにHVR.Networkingというプレハブが追加されているはずです。
このコンポーネントは、アバターのネットワーク通信を担当します。こ のプレハブはルートに置いておいてください。
3つ以上の選択肢を使用する
3つ以上の選択肢が必要な場合は、上部にある*"+ Add choice"*ボタンをクリックします。
選択肢を追加した後は、各選択肢に説明(Description)を入力してください。この説明がメニューに表示されます。
新しい選択肢が増えるごとに、トグルにはさらに多くのチェックボックスが表示されます(#3、#4など)。選択肢に応じて各オブジェクトの状態を制御するために、チェックボックスをオンまたはオフにします。

メニューを設定する
先ほど作成されたHVR Vixxy Menu Itemコンポーネントを通じて、メニューのタイプを変更できます。
実現可能なコントロールには3つのタイプがあります:
- 2つの選択肢(OFF/ON)の切り替え。
- 3つ以上の選択肢からのドロップダウン選択。
- 任意の数の選択肢の間で使用できるスライダー。

オブジェクトの切り替えやエフェクトのトリガーはメニューだけではありません。エフェクトは、さまざまな測定値や音声を使用してトリガーすることもできます。
これについては、このページの後半にある**メニューなしでエフェクトをトリガーする**で説明されています。
これらのコントロールは、アプリ内の*"Settings > Avatar Customization"*からアクセスできます。

プロパティの変更(ブレンドシェイプ、シェーダーなど)
ブレンドシェイプの値を変更したり 、マテリアル内の値を変更してシェーダーに影響を与えたりする必要がある場合は、Change Propertiesカテゴリを開きます。
最初のオブジェクトグループを作成する
Change Propertiesカテゴリで、+をクリックしてグループを作成します。
変更したいオブジェクトをそのグループにドラッグします。
プロパティの検索
下に表示されるコンポーネントで、Properties、Materials、BlendShapesのいずれかをクリックして、影響を与えたいプロパティの検索を開始します。
上部に検索フィールドが表示されます。探しているプロパティに対応する文字を数文字入力し、*"Add"*ボタンを押して追加します。
完了したら、右上の _ ボタンを押して検索を最小化します。

プロパティの編集
各選択肢に対して異なる値を入力して、プロパティを編集します。
値の右側にある下向き矢印ボタン ⤓ を押すと、シーンから現在の値をサンプリングできます。

利用可能な機能
現在のバージョンでは以下のことが可能です:
- ✅ GameObjectや多くのコンポーネントタイプのON/OFFの切り替え(前述のToggle Objectsセクションを使用)。
- ✅ ブレンドシェイプの値を変更。
- ✅ マテリアルプロパティのfloat値を変更。
- ✅ マテリアルプロパティのカラー値を変更。
- ✅ オブジェクトの移動、回転、スケール。開始: 2026年5月21日
アニメーションベースのシステムに慣れている方にとっては不可能だった、特筆すべき機能は以下の通りです:
- ✅ マテリアルプロパティのテクスチャスロットを変更。
- ✅ TextMeshPro / TextMeshProUGUI / Textコンポーネントのテキスト文字列を、浮動小数点数の書式付きで変更。
現在のバージョンでは、以下はまだ利用できません。
- ❌ Rendererのマテリアルスロットの変更。
- ❌ その他のプロパティの変更。
複数のオブジェクトグループ
異なるオブジェクトのプロパティを異なる方法で変更する必要がある場合は、+を押して別のグループを作成します。
TextMeshPro内に数値を表示する
TextMeshProコンポーネントおよびTextコンポーネント内のテキストを変更できます。使い始めるための例をいくつか挙げます。
{0}、{0:0}、または {0:0.00} を使用して絶対値を表示できます。
値が 93.1234 の場合:
Heart rate: {0}は Heart rate: 93.1234 と表示されますHeart rate: {0:0}は Heart rate: 93 と表示されますHeart rate: {0:0.0}は Heart rate: 93.1 と表示されますHeart rate: {0:0.00}は Heart rate: 93.12 と表示されます
値が0.0で0%、1.0で100%を表す場合、{1}、{1:0}、または {1:0.00} を使用してパーセンテージとして表示できます。必要なければパーセント記号を表示する必要はありません。
値が 0.123456 の場合:
Power: {1}%は Power: 12.3456% と表示されますPower: {1:0}%は Power: 12% と表示されますPower: {1:0.0}%は Power: 12.3% と表示されますPower: {1:0.00}%は Power: 12.34% と表示されます
コンピューターのOS言語がフランス語に設定されていても、小数点記号には常にピリオド . が使用されます。
トランジション
トグルが完全にONまたはOFFになる前に、トランジション時間を導入することを選択できます。
Transition設定は常に表示されており、選択肢の下の上部付近にあります。デフォルトではトランジションはありません。
簡易トランジション (Simplified Transition)
Transition設定をSimplifiedに設定すると、トランジション時間を秒単位で指定できます。
トランジション時間は、最小値の選択肢から最大値の選択肢に移行するのにかかる時間です。

高度なトランジション (Advanced Transitions)
Transition設定をAdvancedに設定すると、AdvancedセクションにAdvanced Transitionという新しいタブが表示されます。
- Smooth towards value: 目標値に近づくにつれてトランジションが速く始まり、ゆっくりと進みます。
- これはスライダーや、中間値が極端な値と同じくらい重要な一部のコントロールに適しています。
- Linear towards value: トランジションは目標値に向かって線形に進みます。
- これはトグルとスライダーの両方に適しています。
- Linear towards value は Curve とうまく組み合わせることができます:入力値をリマップして曲線に従わせることができます。
- Linear towards value と Curve の組み合わせはトグルには適していますが、スライダーには適していません。
- Linear towards value と Curve を組み合わせる場合、Curve は通常、リストの最後の項目にする必要があります。
Simplifiedトランジションは2つのフィルターを使用します:
- 1番目のスロット:
(最大値 - 最小値) * トランジション時間に等しい秒/ユニット(Seconds Per Unit)を持つ Linear towards value - 2番目のスロット:イーズイン・アウトの形状で
t=最小値, value=最小値からt=最大値, value=最大値に移行する Curve

トランジションカーブの追加
Transitionsセクションでは、入力値に特定のしきい値を適用したい場合、トランジション時間の効果なしで Curve を単独で使用することもできます。
Smooth towards value を使用しているときにトランジションカーブを使用することは推奨されません。
秒/ユニット (Seconds per unit)
トランジション時間は秒/ユニットで定義されますが、多くの場合、秒単位のトランジション時間と同じであると考えてそのままにしておいても構いません。
トランジションに0.5秒かかかるようにしたい場合は、0.5に設定してください。
細かい詳細は以下の通りです:これは、値0から値1に移行するのにかかる秒数を意味します。
単純なトグルの場合のように、選択肢が2つだけで、選択肢のデフォルト値を維持している場合、duration in seconds per unit は単に 秒単位の時間 を意味します:
- 値0から1へのトランジションは、1 second per unit で1秒かかります。
- 値0から1へのトランジションは、0.5 second per unit で0.5秒かかります。
**ただし、**多肢選択のスライダーがある場合、各選択肢に値が割り当てられ、選択肢の値を変更していない場合、それらの値は0、1、2になる可能性があります。この場合:
- 値0から2へのトランジションは、1 second per unit で2秒かかります。
- 値0から2へのトランジションは、0.5 second per unit で1秒かかります。
選択肢の値を0、0.5、1、あるいは好きな値に変更することもできます。