アバターの構造¶
このページでは、アバターの構造と主要コンポーネントの理解と、自社アプリ側でカスタマイズ可能な範囲について説明します。
アバタープレハブ¶
アバターを直感的に利用しやすいよう、デフォルトのアイテムを保持した状態のプレハブを Assets > AvatarPlay > Prefabs > Avatar.prefab
に収録しています。自社アプリ側でカスタマイズする際は、これをコピーするなどして利用します。
ゲームオブジェクトの階層構造¶
アバタープレハブ直下の Base
というオブジェクト名はSDKが使うために予約されています。Base
と同じ階層に、自社アプリ側で準備したゲームオブジェクトなどを追加可能です。
Base
オブジェクト¶
Base
オブジェクトはアバターの基本ボーン構造を表したゲームオブジェクトであり、元のプレハブは Assets > AvatarPlay > Prefabs > Base.prefab
に配置されています。 Base
オブジェクトはSDKが管理するオブジェクトで、アバターコーデをロード・再ロードする際に都度再構築されるため、Base
オブジェクトとその子オブジェクトは、自社アプリ側で修正を加えることができません。
コンポーネント¶
アバタープレハブのコンポーネントは変更・追加可能です。いくつか重要なコンポーネントが存在するため、以下で説明します。
Transform¶
変更可能です。
Rigidbody¶
変更や取り外し可能です。
Capsule Collider¶
変更や取り外し可能です。アバターの足先から頭先(髪を含まない)までのスケールは 1.6
ですので、コライダーを利用する際の参考にしてください。
Animator¶
アニメーターを使う場合は利用します。プロパティ Controller
にはサンプルのアニメーターコントローラ Sample Animator Controller
が設定されていますので、自社アプリ内での動作に適したものに変更してください。プロパティ Avatar
はアバターの基本ボーン構造になるため、変更できません。
アニメーションについては、アニメーションの項で解説します。
Item Loader¶
アイテムのロードに必要なため、取り外し不可です。アイテムアセットは、実行時に Avatar Play のオンラインストレージからダウンロードし、表示されます。
オリジナルのアイテムオブジェクトは一旦共有シーン DontDestroyOnLoad
以下に配置され、以降はそこから複製されたものが各アバターオブジェクトに割り当てられます。
Avatar Animator¶
Animator
を利用する際に必要となるスクリプトです。アバターのアニメーションを調整・変更します。
プロパティ名 | 説明 |
---|---|
Mouth Speed | 1回の口パクの速度(秒) |
Animator Controllers | アバターのテイストに応じたアニメーターコントローラの設定 |
アバターのアニメーションについては、アニメーションの項で説明します。
Avatar Coordinator¶
アバターコーデをロードする際に必要となるスクリプトです。アイテム単体をロードする場合は不要です。
自社アプリ側で LoadAsync
メソッドを呼び出し、アバターコーデを明示的にロードする必要があります。
var avatarCoordinator = avatar.GetComponent<AvatarCoordinator>();
# 自身のアバターをロード
yield return avatarCoordinator.LoadAsync();
# 他人のアバターをロード
yield return avatarCoordinator.LoadByAvatarIDAsync(avatarID);
# アプリ内コーデをロード
yield return avatarCoordinator.LoadByAvatarCoordinationIDAsync(avatarCoordinationID);
各プロパティはアバターロード後に設定されます。
プロパティ名 | 説明 |
---|---|
Avatar Coordination ID | アバターコーデのID |
Avatar Coordination Taste | アバターコーデのテイスト |
Face Changer¶
顔の表情・瞬き・口を変化させるために使います。表情は喜怒哀楽、瞬きは左右それぞれの開閉、口の開きは「あいうえお」を表現可能です。
var faceChanger = avatar.GetComponent<FaceChanger>();
// 笑顔に変更
faceChanger.face = FaceChanger.FACE.FUN;
// 目を閉じる
faceChanger.blink = 1.0f;
// 口の開きを「あ」に変更
faceChanger.vowel = FaceChanger.VOWEL.A;
ボーン構造¶
ボーントラッキングを行いたい場合などではアバターのボーン構造を抑えておく必要があります。
ボーントラッキングの制限
ボーントラッキングを使ってアバターの手足を大きく動かすと、スカートや振り袖が動きに追従できず体を貫通してしまう現象が発生してしまいます。ボーントラッキングで小さな動きを表現し、大きな動きにはアニメーションを適用するなど工夫する必要があります。詳細な要件は、Avatar Play 担当者と調整してください。
基本ボーン構造¶
足元の基準点となる root
、身体の起点となる torso
から素体の各部位へ連結されている上半身 body
と下半身 waist
へ分かれ、合計22ボーンで基本的な骨格が構成されています。アイテムを装着するための左右の指や、スカートや振り袖の動きを表現するためのボーンも存在します。
ゲームオブジェクトの構造¶
ゲームオブジェクトとしては、 Avatar > Base > root > dummy_top
以下に上述の root
に該当するゲームオブジェクト |root
が配置され、以降のボーン階層は |root
からの絶対パス名がゲームオブジェクト名となるボーンが配置されます。
アバターロード時に、基本ボーン構造に加え、アイテム特有のゲームオブジェクトがボーン階層に追加されます。