VRChat個人開発集会 Reina_Sakiriaさん登壇!「TexturAtlasCompiler 作ってみた」LTレポート

詳細情報

集会名 個人開発集会
日時 2023年09月14日 22:30 - 23:00
テーマ TexturAtlasCompiler 作ってみた
発表者 Reina_Sakiria
発表資料 ファイル

軽量化と改変の自由を両立?!アバター向けテクスチャ自動アトラス化ツール&テクスチャ改変ツールの開発秘話に迫る!

  • 既存アバターの組み合わせによるテクスチャ使用率の低下問題を解決する「TextureAtlasCompiler」を紹介
  • UVへの依存を減らし、テクスチャ改変を容易にする新しいツールを解説
  • 開発中の苦労や裏話、質疑応答の内容も掲載

2023年09月14日(木)に開催されたVRChat「個人開発集会」にて、Reina_Sakiriaさんによる「TexturAtlasCompiler 作ってみた」と題したLTが行われました。

本記事では、Reina_Sakiriaさんが開発した「Texture Atlas Compiler」と「テクスチャ改変ツール」の内容、そして質疑応答の内容を詳しく紹介します。

テクスチャの無駄をなくしてアバターを軽量化!「TextureAtlasCompiler」とは?

VRChatのアバター改変において、既存のアバターパーツを組み合わせていくと、テクスチャの使用効率が低下してしまう問題があります。

例えば、衣装Aと衣装Bのテクスチャを組み合わせた際に、それぞれ一部の領域しか使用されず、テクスチャの大部分が無駄になってしまうケースが考えられます。

テクスチャ使用率低下による問題点

  • VRAMの浪費: 使用されないテクスチャ領域もVRAMを消費するため、GPUに負荷がかかりパフォーマンス低下に繋がります。
  • ダウンロードサイズの増加: 無駄なテクスチャデータを含むことで、アバターのファイルサイズが大きくなり、ダウンロードに時間がかかってしまいます。
  • パフォーマンスランクへの影響: VRChatのパフォーマンスランクは、アバターの重さにも影響を受けるため、無駄なテクスチャはパフォーマンスランクの低下に繋がります。

Reina_Sakiriaさんはこれらの問題を解決するために、「TextureAtlasCompiler」を開発しました。

TextureAtlasCompilerの特徴

  • UVの再配置: 使用されているテクスチャ領域を自動で検出し、効率的に再配置を行います。複雑な計算を必要とするUVパッキング問題には、「近似解法」を用いることで実用的な処理速度を実現しています。
  • 新しいテクスチャの生成: 再配置されたUVに合わせて、新しいテクスチャを自動生成します。これにより、無駄な領域を省いた最適化されたテクスチャが作成されます。

実際にReina_Sakiriaさんのアバターでは、「TextureAtlasCompiler」を使用することで、テクスチャメモリを約30MBから約22MBに削減できたそうです。

UVに依存しない新たなテクスチャ改変ツール

続いてReina_Sakiriaさんは、新たな「テクスチャ改変ツール」について解説しました。

従来のテクスチャ改変における課題

  • UVへの依存: 従来のテクスチャ改変では、UVの構造を理解している必要があり、初心者にはハードルが高いものでした。
  • 転用の難しさ: UVに依存した改変は、他のアバターへの転用が難しく、汎用性に欠けるという課題がありました。

デカール機能でUV依存からの脱却

これらの課題を解決するために、Reina_Sakiriaさんは「デカール」機能に着目しました。

デカールとは、3Dモデルにテクスチャを投影する表現手法で、銃弾の跡や足跡などに利用されています。

新しいテクスチャ改変ツールの仕組み

  1. 特定方向からのUV生成: 任意の方向から見たUVを生成します。
  2. 元のUVへの転写: 生成したUVを元のUVに転写することで、デカールを実現します。

この仕組みにより、UV構造を意識することなく、グラデーションや模様などを簡単に貼り付けることが可能になります。

新しいテクスチャ改変ツールのメリット

  • UVへの依存を軽減: デカール機能を使うことで、UV構造を深く理解していなくても、直感的にテクスチャを改変できます。
  • 高い汎用性: UVに依存しないため、他のアバターにも簡単に転用することができます。

質疑応答

LT後には、参加者からの質問に答える時間が設けられました。

処理時間について

アトラス化の処理時間に関する質問に対し、Reina_Sakiriaさんは「計測したことはないが、1秒程度で終わる」と回答。処理時間よりも、他の要素の最適化に注力しているとのことでした。

左右対称UVへの対応について

アバターのUVが左右対称になっている場合に、片側だけにテクスチャを適用できるかという質問がありました。現状では対応していないものの、将来的に実装を検討しているとのことでした。

Compute Shaderの活用について

「TextureAtlasCompiler」では、高速化のためにCompute Shaderを活用しているそうです。当初はCPUで処理を行っていましたが、Compute Shaderを利用することで数ミリ秒単位まで処理速度が向上したとのことでした。

プログラミング学習について

Reina_Sakiriaさんのプログラミング歴は1年半とのことですが、短期間で高度なツールを開発したことに対する質問がありました。

Reina_Sakiriaさんは、UnityのC#から学習を始め、その後、学校の先輩の影響でRustを習得したそうです。

まとめ

Reina_Sakiriaさんによって開発された「TextureAtlasCompiler」と「テクスチャ改変ツール」は、VRChatのアバター改変をより快適にする革新的なツールと言えるでしょう。

今後のバージョンアップにも期待が高まります。