”なりたい自分”をアップデート! 「REALITY Avatar 2.0」の開発秘話
by
gree_tech
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
“なりたい自分”をアップデート! 「REALITY Avatar 2.0」の開発秘話 REALITY株式会社 ソフトウェアエンジニア 三宅広大 / 池谷駿弥
Slide 2
Slide 2 text
三宅広大 / yaegaki REALITY株式会社 ソフトウェアエンジニア/ アバターシステムチーム テックリード 2 ● 経歴 ○ 2020/11 REALITY株式会社 入社 ○ 2020/11〜、Unityエンジニア ● 主な担当領域 ○ Unityを用いたアバター機能の開発 ■ アバターコア開発 ■ ワールド機能 ■ ルーム機能 ■ スペース機能
Slide 3
Slide 3 text
池谷駿弥 / IKEP ● 経歴 ○ 2022/04、グリー株式会社に新卒入社 & REALITYへ配属 ○ 2022/04〜2022/09、サーバエンジニア ○ 2022/10〜、Unityエンジニア ● 主な担当領域 ○ Unityを用いたアバター機能の開発 ○ TA(Technical Artist)業務 ■ アバターアセット運用 ■ アセット制作効率化 REALITY株式会社 ソフトウェアエンジニア 3
Slide 4
Slide 4 text
目次・アジェンダ ● アプリ「REALITY」について ● 「REALITY Avatar 2.0」プロジェクトについて ● 体型変更機能 ● 顔変更機能 ● まとめ 4
Slide 5
Slide 5 text
アプリ「REALITY」 5
Slide 6
Slide 6 text
スマホひとつでアバター作成、ライブ配信による交流やゲームなどが楽しめる、スマホ向けメタバース アプリ「REALITY」 6
Slide 7
Slide 7 text
「REALITY Avatar 2.0」とは? 7
Slide 8
Slide 8 text
「REALITY Avatar 2.0」とは? ● ユーザーがより「なりたい自分」を表現できるようにするのプロジェクト ● 具体的には ○ 体型や顔などのカスタマイズ可能な項目を増加させる ○ 目、眉、髭、チークなどへの新アイテムの追加 8
Slide 9
Slide 9 text
「REALITY Avatar 2.0」の目指すところ ● アバターのカスタマイズのバリエーションを用意する ○ ユーザーがより「なりたい自分」を表現できるようにする ● “誰でも”高品質なアバターが作成できるようにする ○ アバター作成が複雑になりすぎないようにする ● REALITYらしいアバタールックを維持する ○ 人間離れしたような極端な見た目にはならないようにする 9
Slide 10
Slide 10 text
「REALITY Avatar 2.0」の課題 ● すでにリリースされている大量のアバターアイテムの互換性を維持する ○ ユーザーが変更しなければ見た目が変わらないようにする ○ 全てのアイテムを新しいシステムに対応させる ● アプリの全ての機能で使用できる必要がある ○ REALITYには多種多様な機能が存在するので全ての機能で 正常に動作させる必要がある 10
Slide 11
Slide 11 text
体型変更 11
Slide 12
Slide 12 text
体型のカスタマイズ幅の向上 ● 従来のアバターでカスタマイズ可能な項目 ○ 身長 ○ バストサイズ 12
Slide 13
Slide 13 text
体型のカスタマイズ幅の向上 ● Avatar 2.0でカスタマイズ可能な項目 ○ 身長(調整範囲の増加) ○ バストサイズ ○ 肩幅 ○ ウエスト ○ 手足の長さ 13
Slide 14
Slide 14 text
身長(調整範囲の増加) ● 従来より小さく/大きく できるように 14 新 最小 旧 最小 標準 旧 最大 新 最大
Slide 15
Slide 15 text
肩幅 ● 肩まわりを変更する パラメータ 15 最小 最大 標準
Slide 16
Slide 16 text
ウエスト ● ウエストなど変更する パラメータ 16 最小 最大 標準
Slide 17
Slide 17 text
手足の長さ ● 身長を変えずに手足の長さを 変更するパラメータ 17 最小 最大 標準
Slide 18
Slide 18 text
体型変更の実装 ● 実装を始めるに当たって以下の方法が検討されました ○ ボーンスケール方式 ○ ブレンドシェイプ方式 18
Slide 19
Slide 19 text
ボーンスケール方式 ● 文字通りモデルのボーンにスケールを加える方式 ● Unityでは親のスケールが子にも反映されるという課題があった(後述) 19
Slide 20
Slide 20 text
ブレンドシェイプ方式 ● 設定されたパラメータに応じてブレンドシェイプの値を変更する ● ボーンスケール方式に比べて表現の幅が広い ● アセット制作が大変 20
Slide 21
Slide 21 text
体型変更の実装 ● 最終的にはボーンスケール方式を採用 ● 採用理由は以下の通り ○ ブレンドシェイプ方式だとアセットの対応工数がかなりかかる ○ ボーンスケール方式でも良いものになったため 21
Slide 22
Slide 22 text
体型変更の実装 ● 最終的にはボーンスケール方式を採用 ● 採用理由は以下の通り ○ ブレンドシェイプ方式だとアセットの対応工数がかなりかかる ○ ボーンスケール方式でも良いものになったため 22 すでに大量のアイテムがリリースされ ているのでそれらの対応にかなり工数 が必要だった 自動でブレンドシェイプを作成する 機能について検証したが完全に自動で 対応するというのもできなかったので 最終的には採用しなかった
Slide 23
Slide 23 text
ボーンスケール方式の課題 ● 文字通りモデルのボーンにスケールを加える方式 ● 従来の身長変更もこの方式 ● Unityでは親のスケールが子にも反映されるという課題があった(後述) 23
Slide 24
Slide 24 text
ボーンスケール方式の課題 24
Slide 25
Slide 25 text
ボーンスケール方式の課題 25 親のYを2倍にする
Slide 26
Slide 26 text
ボーンスケール方式の課題 26 子も変形される
Slide 27
Slide 27 text
ボーンスケール方式の課題 27 子を回転させるとY軸のみ2倍されて いるので菱形になってしまう
Slide 28
Slide 28 text
ボーンスケール方式の課題 ● アバターに当てはめるとウエストを変更するためにSpineのスケールを変 更すると全てのボーンに影響してしまう 28
Slide 29
Slide 29 text
ボーンスケール方式の課題 解決策 ● 親と子の間に親のスケールを 打ち消すオブジェクトを挿入 ● これによって親のスケールが 子に影響しないようになった 29
Slide 30
Slide 30 text
体型変更とアニメーション 30
Slide 31
Slide 31 text
体型変更とアニメーション ● 体型変更によって既存のアニメーション関連処理の変更が必要 ○ ポーズ機能 ○ アバターエモート機能 ○ 家具およびワールドの乗り物機能 31
Slide 32
Slide 32 text
ポーズ機能 ● アバターにポーズを撮らせて画像を撮影する機能 ● チャットで使えるアバターのスタンプなどで使用されている 32
Slide 33
Slide 33 text
ポーズ機能 問題点 ● ポーズのアセットにローカル座標 での位置が保存されていたので そのまま適用すると壊れてしまった 33
Slide 34
Slide 34 text
ポーズ機能 解決策 ● Unityのマッスル値を保存するように 変更 マッスル値を使用することで ヒューマノイドのアバターなら どんなアバターにもポーズが適用 可能に 34
Slide 35
Slide 35 text
アバターエモート機能 ● ユーザーが任意のタイミングでアニメーションを実行できる機能 ● 上半身だけ、全身、それらの組み合わせなどが可能 上半身のみ 全身 組み合わせ 35
Slide 36
Slide 36 text
アバターエモート機能 問題点 手を合わせる系のアニメーションで 手が合わなくなった 36
Slide 37
Slide 37 text
アバターエモート機能 解決策 ● UnityのアニメーションのIK機能を活用 インポート時の設定でIKを有効にしておくと IK用の位置、回転の情報が含まれるようになる 37
Slide 38
Slide 38 text
家具およびワールドの乗り物機能 ● 3D空間上に設置された椅子などに座る機能 ● 椅子に限定されずに様々なものが存在する 38
Slide 39
Slide 39 text
家具およびワールドの乗り物機能 問題点 ● 椅子に体がめり込んでしまう ● 手の位置とオブジェクトの位置が 合っていない 39
Slide 40
Slide 40 text
家具およびワールドの乗り物機能 解決策 ● 乗り物側に腰や両手の最終的な位置を設定できるようにする ○ 最終的な位置をIKのゴール位置とすることで姿勢を制御 ● 最終的な位置にどのタイミングで到達するかをアニメーションカーブで 指定可能にする ○ 座るアニメーションと違和感がないように調整するため 40
Slide 41
Slide 41 text
顔変更 41
Slide 42
Slide 42 text
より多様な顔を表現するために、コンセプトアートから各要素に分解し、 技術検証 / 開発 / アセット制作 顔のアバターカスタマイズ拡張 42
Slide 43
Slide 43 text
● 眉 ● 目 ● 口 顔の既存アバターアイテムの仕様変更 43
Slide 44
Slide 44 text
● 彫りの深さ ● 輪郭 ● アイメイク ● 鼻 ● メッシュひげ ● しみ・あざ ● しわ ● 髪(刈り上げ・スキンヘッド) ● 顔プリセット 顔の新規アバターアイテム機能 44
Slide 45
Slide 45 text
顔の基本構成の変更 45 ● 鼻先から上は、目のアイテムごとに固有アセット ● 鼻先から下は、1Meshで表現 目のアイテムそれぞれに修正対応が必要なため、 カスタマイズ要素の追加難易度が高い... × 約70アイテム × 1Mesh
Slide 46
Slide 46 text
顔の基本構成の変更 46 × 1Mesh × 1Mesh × Nアイテム ● 目の周りだけ目アイテムごとの 固有アセットに ● 額、鼻、顔側面部分などは 共通Meshとし「FaceBase」に FaceBase操作だけで形状を変化させることが できるため、顔表現のカスタマイズ幅が増加 (= 輪郭や鼻などのアイテム実現) FaceBase Neck Eyes
Slide 47
Slide 47 text
FaceBaseには、 表情用のBlendShape以外にも、 形状変更のためのBlendShapeも 顔の基本構成の変更 47
Slide 48
Slide 48 text
● Meshを含むPrefabをロード、配置 ● 表情用のBlendShapeによって上下移動 眉(既存仕様) 48
Slide 49
Slide 49 text
上下位置の微調整機能 ● 特定のジョイントへのウェイトを 持つように全ての眉アセットを更新 ● ユーザの操作に合わせて、 ジョイント位置を上下に移動 →「彫りの深さ」の影に追従 眉(追加仕様) 49
Slide 50
Slide 50 text
目(仕様変更) 50 顔の基本構成の変更に伴い、目周辺のみのメッシュに変更 × 約70アイテム
Slide 51
Slide 51 text
目(仕様変更) 51 微調整機能(大きさ/位置) ● 特定のジョイントへのウェイトを 持つように全ての目アセットを更新 ● ユーザの操作に合わせて、 ジョイント位置を移動 → 顔つきの表現が可能に
Slide 52
Slide 52 text
目(仕様変更) 52 微調整機能(ハイライト / 目の開き) ● ハイライトに関するマテリアル プロパティを操作し、ON/OFFを 切り替え ● フェイストラッキングから 適用するBlink_L/Blink_Rの 最小値を大きく ○ 0~100 => N~100 の範囲で動かす → ジト目などの表現が可能に
Slide 53
Slide 53 text
● 顔の基本構成の変更に伴い、FaceBaseに統合 ● アイテムごとの口形状の違いについては今まで同様、BlendShapeで形状変更 口(仕様変更) 53
Slide 54
Slide 54 text
肌追加陰影テクスチャにより、「唇の厚さ」などを表現 口(仕様変更) 54 肌追加陰影テクスチャなし 肌追加陰影テクスチャあり
Slide 55
Slide 55 text
肌追加陰影テクスチャ 55 ● 肌の陰影を追加で描画可能な機能を新規開発 ● 肌の色を適用する前に追加の陰影テクスチャを合成する FaceBase ベーステクスチャ 各アイテムからの 追加陰影を合成 肌の色を合成 デカール類を描画 レンダリング過程
Slide 56
Slide 56 text
肌追加陰影テクスチャ 56 肌の色を適用する前に陰影を合成しているので、肌の色によって見え方に ばらつきが発生しない! デカールで陰影を 描画すると、肌の 色によっては見え にくい...
Slide 57
Slide 57 text
● 眉/目を前後に移動 ○ 眉で使っている ジョイントを手前へ ○ 目で使っている ジョイントを奥へ ● 肌追加陰影テクスチャにより、 影を表現 彫りの深さ(新規) 57
Slide 58
Slide 58 text
FaceBaseのBlendShape値を アイテムごとの設定値にすることで形状変更 輪郭(新規) 58
Slide 59
Slide 59 text
BlendShape値の更新を リアルタイムに行うことで、 ユーザ自身による微調整も可能 輪郭(新規) 59
Slide 60
Slide 60 text
肌追加陰影テクスチャにより、「頬がこけた顔」や「ケツ顎」を表現 輪郭(新規) 60
Slide 61
Slide 61 text
● チークだけでなく、目上や目下への メイクアイテム枠として開発 ● 既存のデカールシステムを利用して 描画 アイメイク(新規) 61
Slide 62
Slide 62 text
FaceBaseのBlendShape値を アイテムごとの設定値にすることで形状変更 鼻(新規) 62
Slide 63
Slide 63 text
BlendShape値の更新を リアルタイムに行うことで、 ユーザ自身による微調整も可能 鼻(新規) 63
Slide 64
Slide 64 text
肌追加陰影テクスチャにより、「鼻の高さ」などを表現 鼻(新規) 64 肌追加陰影テクスチャなし 肌追加陰影テクスチャあり
Slide 65
Slide 65 text
● 今までのデカール髭と違い、 メッシュを持つ3Dな髭 ● メッシュをロードし、髪色と同じ色に メッシュ髭(新規) 65
Slide 66
Slide 66 text
● 既存の「ほくろ・そばかす」 カテゴリに追加 ● 既存のデカールシステムを 利用して描画 しみ・あざ(新規) 66
Slide 67
Slide 67 text
肌追加陰影テクスチャにより表現 しわ(新規) 67
Slide 68
Slide 68 text
● 頭部の地肌に直接髪の毛を描画する ことにより、刈り上げや坊主・剃り 込みなどの表現が可能 ● 顔(FaceBase)と後頭部(RearHead)の 任意の場所に適用可能 髪(刈り上げ・スキンヘッド) 68
Slide 69
Slide 69 text
髪アイテムのマテリアル 髪アイテムとしては、顔(FaceBase)と後頭部(RearHead)のどこに 適用するかをテクスチャ指定するだけ → ランタイムで顔と後頭部のマテリアルに渡してレンダリング メッシュベースの刈り上げは 隙間やズレが発生する... 髪(刈り上げ・スキンヘッド) 69 R → 髪色ベース G → 髪色シャドウ B → 髪色ハイライト
Slide 70
Slide 70 text
● 輪郭 / 目 / 眉 / 彫りの深さ / 鼻 / 口、および、 それぞれの微調整項目が予め設定されている ● 自由度が向上したアバターカスタマイズにおいて、 「顔つき」を簡単に表現できるようにサポート 顔プリセット(新規) 70
Slide 71
Slide 71 text
顔形状を変更できるようになったことで、他アイテムで突き抜けが発生 その他(突き抜け対策) 71 鼻の高さ変更により、 眼鏡のブリッジを突き抜け... 輪郭や鼻の高さ変更により、 マスクを突き抜け... 輪郭変更により、 メッシュ髭が埋まる...
Slide 72
Slide 72 text
顔に密着するアイテムは、FaceBaseのBlendShape変動に連動してアイテムの BlendShapeも操作 その他(突き抜け対策) 72
Slide 73
Slide 73 text
顔に密着しないアイテムは、 アクセサリー位置調整機能により ユーザ操作で回避可能に その他(突き抜け対策) 73
Slide 74
Slide 74 text
● 新規制作 or 既存アイテム修正 ○ アイテム数: 645 ○ 変更ファイル数: 5962(*) ● システム仕様や表現ルールに 沿っているかの自動チェック ツールを開発 ○ 全アセットの約半分を自動 チェックし、100件以上の問題検出 その他(効率的なアセットチェック体制) (*)通常ガチャ1本分は、約30アイテム、約500ファイル 74 仕様に沿わず修正が必要な項目が 赤色になる
Slide 75
Slide 75 text
まとめ 75
Slide 76
Slide 76 text
コンセプトアートと「REALITY Avatar 2.0」PVを比較 76 より多様な “なりたい自分”を実現!
Slide 77
Slide 77 text
● 技術検証・開発・アセット制作まで含め、約1年で開発 ● REALITYらしいアバタールックを維持しながら、 ユーザーがより「なりたい自分」を表現できるように! ○ Avatar 2.0で開発した機能を活用したコーデの保存割合が 70%以上に ○ 北米地域などにおける DAUが10%以上成長 まとめ 77
Slide 78
Slide 78 text
ご清聴ありがとうございました 78
Slide 79
Slide 79 text
No content