コンテンツにスキップ

アバターの構造

このページでは、アバターの構造と主要コンポーネントの理解と、自社アプリ側でカスタマイズ可能な範囲について説明します。

アバタープレハブ

アバターを直感的に利用しやすいよう、デフォルトのアイテムを保持した状態のプレハブを Assets > AvatarPlay > Prefabs > Avatar.prefab に収録しています。自社アプリ側でカスタマイズする際は、これをコピーするなどして利用します。

アバタープレハブの構造

ゲームオブジェクトの階層構造

アバタープレハブ直下の Base というオブジェクト名はSDKが使うために予約されています。Base と同じ階層に、自社アプリ側で準備したゲームオブジェクトなどを追加可能です。

Base オブジェクト

Base オブジェクトはアバターの基本ボーン構造を表したゲームオブジェクトであり、元のプレハブは Assets > AvatarPlay > Prefabs > Base.prefab に配置されています。 Base オブジェクトはSDKが管理するオブジェクトで、アバターコーデをロード・再ロードする際に都度再構築されるため、Base オブジェクトとその子オブジェクトは、自社アプリ側で修正を加えることができません。

コンポーネント

アバタープレハブのコンポーネントは変更・追加可能です。いくつか重要なコンポーネントが存在するため、以下で説明します。

Transform

変更可能です。

Rigidbody

変更や取り外し可能です。

Capsule Collider

変更や取り外し可能です。アバターの足先から頭先(髪を含まない)までのスケールは 1.6 ですので、コライダーを利用する際の参考にしてください。

Capsle Collider

Animator

アニメーターを使う場合は利用します。プロパティ Controller にはサンプルのアニメーターコントローラ Sample Animator Controller が設定されていますので、自社アプリ内での動作に適したものに変更してください。プロパティ Avatar はアバターの基本ボーン構造になるため、変更できません。

Animator

アニメーションについては、アニメーションの項で解説します。

Item Loader

アイテムのロードに必要なため、取り外し不可です。アイテムアセットは、実行時に Avatar Play のオンラインストレージからダウンロードし、表示されます。

Item Loader

オリジナルのアイテムオブジェクトは一旦共有シーン DontDestroyOnLoad 以下に配置され、以降はそこから複製されたものが各アバターオブジェクトに割り当てられます。

Avatar Animator

Animator を利用する際に必要となるスクリプトです。アバターのアニメーションを調整・変更します。

Avatar Animator

プロパティ名 説明
Mouth Speed 1回の口パクの速度(秒)
Animator Controllers アバターのテイストに応じたアニメーターコントローラの設定

アバターのアニメーションについては、アニメーションの項で説明します。

Avatar Coordinator

アバターコーデをロードする際に必要となるスクリプトです。アイテム単体をロードする場合は不要です。

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 からの絶対パス名がゲームオブジェクト名となるボーンが配置されます。

ゲームオブジェクトの構造

アバターロード時に、基本ボーン構造に加え、アイテム特有のゲームオブジェクトがボーン階層に追加されます。


最終更新日: 2021-01-13