見出し画像

Now in REALITY Tech #24 REALITYアバターの軽量化

引っ越すのが面倒で20年以上同じ家に住んでいるようてんです。古くて寒いという点が唯一の欠点でして、毎年この時期は比較的真剣に引っ越しを考えます。寒い寒いとぼやきながら在宅作業をする毎日ですが皆様いかがお過ごしでしょうか。

今週の「Now in REALITY Tech」はUnityチームから、先日ひとくぎりのところまで到達しました、「REALITYアバターの軽量化」という改善プロジェクトの話を中心にお届けします。

開発開始時、想定アバター表示最大数「2」

スマホを横向きにして、アバターが2体並ぶ絵を描いたりしていました

2018年初夏、REALITY Avatar(3Dアバターを取り扱う、配信専用のアプリが過去存在していました。現在はREALITYアプリに統合されています。)開発開始時の計画では、フェイストラッキングと1体の描画・配信を主に想定しており、将来のコラボ配信も見据えて、2体の描画をターゲットとしてポリゴン数などのレギュレーションを決定しました。

アバターが徐々に豪華になるにつれて、ポリゴン数も実はじわじわと増加を続けています

以前(2021.09)の漫喫のエントリからの抜粋になりますが、REALITYのアバターはベースとしてのポリゴン数が高めになっています。
REALITY Studioで収録される公式番組や、他プラットフォームでのバーチャルライブなど、(リアルタイムトラッキング系、という枠内においては)他バーチャルキャラクターと概ね同等であり、それがゆえに、マテリアルレベルのコンバートにてお引っ越しができるものになっています。

やっぱりメタバース、スマホで100体描いてもだいじょうぶ…になりたい

そこから3年経ちまして、サービス・会社としてのビジョンに、とくに大きなピボットがあったわけではありません。なりたい自分で生きていくには、当然ほしい要素として、みんなと一緒に過ごせる体験の実現が必須なわけです。

そんな流れの中、「REALITYアバター100体描こうと思ったらどうなるの?」という観点で、「改善プロジェクト アバター軽量化」という、R&D
要素の強いプロジェクトが立ち上がりました。

軽量化とは、CPUとGPUとRAMの負荷を下げること

軽量化、を具体的に実現するために、もう一段階分解しますと、乱暴には、「CPUとGPUの負荷と、RAMの使用量を下げること」と言えます。

改めてこんな表をつくったりしました

CPUとGPUの負荷が高いとFPSが下がり、発熱しやすく、動作が安定しません。  RAM消費量が多いと、機種によってはクラッシュが多くなっていきます。
3つの要素はどれもなんとかしないといけないものです。やっていきましょう。

プロジェクト概要

いっぱいアバターを描くのが目標なことから、大衆向けのお酒である「pilsner」をコードネームとして採用しました。夏の「mead」に引き続きお酒シリーズです。

あまり引き伸ばしてもしょうがないので、プロジェクトの概要と、成果についていきなり説明していきましょう。

現行のREALITYアプリで描画されている「通常アバター」から、あらゆる要素のコンバート・リダクションを検討し「軽量アバター」をつくってみることにしました。

以下に計画時に記載した要件一覧を掲載します。

前半。文字は小さいですが雰囲気で読んでください。所詮計画は計画なので…
後半

これは計画者である僕の趣味がめいっぱい入っているのですが、REALITYサービスとしては内部的な独自フォーマットであっても要件は満たせるところを、既存のcluster連携のノウハウ・コード資産や、あるいはWebGLクライアントの夢などを妄想しつつ、VRM/GLTFルートでアタックしました。

成果

アバターいっぱい、楽しい

このような感じで一通りのアタックは無事実現させることができたのですが、ざっくりと申しますと「RAMについては見通しが甘かった」というステータスで着地となりました。
つよつよ機種では問題なく高いFPSが維持できていたのですが、そうではない機種では表示すらままならず、アバターが増えていくとあっさりとクラッシュが発生してしまったり。

REALITYアバター100体でわちゃわちゃする世界を皆様にお届けるできる日は、もう少し先になりそうです。

3D業界の識者(?)の方々にはいまさらの話ではあると思うのですが、KTX 2.0とかそういう話ですよね、ってとても腑に落ちました。

そんなこんなで積み上がった歴史も踏まえつつ、未来に向かって一緒にがんばってくれる仲間をREALITYでは募集しております。それでは、また。