みなさんは「AirSticker」をご存知でしょうか?

ゲームやアプリケーションの3Dワールド内で、繊細なテクスチャやデザインを瞬時に表現するための画期的なツール、それがAirStickerです。

AirStickerを利用することで、キャラクターのタトゥーや壁のグラフィティなど、あらゆるシーンでのニーズに応じたリアルタイムのデザイン変更が手軽になります。

3Dグラフィックスに関心がある方や、より臨場感のあるゲームやアプリの開発を目指す方に、この記事の内容を読み進めていただきたいと思います。

|AirStickerとは

出典:https://www.cyberagent.co.jp/news/detail/id=28798

「AirSticker」は、株式会社サイバーエージェントが2023年にオープンソースソフトウェア(OSS)として公開したデカールシステムです。

このシステムはデカール処理を軽量化することを目的として開発されました。

※デカール処理とはゲームや3Dのアプリケーションで物体の表面にデザインや模様を付ける技術です。

メッシュ生成方式を採用しているため、処理負荷を大幅に削減できます。

この軽量設計により、ゲームのパフォーマンスが向上することが期待されます。

特に、URPデカールと比較して、効率的に動作します。

また、スキンメッシュへのデカールや、既存のシェーダーをそのまま使用することもできます。

サイバーエージェントはこのツールをOSSとして公開することで、ゲーム業界全体の技術向上と知識の共有を促進したいと考えています。

サイバーエージェントとは

株式会社サイバーエージェントは、1998年の設立以来、日本を拠点とするインターネット関連企業として、インターネット広告事業やゲーム事業、メディア事業などの幅広い分野で事業を展開してきました。

多くのプロジェクトでUnityを使用している同社は、デカール処理の処理負荷が高いという問題を抱えていました。この課題への対応として「AirSticker」を開発したという背景があります。

|AirStickerの特徴

「AirSticker」は3Dグラフィックス制作において大きな注目を集めていることが分かります。

以下では、このツールが持つ独自の特色や強みについて解説していきます。

メッシュ生成によるデカール処理

ゲームや3Dのアプリケーションで物体の表面にデザインや模様を付ける技術を「デカール処理」と言います。

このデカールを物体に張り付ける方法の一つが「メッシュ生成」という方法です。

この方法を利用することで、デカールを簡単かつ効果的に物体に貼り付けることができ、ゲームやアプリケーション中の物体がよりリアルに見え、魅力的なデザインが作成できます。

メッシュは低スパイクで生成可能

メッシュ生成は、通常計算負荷が高い作業であり、その過程でのスパイクは、アプリケーションの動作に大きな影響を及ぼすことが一般的です。

※スパイクとは、一時的に滑らかに動かなくなったり、止まったりする現象を指しています。いわゆる、「カクつき」のことです。

こちらの処理をメインスレッドとは別のスレッドで行い、メインスレッド上で起きるスパイクを削減するアプローチが取られています。

この結果、足跡やFPSの弾痕など、ゲーム内で頻繁に発生するデカールの利用がスムーズに行えるようになっています。

スキンアニメーション対応が可能

キャラクターやオブジェクトが動くときに、その動きをリアルに見せる技術を「スキンアニメーション」と言います。

この技術を用いることで、キャラクターの筋肉が動くような自然な動きが表現できます。

そして、「AirSticker」では、このスキンアニメーションにも対応しているので、キャラクターに直接デザインや模様を貼ることができ、その模様もキャラクターの動きに合わせて自然に動かすことができます。

専用のシェーダーが不要

ゲームやアプリで物の見た目や光の反射などをきれいに表現するためには「シェーダー」という特別なプログラムが使われます。

しかし、「AirSticker」を使えば、そのための特別なシェーダーを作る必要がありません。

既存のシェーダーや自分が以前に使っていたシェーダーをそのまま利用することができます。

これによって、開発の手間を減らし、より簡単に美しい表現ができるようになります。

|URPデカールとAirStickerの違い

デカール処理は非常に重要な役割を果たしています。

UnityのURPデカールは、その中でも注目されてきました。

AirStickerは似ているようで、実はいくつかの違いがあります。

ここからは、両者の違いについて解説していきます。

デカール処理

URPデカールは投影方式を用いてデカールを迅速に物体に適用します。

高速ながらも、一部の制限があります。

対照的にAirStickerはメッシュ生成方式を採用し、より多機能な処理を実現しています。

ただし、デメリットとして少し遅延が生じることがあります。

描画パフォーマンス

URPデカールの描画パフォーマンスは高いものの、特定の状況ではピクセル負荷が増加する可能性があります。

一方、AirStickerはメッシュ描画による軽量な処理が特徴で、一般的に高いランタイムパフォーマンスを提供します。

スキンアニメーション

URPデカールでは、スキンアニメーションの完全なサポートが難しいことが知られています。

一方で、AirStickerは完全対応しており、動的なキャラクターや物体にもデカールを適用できます。

カスタムシェーダー

URPデカールは特定のシェーダー制限のもとで動作するため、カスタムシェーダーの直接使用は難しい場合があります。

しかし、AirStickerではカスタムシェーダーをそのまま利用することが可能です。

Zファイティング

URPデカールは、投影方式の特性上、Zファイティングを回避する機能があります。

しかし、AirStickerのメッシュ生成方式は、一部の状況下でZファイティングが発生するリスクがあります。

Zファイティングは、3Dグラフィックスの世界で見られるちらつきや縞模様のような不具合のことを指します。

この問題は、2つの面がほとんど同じ位置にあるときに、どちらが前に表示されるべきかをコンピュータが判断できなくなるために生じます。

Unityバージョンサポート

URPデカールはUnity2021以降でのみサポートされています。

一方、AirStickerはUnity2020からの動作をサポートしているので、古いバージョンのプロジェクトでも利用可能です。

|AirStickerの使い方

AirStickerを使うには、下記URLのAssets/AirStickerを自身のプロジェクトに取り込む必要があります。

ここでは、簡単に主要なクラスの説明をします。

詳細情報を知りたい方は公式ドキュメントを参考にしてみてください。

1. AirStickerSystemクラス

これはAir Stickerを使うための基盤となる部分です。ゲームのシーン内に、このコンポーネントを持つゲームオブジェクトを1つ設置することが必要です。

2. AirStickerProjectorクラス

こちらは、デカール、つまりゲームのオブジェクトに直接ステッカーのようなテクスチャを張り付けるためのクラスです。デカールを使いたい場所に、このコンポーネントを追加してください。

AirSticker:https://github.com/CyberAgentGameEntertainment/AirSticker/tree/main

公式ドキュメント:https://github.com/CyberAgentGameEntertainment/AirSticker/blob/main/README_JA.md

|まとめ

いかがでしたか。AirStickerは、Unityのゲームやアプリケーションで使用するデカールシステムです。

メッシュ生成方式を採用しており、これによって描画パフォーマンスが向上するとともに、スキンアニメーションやカスタムシェーダーにも対応しています。

ぜひAirStickerを活用して、より臨場感のあるゲームやアプリの開発を目指してみてください。