教育事業部の事業内容 演劇、音楽のタレント並びに作詞家、作曲家、編曲家等アーティストの育成及びマネージメント、コンピュータ教室の経営等を行っています。
ゲームエンジン Unity オンラインマニュアル
教育事業 パルテア

〜Unity Graphics Mesh メッシュデータの圧縮〜

メッシュ データの圧縮
Unity でメッシュ データを圧縮してサイズを小さくすると、パフォーマンスが向上します。Unity では、メッシュを圧縮する 2 つの方法を提供しています。これらは動作が異なり、パフォーマンスのさまざまな側面に影響します。

頂点圧縮は、プロジェクト内のすべてのメッシュに影響する設定です。メッシュで精度の低いデータ形式を使用できます。これにより、メモリ内のメッシュ データのサイズが小さくなり、ファイル サイズがわずかに小さくなり、GPU パフォーマンスが向上する可能性があります。潜在的な欠点は、精度が失われることです。
メッシュ圧縮は、個々のメッシュに影響する設定です。ディスク上のメッシュ データを圧縮して、ファイル サイズを小さくします。潜在的な欠点は、読み込み時間の増加、読み込み時の一時メモリ使用量の増加、圧縮アーティファクトの可能性です。
同じプロジェクトで両方の圧縮方法を使用できますが、同じメッシュでは使用できません。メッシュにメッシュ圧縮を適用した場合、Unity はそのメッシュに頂点圧縮を適用しません。

注: Unity の頂点圧縮とメッシュ圧縮のデフォルト設定は、ほとんどのプロジェクトに適しています。これらの設定は、問題がある場合のみ変更し、変更が役に立ったかどうか確認するために結果を評価する必要があります。

頂点圧縮

頂点圧縮設定を使用すると、プロジェクト内のすべてのメッシュに対して、より精度の低いデータ形式を使用できます。これを行うには、特定のデータ チャネルのデータ型を構成します。

特定のチャネルのデータ型を FP32 (Floating Point32、32 ビット浮動小数点数) から FP16 (Floating Point16、半精度浮動小数点数とも呼ばれる) に変更できます。FP16 形式では、FP32 数値よりも小数点以下の桁数が少ない数値が格納されます。つまり、占有するスペースは少なくなりますが、精度は若干低くなります。

FP32 から FP16 に変換されたデータは、メモリ内のスペースが少なくなり、ディスク上のスペースも若干少なくなります。GPU では、データが使用するメモリ帯域幅が少なくなるため、GPU のパフォーマンスが若干向上する可能性があります。

頂点圧縮手法では、圧縮する頂点属性の数に応じて異なる比率でメッシュを圧縮します。法線、接線、色、および 3 セットの UV 座標を圧縮すると、圧縮率は通常 1.45 倍程度になります。

頂点圧縮の制限

頂点圧縮を使用するには、メッシュが次の要件を満たしている必要があります。

メッシュの読み取り/書き込み有効プロパティが無効になっている必要があります。このプロパティは、モデル インポート設定ウィンドウのモデル タブで変更できます。
メッシュはスキン メッシュであってはなりません。
ターゲット プラットフォームは FP16 値をサポートしている必要があります。
メッシュを含むモデルのメッシュ圧縮値が「オフ」に設定されている必要があります。
メッシュは動的バッチ処理の対象ではありません
または、プレーヤー設定で動的バッチ処理がオフになっています。
メッシュがこれらの要件のいずれかを満たしていない場合、Unity はそのメッシュに頂点圧縮を適用せず、メッシュのすべてのデータ チャネルは FP32 精度の数値を使用します。

頂点圧縮の設定

頂点圧縮設定を変更するには: 1. プレーヤー設定を開きます (メニュー: 編集 > プロジェクト設定 > プレーヤー)。 1. その他の設定サブメニューを開き、最適化の見出しに移動します。 1. 頂点圧縮ドロップダウンを選択し、任意のチャンネルを選択して、そのチャンネルの圧縮を有効または無効にします。 また、なしを選択してすべてのチャンネルの圧縮を無効にするか、すべてを選択してすべてのチャンネルの圧縮を有効にすることもできます。

デフォルトでは、頂点圧縮は混合に設定されており、ドロップダウンで複数の選択がアクティブになっているときに Unity に表示されます。 デフォルトでは、Unity は次のチャンネルに頂点圧縮を使用します:

法線
接線
テクスチャ座標 0
テクスチャ座標 2
テクスチャ座標 3
Unity はデフォルトでこれらのチャンネルを圧縮します。これは、ほとんどの場合、この設定の組み合わせにより、メッシュの外観に大きな変化がなく、メモリの節約が適切に行われるためです。 Unity は、他の設定 (位置とテクスチャ座標 1) をデフォルトでは圧縮しません。これは、これらの設定がメッシュの外観に影響を与える可能性が高く、メモリ使用量を大幅に削減できないためです。位置とテクスチャ座標 1 チャネルの頂点圧縮を有効にする場合は、設定をテストして、メッシュにアーティファクトが発生しないことを確認する必要があります。

メッシュ圧縮

メッシュ圧縮設定を使用して、ディスク上の特定のモデル アセットのメッシュ データを圧縮できます。メッシュ圧縮アルゴリズムは頂点圧縮手法よりも強力で、圧縮率が高くなり、ファイル サイズが小さくなります。ただし、欠点も多くあります。

この設定を適用すると、Unity はアルゴリズムを使用して、各圧縮チャネルの明示的な値を最大値と最小値の間の範囲に置き換えます。この範囲では、各値がその範囲内のどこに位置するかが固定ビット数で表されます。これにより、ディスク上のメッシュ データのサイズが削減されます。Unity はメッシュをメモリに読み込むときにデータを解凍します。つまり、この範囲を元の値に戻します。その後は、パフォーマンスに影響はありません。

この手法は、最終的なビルド サイズやメッシュが含まれる AssetBundle のサイズを可能な限り小さくする必要がある場合、および実行時の解凍によるパフォーマンスの低下が許容できる場合に便利です。

メッシュ圧縮の制限

実行時に、メッシュの解凍には追加の CPU リソースが使用されます。つまり、メッシュ データの読み込みに時間がかかります。また、Unity はメッシュを解凍するときに、より多くの一時メモリを使用します。

さらに、比較的高い圧縮率は、Unity がメッシュを解凍するときに不要なアーティファクトが表示される可能性があることを意味します。これらのアーティファクトを回避するには、圧縮するメッシュの各オプションをテストし、正しく表示されることを確認する必要があります。

メッシュ圧縮の構成

モデル インポート設定ウィンドウのメッシュ圧縮設定
メッシュ圧縮設定を使用するには:

プロジェクトの Assets フォルダでモデルを選択し、インポート設定ウィンドウのモデル タブを開きます。
メッシュの見出しに移動して、メッシュ圧縮設定を見つけます。
ドロップダウン メニューを選択して、そのモデル内のすべてのメッシュのレベルを選択します。ModelImporterMeshCompression 列挙を使用して、コードでこの設定を変更することもできます。
使用可能な値は、高、中、低、またはオフです。次の表は、これらの各設定の一般的な圧縮率を示しています。

値 頂点 法線 接線 UV 色
オフ 1.0 1.0 1.0 1.0 1.0
低 1.6 4.6 4.4 2.0 1.0
中 2.0 5.6 5.3 3.2 1.3
高 3.2 7.4 6.7 4.0 2.0
メッシュ圧縮技術の圧縮率

注: 上記の表の「色」列は、UNorm8 形式を使用するメッシュの比率を示しています。頂点色に FP32 形式を使用するメッシュの場合、比率は低設定で 4.0、中設定で 5.3、高設定で 8.0 になります。

    unity

  • 日時:// ~ //
  • 名称:
  • 場所:
  • 料金:¥0 (消費税込)