Unity 6.3のRender 3D as 2D — 2Dゲームの中のAI 3Dアセット
まずPicoBerryで3Dアセットの候補を作り、Unity 6.3の2Dプロジェクトに取り込みます。Mesh RendererやSkinned Mesh Rendererに載せて、シーンのほかの2D要素と同じように、並び順や照明、マスク、シェーダー、描画順のルールへ一つずつ合わせていきます。
Render 3D as 2Dの一連の流れです。3Dの候補を作り、2DスタイルのUnityシーンに置いて、並び順やマスク、照明、シェーダー、そしてGame Viewでの見やすさまで確認します。
Unityで3Dモデルを2Dとして描画するには?
PicoBerryでキャラクターやボス、収集アイテム、プロップのたたき台を生成し、シルエットが強いものだけ残します。次にUnityで描画方式を選びます。パララックスや被写界深度、フォグ、遠近の奥行きが重要ならZ-depth、シーンが2Dのソート規則に従う必要があればSort 3D as 2Dです。Sorting Groupや2D Lightの対象レイヤー、Sprite Mask、Mesh 2Dのマテリアルで既存の2Dシステムに組み込み、目標端末でドローコールとシェーダーコストを確認します。
2Dチームが2Dゲームに3Dを取り入れる理由
Render 3D as 2Dは、2Dゲームを丸ごと3Dプロジェクトに作り替えることではありません。制作コストを抑えたいとき、一度作ったものを使い回したいとき、スプライトシートだけでは維持しづらいスタイルを出したいとき。そうした必要な場面にだけ3Dを選んで使います。
2Dとして見せつつ3Dの奥行きを借りる
ゲームによっては、画面は最後まで2Dとして見せたいものです。奥行きや回転、カメラの自由さといった3Dの利点だけを取り込み、絵のトーンは一つにそろえます。3Dの技術を見せつけるのが目的ではありません。
方向ごとのスプライトを減らす
3Dキャラクターなら、回転させ、ポーズを変え、アニメーションを使い回せます。装備を持ち替えたりカットシーンに登場させたりしても、アングルごとにスプライトを描き直す必要がありません。
ボスと動くプロップ
大きなボスや収集オブジェクト、動くプロップ、アニメーションするセットピースは、高解像度のスプライトをフレームごとに描き起こすより、3Dの候補を回しながら調整するほうが楽なことがあります。
ゲームの中で実際に機能しなければならないこと
3Dアセットが2Dゲームに馴染むのは、シーンのほかの要素と同じルールに従うときだけです。Sorting LayerとOrder in Layerで前後を整え、2D Lightに反応させ、Sprite Maskと噛み合わせ、Shader Graphのマテリアルを当てたうえで、最終的なカメラの画面でずれがないかを確認します。
Sort 3D as 2D
Unity 6.3なら、Sorting Groupを付けた3Dオブジェクトも2D方式の並び替えに参加できます。Z-depthだけに頼らず、Sorting LayerとOrder in Layerでオブジェクトを制御できます。
URP 2D Rendererに合わせる
Mesh RendererやSkinned Mesh Rendererのオブジェクトを、URP 2D Rendererの流れの中で検証できます。2D LitやUnlitのマテリアル、互換性のあるShader Graphの出力も含めて確認します。
Scene ViewからGame Viewまで
単体で見ると良く見えるモデルでも、2Dゲームに入れると浮いてしまうことがあります。本当の確認は、カメラのフレーミング、スケール、レイヤー順、光への反応、そしてGame Viewでの見やすさです。
前景と照明になじませる
このシーンでは、手描きの2Dの村に3Dキャラクターを置いても絵が崩れないかを確かめます。木の茂み、柵、家、樽、ランタンの明かり、柔らかな背景。これらすべてが、3Dアセットがシーンのレイヤーや照明、絵画的なタッチに馴染むかどうかを試します。
奥行きと、プレイ中の見やすさ
このシーンでは、より広いプレイ空間でアセットを試します。大きな前景の木に隠れてもキャラクターははっきり見えなければならず、同時に遠くの橋や水、空、地形のレイヤーとも馴染む必要があります。プレイ中のスケール、シルエット、カメラのフレーミング、奥行きの順序を実際に確かめる、実践的なチェックです。
実制作レベルの2Dシーンで目視確認する
以下の例で、シーン構成、並び順、マスクの挙動、奥行きの見え方を、手に取るように確かめる基準に落とし込みます。

並び替えの考え方。3Dの奥行きを、プレイヤーが実際に見る2Dのレイヤー順に合わせます。
Sprite Maskとシーンエフェクトを基準に、3Dの候補が2D環境に馴染むかどうかを確認します。

Z-depthと2D Sorting Layerの違い。前後の順序がずれる問題を診断するときに使います。
まず描画順の戦略を決める
Render 3D as 2Dの問題の多くは、二つの並び替え方式を計画なしに混ぜたときに始まります。アセットを増やす前に、このシーンを奥行きで動かすのか、2Dのレイヤー順で動かすのかを決めておきましょう。
Z-depthで構成する
パララックスや透視カメラの奥行き、Depth of Field、Fog、深度ベースのブラー、Scene Depthのエフェクトに頼るシーンでは、実際のZ位置をそのまま使います。2.5Dプラットフォーマーやサイドビューのアドベンチャー、書き割り芝居のように奥行き自体がアートディレクションの一部になる場面によく合います。
3Dは2Dワールドのゲスト
プロジェクトがすでにSorting LayerやTilemap、Sprite Renderer、Order in Layerを軸に組まれているなら、Sort 3D as 2Dを使います。3Dオブジェクトも、もう一つの2Dシーン要素として振る舞わせ、プロジェクト全体を3D構造に引きずり込まないようにします。
混ざり合いを自然に見せるUnityの仕組み
生成した3Dの候補は、すでに2Dシーンを形づくっている仕組みと連携できて初めて役に立ちます。
Sorting Group
Sorting LayerとOrder in Layerの判断のために3Dオブジェクトを一つにまとめます。これでTilemapやSprite、前景、背景の要素のあいだに正しく収まります。
Mesh 2D Lit / Unlit
Mesh RendererやSkinned Mesh Rendererのオブジェクトに、URP 2D Renderer向けに設計されたマテリアルを使わせます。2D Lightに反応させたいならLit、そうでなければUnlitを選びます。
Shader Graph compatibility
カスタムのSprite Lit、Sprite Unlit、Sprite Custom Litシェーダーは、描画順で頼りにする前に、Sort 3D as 2Dと互換性があるかを確認しておきます。
Sprite Mask interaction
メッシュやスキンドメッシュのオブジェクトをSprite Maskと合わせて検証できます。洞窟やポータル、窓、ステルスゾーン、部分的に見せたい領域、キャラクターの一部だけを表示したい場面に使います。
Camera Sorting Layer Texture
特定のSorting Layerをテクスチャのようにサンプリングできます。これにより、2Dと3Dが混ざったシーンでも水面の反射や画面合成のエフェクトが実現できます。
VFX Graphと奥行き効果
Z-writingやScene Depth、Depth of Field、Fog、GPU駆動のエフェクトで、映画のような奥行きを加えられます。それでいて、ゲームは2Dシーンとして見えたままです。
実践的なワークフロー
PicoBerryはアイデアを素早く形にする層です。その候補が2Dプロジェクトの上に乗っているだけなのか、それとも一部として振る舞えるのかを確かめる場が、Unity 6.3です。
候補を生成する
PicoBerryでキャラクターやボス、収集アイテム、プロップを作り、シルエットがはっきりしていて2Dでの使い道が明確なものだけを残します。
描画戦略を選ぶ
パララックスやDepth of Field、Fog、透視の奥行きが効くならZ-depthを使います。ワールドがすでにSorting Layerを中心に組まれているなら、Sort 3D as 2Dを選びます。
2Dの仕組みに組み込む
Sorting Group、2D Lightの対象レイヤー、Sprite Maskとの噛み合い、Mesh 2D LitまたはUnlitのマテリアル、Shader Graphとの互換性を確認します。
パフォーマンスを検証する
候補を出荷できるものと見なす前に、draw callやマテリアル、シェーダーのコスト、Skinned Meshのコスト、マスクや奥行きのエフェクト、そしてターゲット端末での性能を検証します。
Unity 6.3実装チェックリスト
3Dオブジェクトを2Dプロジェクトに加える前に、どのUnityの仕組みがそれを2Dワールドの一部として扱うべきかを決めます。
レンダラーとマテリアル
Mesh RendererかSkinned Mesh Rendererでオブジェクトを載せます。マテリアルはMesh 2D Lit DefaultかMesh 2D Unlit Defaultを使うか、Shader Graphで作ったSprite Lit、Sprite Unlit、Sprite Custom Litなどの出力を当てます。
並び順とクリッピング
3Dオブジェクトが2Dの並び順に従うべきなら、Sorting Groupを付けます。そのうえで実際のカメラ画面で、Sorting LayerとOrder in Layer、Tilemapとの重なり、前景・背景でのクリッピングを確認します。
ライト・マスク・奥行き
2D Lightにきちんと反応するか、Sprite Maskと噛み合うか、Runtime Mask Interactionが正しく働くか、奥行き効果用のZ-writingができるかを見ます。シーンに反射や水の効果があるなら、Camera Sorting Layer Textureも押さえます。
パフォーマンスと制作のガードレール
3Dはスプライト制作のコストを減らせますが、実行時に自動的に軽くなるわけではありません。どの候補も、必ず計測する対象として扱いましょう。
レンダーコストを計測する
draw call、マテリアル数、テクスチャサイズ、シェーダーの複雑さ、Skinned Meshのコスト、batchingの挙動を追いかけます。大きなボスが巨大なスプライト連番より軽いこともありますが、それはシーンで検証できたときだけの話です。
並び替えのルールをそろえる
Z-depth、Sorting Layer、2D Lightのルールを無造作に混ぜないでください。どのオブジェクトが奥行きを使い、どれが2Dのレイヤー順に従い、どれがDepth Bufferに書き込むべきかを、あらかじめ切り分けておきます。
ターゲット端末でテストする
マスクの噛み合い、奥行きのエフェクト、水面の反射、VFX Graphのエフェクト、スキンドアニメーションは、デスクトップとモバイルで挙動が変わることがあります。狙いはすばやく見極めることであって、検証を飛ばすことではありません。
FAQ
これはPicoBerryのページですか、それともUnityのページですか?
PicoBerryを起点に、Unityのワークフローへつなぐユースケースです。3Dアセットの候補はPicoBerryで生成し、それが2Dゲームに合うかどうかは、URP 2D RendererやSort 3D as 2D、2D Light、Sprite Mask、Shader GraphといったUnity 6.3の機能で見極めます。
Sort 3D as 2Dは何をするものですか?
3Dオブジェクトを2D方式の描画順に参加させます。Sorting Groupを付け、Sorting LayerとOrder in Layerを正しく設定すれば、Mesh RendererやSkinned Mesh Rendererも、シーンの並び順の中で2Dオブジェクトのように振る舞えます。
2Dゲームで3Dアセットを使うべきなのはどんなときですか?
回転やアニメーションの使い回し、大きなボス、動的なプロップ、カットシーンでの再利用、奥行きの効果。こうした要素が、追加の手間をかける価値があるほど重要なときに3Dが生きます。2Dゲームのすべてのアセットを3Dにする必要はありません。
Unity 6.3ではどんなマテリアル設定が大事ですか?
2D Rendererの流れなら、まずMesh 2D Lit DefaultかMesh 2D Unlit Defaultから始めます。Shader Graphを使う場合は、その出力と互換性の設定が、狙いどおりの2Dの並び替えとライティングに対応しているかを確認します。
3DオブジェクトはSprite Maskや2D Lightと一緒に機能しますか?
レンダラーとプロジェクトの設定が対応していれば、はい。Mesh RendererやSkinned Mesh Rendererのオブジェクトは、2D LightやSprite Maskとの噛み合いを含めて検証できます。ただし正確な挙動は、実際に使うシーンとレンダーパイプラインでテストして確かめてください。
どんな2Dゲームでも使えますか?
どこでも使えると保証はできません。アートディレクションやカメラの設定、並び替えの戦略、レンダーパイプライン、マテリアルの複雑さ、マスクや奥行きのエフェクト、性能目標によって変わります。手順を踏んで検証するワークフローとして扱ってください。
PicoBerryで始めて、ゲームの中で確かめましょう
まず3Dアセットの候補を生成し、本格的な制作レビューに入る前に、Unity 6.3で並び順や2Dのライティング、マスク、シェーダーの互換性、Game Viewでの見やすさをテストしましょう。