長年にわたり、あらゆる主要プラットフォームでアセットを販売してきた経験から、完璧なエクスポートは贅沢品ではなく、プロフェッショナルな3Dマーケットプレイスビジネスの基盤であると学びました。このガイドでは、私自身が使用している正確なSubstance Painterのエクスポートプリセットとワークフローを紹介します。これにより、TripoのようなAIツールで生成されたモデルを含め、私のモデルが常に初回で正しくアップロードされ、機能することを保証します。これは、アップロードエラーを排除し、信頼性が高くスケーラブルなアセット作成パイプラインを構築したい3Dアーティストやテクニカルアーティスト向けです。
主なポイント:
すべてのマーケットプレイスには技術仕様書があり、それを無視することは、アセットが拒否されたり、ネガティブレビューに埋もれたりする最速の方法です。私が常に確認する普遍的な要素は、テクスチャ解像度(2のべき乗であること、例:1024、2048、4096)、サポートされるファイル形式(通常はラスタ形式のPNGまたはTGA、まれにTIF)、およびテクスチャマップの厳格な命名規則です。また、色空間に関する特定の要件(アルベドはsRGB、ラフネス/メタリックはリニア)、および特定のマップで埋め込みアルファチャネルが許可されているかどうかも確認します。これらの仕様を厳守することで、数え切れないほどの修正時間を節約できます。
キャリアの初期には、エクスポートを手動で設定していました。その結果、ファイル名の一貫性の欠如、誤ったビット深度、サポートされていない圧縮によるアップロード失敗が発生しました。特に苦痛だったのは、50のアセットパックで、すべてのノーマルマップがターゲットエンジンに対して誤った形式でエクスポートされてしまったことです。その日以来、私は「マーケットプレイス向けに手動でエクスポートしない」という核心的な原則に基づいて行動しています。プリセットは一貫性を保証する契約であり、一貫性は顧客とプラットフォームのアルゴリズムの両方との信頼を築きます。
Unreal Engine MarketplaceとSketchfabでは、同じエクスポート設定を使用することはできません。UnrealはAmbient Occlusion、Roughness、Metallicを単一のテクスチャ(ORM)にパッキングすることを期待していますが、ウェブ用のGLTF/GLBモデルはそれらを個別の標準PBRマップとして必要とします。私の解決策は、専用のプリセットライブラリです。私は「ベストエクスポート」プリセットを1つ持っているのではなく、「UE5_Marketplace_4K」「Unity_URP_2K」「Web_GLTF_2K」というように複数のプリセットを持っています。このターゲットを絞ったアプローチこそが、各エコシステムの微妙なニーズを満たす唯一の方法です。
エクスポート設定に触れる前に、必要なマップを定義します。メタル/ラフネスワークフローでない場合の私の標準PBRセットは、Albedo、Normal、Roughness、Metallic、AmbientOcclusionで、場合によってはHeightも使用します。Spec/Glossワークフローの場合は、Diffuse、Normal、Specular、Glossinessです。命名は非常に重要です。私は一貫したパターン{AssetName}_{MaterialID}_{MapType}.png(例:SciFiPanel_01_Albedo.png)を使用しています。これにより、ファイルが整理され、どのゲームエンジンのマテリアルシステムでも簡単に解析できます。
私の出発点は常に、販売する最高解像度(例:4K)です。4K、2K、1Kバージョンのプリセットを作成します。ビット深度に関しては、Albedo/Diffuseマップは常にsRGBカラースペースの8ビットです。 ノーマルマップは、ヒーローアセットに極端な精度が必要な場合を除き8ビットで、その場合は16ビットを使用することもあります。RoughnessやMetallicのようなグレースケールマップは常に8ビットです。これらを16ビットでエクスポートすることはありません。マーケットプレイスアセットにとっては不必要なファイル肥大化です。重要なのは、エクスポートダイアログでマップごとに「Color Space」を正しく設定することです。カラーマップはsRGB、それ以外はLinear(raw)です。
UnrealとUnityの場合、主にPNGを使用します。これはロスレス圧縮を提供し、普遍的にサポートされています。ロッシーな性質のため、JPEGは完全に避けます。すべてのメガバイトが重要となる非常に大きなアセットパックの場合、RLE圧縮付きのTGAを使用することもありますが、PNGが私のデフォルトです。GLTFのようなWeb形式の場合、選択はしばしば決まっており、GLBにバンドルされるテクスチャの標準はPNGまたはJPEGです。Substance Painterでは、不要なノイズを導入しないように、グレースケールエクスポートの「Dithering」を無効にします。
このプリセットはUnrealのマテリアルシステム向けに構築されています。最も重要なステップは、ORM(OcclusionRoughnessMetallic)パックテクスチャの設定です。私のプリセットでは、RチャンネルをAmbient Occlusion、GをRoughness、BをMetallicに設定しています。また、ノーマルマップがDirectX形式(Unrealのデフォルト)でエクスポートされていることを確認します。私のテクスチャセットは通常、Albedo、Normal、ORM、そしてオプションでEmissiveを含みます。常に「Output maps in sub-folders」をチェックし、それらを/Textures/に整理します。
Unityのパイプラインは多様であるため、私のプリセットは最も幅広い互換性を持つように設計されています。マップは個別のファイルとしてエクスポートします。Albedo、Normal、Metallic、Smoothness(私はラフネスマップを反転させてこれを作成します)、Occlusionです。HDRPの場合、Maskマップ(Metallic、Occlusion、Detail Mask、Smoothness)も含むかもしれません。重要なヒントとして、ノーマルマップの形式をOpenGLに設定します。これがUnityの期待する形式だからです。また、専用のHDRPアセットを作成する場合を除き、OcclusionとSmoothnessを一緒にパックすることは明示的に避けます。URPのLitシェーダーはそれらを別々に期待するからです。
Webで表示可能なモデルの場合、効率が鍵となります。私のプリセットは標準のPBRセットをエクスポートします。BaseColor、Normal、Roughness、Metallic、Emissiveです。ダウンロードサイズを妥当に保つため、解像度を2Kに制限することがよくあります。PNG圧縮を使用しますが、モデルが非常に複雑で品質の損失が許容できる場合は、BaseColorにJPEGを許可することもあります。ここで最も重要なステップは、アップロード前にBabylon.js SandboxのようなローカルGLTFビューアーでエクスポートを検証し、すべてのマップが正しくリンクされ表示されていることを確認することです。
Tripoからモデルをパイプラインに取り込む際、最初の立ち寄り先は決してSubstance Painterではありません。まず、リトポロジーをチェックします。Tripoの出力はクリーンですが、アニメーションや変形が必要な場合に最適な均一なクワッド構造を確保するため、迅速な自動リトポパスをかけることがよくあります。次に、UVを検査します。適切なテクセル密度、最小限のストレッチ、論理的なレイアウトを探します。スペースを最大化し、アイランドに適切なパディングを確保するために、UVを再パックすることがよくあります。この10分間のチェックは、後でテクスチャのブリーディングやベイクアーティファクトを防ぎます。
AI生成モデルは独自の表面詳細を持つことがあります。テクスチャが製品対応であり、同様のアセット間でタイリング可能であることを保証するために、Substance Painterのベイクツールを使用します。元のAIメッシュから高解像度のディテールマップを、リトポロジーされた低解像度メッシュにベイクします。これにより、タイリング可能なスマートマテリアルを適用しながら、モデル独自の高周波ディテールを保持できます。このステップは、AIアシストされたアセットのパック全体で、一貫性のあるスタイルを創出するために不可欠です。
テクスチャリングが完了すると、モデルのAI起源は関係なくなります。他のアセットと同様に扱い、標準のマーケットプレイスプリセットワークフローに沿って処理します。私のプリセットの価値はここで完全に実現されます。ベースメッシュが手彫りであろうと、スキャンされたものであろうと、AI生成されたものであろうと、Unreal、Unity、またはウェブへのエクスポートは同じであり、準拠が保証されます。これにより、アイデア出しやベースジオメトリにはAIの速度を活用しつつ、最終的な納品段階に技術的負債を持ち込むことを避けることができます。
Substance PainterのI/OスクリプトAPIを介してシンプルなPythonスクリプトを使用し、エクスポート前のタスクを自動化します。1つのスクリプトはテクスチャセットの監査を実行し、必要なマップ(Albedo、Normal、Roughness)がすべて存在し、正しく設定されていることを確認します。別のスクリプトは、プロジェクト全体のレイヤー名を標準化し、私の命名規則に合わせます。この自動化により、人為的なエラーが排除され、Tripoのようなツールから複数のアセットをバッチ処理する際に特に強力です。
エクスポートは検証されるまで完了ではありません。私のプロセス:
マーケットプレイスとエンジンは要件を更新します。私は四半期ごとにプリセットを見直します。Unreal 5.4が新しいマテリアル機能を導入した際、オプションでPackedMaterialAttributesマップをエクスポートするようにUEプリセットを更新しました。UnityとUnrealのマーケットプレイス技術ブログのRSSフィードを購読しています。Basis Universalのような新しい形式がより広くサポートされるようになったら、新しい実験的なプリセットを作成します。私のプリセットライブラリは、静的なファイルのセットではなく、生きているシステムです。
最も一般的なエラーは、意図しないアルファチャネルです。PainterからシンプルなAlbedo PNGをエクスポートすると、空のアルファチャネルが含まれることがあり、一部のゲームエンジンインポーターを混乱させる可能性があります。私のプリセットでは、透明度を必要としないすべてのマップ(Albedo、Normal、Roughnessなど)に対して、「Alpha Channel」エクスポートオプションを明示的に「None」に設定します。 透明度や切り抜きマップのように本当にアルファチャネルを使用するマップにのみ、「Alpha Channel: Embedded」を有効にします。
複数のマテリアルIDを持つアセット(例:肌、金属、布地を持つキャラクター)の場合、Painterプロジェクトをマテリアルごとに1つのテクスチャセットで整理します。私のエクスポートプリセットは、命名規則{AssetName}_{TextureSetName}_{MapType}.pngを使用して、すべてのテクスチャセットを1つのバッチでエクスポートするように設定されています。これにより、1つのアセットのすべてのファイルが一緒に保持されます。また、グローバルな汚れのオーバーレイのような共有マップには「Common」テクスチャセットを使用し、これは各マテリアルのエクスポートに自動的にベイクされます。
チーム全体での一貫性は不可欠です。私はSPP(Painterプロジェクト)ファイルだけでなく、プロジェクトテンプレート全体を共有します。これには以下が含まれます。
./export-presets/フォルダー。assets/フォルダーにコピー)を記載したREADME.txtファイル。
下のボタンをクリックして、数百万の3Dクリエイターに加わりましょう。超高精細なモデル生成と業界トップクラスのPBRテクスチャをお試しください。