Unity で推奨される設定Recommended settings for Unity

Unity には、すべてのプラットフォームの平均ケースである既定のオプションのセットが用意されています。Unity provides a set of default options that are generally the average case for all platforms. ただし、Unity は、プロジェクト設定を通じて切り替えることができる mixed reality に固有のいくつかの動作を提供します。However, Unity offers some behaviors specific to mixed reality that can be toggled through project settings.

パフォーマンスに優れた環境のセットアップPerformant environment set-up

低品質の設定Low-quality settings

アプリケーションが実行され、適切なフレームレートで適切に動作するように、 Unity の品質設定非常に低い 値に変更することが重要です (特に HoloLens 開発の場合)。It's important to modify the Unity Quality settings to Very Low so that your application is runs and performs well at the appropriate framerate, especially for HoloLens development. イマーシブヘッドセットでの開発では、VR エクスペリエンスを実現するデスクトップの仕様によっては、より低い品質パラメーターを使用せずにフレームレートを達成できます。For development on immersive headsets, depending on the specs of the desktop powering the VR experience, one can still achieve framerate without the lowest quality parameters.

Unity 2019 LTS 以降では、プロジェクトの品質レベルを設定できます。これを行うには、[プロジェクト設定の品質の 編集] に移動し、 > > 下向き矢印をクリックして 既定値 を設定します。 * * [非常に低品質レベル] をクリックします。In Unity 2019 LTS+, you can set the project's quality level by going to Edit > Project Settings > Quality and setting the Default by clicking on the downward arrow to the **Very Low-quality level.

光源の設定Lighting settings

品質のシーン設定と同様に、混合の現実アプリケーションに最適な光源設定を設定することが重要です。Similar to Quality scene settings, it's important to set optimal Lighting settings for your Mixed Reality application. Unity では、通常、シーンのパフォーマンスに最大の影響を与える光源の設定は、 リアルタイムのグローバルな照明 です。In Unity, the Lighting setting that will usually have the greatest performance impact on your scene is Realtime Global Illumination. グローバルな照明をオフにするには、ウィンドウ の > 表示 > 照明設定 の > リアルタイムグローバル照明 に移動します。You can turn off Global Illumination by going to Window > Rendering > Lighting Settings > Realtime Global Illumination.

にも光源の設定 があります。There's another lighting setting, Baked Global Illumination. この設定により、イマーシブヘッドセットに対して高性能で視覚的な結果を得ることができますが、HoloLens 開発には適用されません。This setting can provide performant and visually striking results on immersive headsets but isn't applicable for HoloLens development. 焼き込みグローバル照明 は、不明な環境と変化する環境の性質上、HoloLens では検出されない静的なオブジェクトに対してのみ計算されます。Baked Global Illumination is only calculated for static GameObjects, which aren't found in HoloLens scenes because of the nature of an unknown and changing environment.

詳細については、「 Unity からのグローバルな照明 」を参照してください。Read Global Illumination from Unity for more information.

注意

リアルタイムグローバル照明シーンごと に設定されるため、開発者はプロジェクト内のすべての Unity シーンに対してこのプロパティを保存する必要があります。Realtime Global Illumination is set per-scene and thus developers must save this property for every Unity scene in their project.

シングルパスインスタンスレンダリングパスSingle pass instancing rendering path

混合現実アプリケーションでは、シーンはユーザーに対して1回ずつ、2回表示されます。In Mixed Reality applications, the scene is rendered twice, once for each eye to the user. 従来の3D 開発と比較すると、これにより、計算する必要がある作業量が実質的に倍になります。Compared to traditional 3D development, this effectively doubles the amount of work that needs to be computed. CPU と GPU 時間の両方を節約するには、Unity で最も効率的なレンダリングパスを選択することが重要です。It's important to select the most efficient rendering path in Unity to save both on CPU and GPU time. シングルパスのインスタンス化レンダリングでは、Mixed Reality アプリの Unity レンダリングパイプラインが最適化されます。この設定は、プロジェクトごとに既定で有効にすることをお勧めします。Single pass instanced rendering optimizes the Unity rendering pipeline for Mixed Reality apps and it's recommended to enable this setting by default for every project.

Unity プロジェクトでこの機能を有効にするにはTo enable this feature in your Unity Project

  1. [Player XR Settings](プレーヤー XR 設定) を開きます ( [Edit](編集) > [Project Settings](プロジェクト設定) > [Player](プレーヤー) > [XR Settings](XR 設定) )Open Player XR Settings (go to Edit > Project Settings > Player > XR Settings)
  2. [Stereo Rendering Method](ステレオ レンダリング方法) ドロップダウン メニューから [Single Pass Instanced](単一パス インスタンス化) を選択します ( [Virtual Reality Supported](仮想現実のサポート) チェック ボックスをオンにする必要があります)Select Single Pass Instanced from the Stereo Rendering Method drop-down menu (Virtual Reality Supported checkbox must be checked)

この表示方法の詳細については、Unity から次の記事をお読みください。Read the following articles from Unity for more details with this rendering approach.

注意

単一パス インスタンス化レンダリングに関する一般的な問題の 1 つは、開発者がインスタンス化対応に作成されていない既存のカスタム シェーダーを持っている場合に発生します。One common issue with Single Pass Instanced Rendering occurs if developers already have existing custom shaders not written for instancing. この機能を有効にした後、開発者は、一部の GameObject が 1 つの視線でしかレンダリングしないことに気付く場合があります。After enabling this feature, developers may notice some GameObjects only render in one eye. これは、関連付けられたカスタム シェーダーに、インスタンス化のための適切なプロパティがないためです。This is because the associated custom shaders do not have the appropriate properties for instancing.

この問題への対処方法については、Unity から提供されている HoloLens 用の単一パス ステレオ レンダリングに関する記事を参照してくださいSee Single Pass Stereo Rendering for HoloLens from Unity for how to address this problem

深度バッファーの共有を有効にするEnable depth buffer sharing

ユーザーの認識によってより適切なホログラムの安定性を実現するには、Unity で 深度バッファー共有 プロパティを有効にすることをお勧めします。To achieve better hologram stability from the perception of the user, it's recommended to enable the Depth Buffer Sharing property in Unity. これをオンにすると、Unity は、アプリケーションによって生成された深度マップを Windows Mixed Reality プラットフォームと共有します。By turning this on, Unity will share the depth map produced by your application with the Windows Mixed Reality platform. このプラットフォームでは、アプリケーションによってレンダリングされる特定のフレームに対して、シーン専用のホログラムの安定性を最適化することができます。The platform can then better optimize hologram stability specifically for your scene for any given frame being rendered by your application.

Unity プロジェクトでこの機能を有効にするにはTo enable this feature in your Unity Project

  1. [Player XR Settings](プレーヤー XR 設定) を開きます ( [Edit](編集) > [Project Settings](プロジェクト設定) > [Player](プレーヤー) > [XR Settings](XR 設定) )Open Player XR Settings (go to Edit > Project Settings > Player > XR Settings)
  2. [仮想現実の sdk での 深度バッファーの共有を有効にする] のチェックボックスをオンにします。 [ > Windows Mixed reality の展開 (仮想環境のサポート] チェックボックスをオンにし ください)Select the checkbox for Enable Depth Buffer Sharing under Virtual Reality SDKs > Windows Mixed Reality expansion (Virtual Reality Supported checkbox must be checked)

また、特に HoloLens 開発の場合は、このパネルの [深度書式] の下にある 16 ビット深度 を選択することをお勧めします。Further, it's recommended to select 16-bit depth under the Depth Format setting in this panel, especially for HoloLens Development. 16ビットを24ビットに比較すると、帯域幅の要件を大幅に削減できます。これにより、移動または処理する必要があるデータの量が少なくなります。Selecting 16-bit compared to 24-bit will significantly reduce the bandwidth requirements as less data will need to be moved/processed.

Windows Mixed Reality プラットフォームがホログラムの安定性を最適化するためには、深度バッファーが正確であり、画面上のレンダリングされたホログラムに一致することに依存します。In order for the Windows Mixed Reality platform to optimize hologram stability, it relies on the depth buffer to be accurate and match any rendered holograms on screen. したがって、で深度バッファーを共有する場合は、色をレンダリングするときに、深度も表示することが重要です。Thus, with depth buffer sharing on, it is important when rendering color, to also render depth. Unity では、ほとんどの不透明または TransparentCutout のマテリアルは、既定で深度を表示しますが、透明でテキストオブジェクトはシェーダーに依存しますが、深度は表示されません。In Unity, most Opaque or TransparentCutout materials will render depth by default but transparent and text objects will not render depth although this is shader-dependent, etc.

Mixed Reality Toolkit 標準シェーダーを使用する場合、透過オブジェクトの深度をレンダリングするには、次のようにします。If using the Mixed Reality Toolkit Standard shader, to render depth for transparent objects:

  1. MRTK Standard シェーダーを使用している透明な素材を選択し、[インスペクターエディター] ウィンドウを開きます。Select the transparent material that is using the MRTK Standard shader and open the Inspector editor window
  2. [深度バッファーの共有] 警告で [ 今すぐ修正 ] ボタンを選択します。Select the Fix Now button within the depth buffer sharing warning. これは、表示モードカスタム に設定することによって、手動でも実行できます。次に、[モード] を [透明] に設定し、最後に [深度書き込み] を オン に設定します。This can also be performed manually by setting the Rendering Mode to Custom; then set Mode to Transparent and finally set Depth Write to On

重要

これらの値をカメラの近距離/遠方の設定と共に変更する場合、開発者は Z 戦いに注意する必要があります。Developers should beware of Z-fighting when changing these values along with the camera's near/far plane settings. Z 戦いは、2つのオブジェクトが同じピクセルにレンダリングしようとしたときに、深度バッファーの忠実性が制限されていることが原因で発生します (Z-Fighting occurs when two gameobjects try to render to the same pixel and due to limitations in fidelity of the depth buffer (i.e z 深度) では、他のオブジェクトの前面にあるオブジェクトを識別できません。z depth), Unity cannot discern which object is in front of the other. 開発者は、2つのゲームオブジェクトが同じ z 深度値に対して 戦う ので、ちらつきがあることに注意してください。Developers will note a flickering between two game objects as they fight for the same z-depth value. これは、カメラからの z 深度に対して計算する各オブジェクトの値の範囲が大きくなるため、24ビットの深度形式に切り替えることによって解決できます。This can be solved by switching to 24-bit depth format as there will be a larger range of values for each object to calculate upon for their z-depth from the camera.

ただし、特に HoloLens 開発では、カメラの近距離および遠くの平面をより小さな範囲に変更し、16ビット深度形式を保持することをお勧めします。However, it is recommended, particularly for HoloLens development, to modify the camera's near and far planes to a smaller range instead and retain the 16-bit depth format. Z 深度は、近距離および遠くのカメラ面に沿った値の範囲に非直線的にマップされます。The z-depth is non-linearly mapped to the range of values along the near and far camera planes. これは、シーンの メインカメラ を選択し、[ インスペクター] の下の [ 近距離 & 遠くのクリッププレーン の値を変更して範囲を小さくすることで変更できます (つまり、This can be modified by selecting the Main Camera in your scene and under Inspector, change the Near & Far Clipping Plane values to reduce their range (i.e 1000 m から100m または他の x 値など)from 1000m to 100m or other x value, etc.)

重要

16ビット深度形式を使用する場合、Unity はステンシルバッファーを作成しませんUnity does not create a stencil buffer when using 16-bit depth format. そのため、一部の Unity UI 効果とその他のステンシルが必要な効果は、8ビットの ステンシルバッファーを作成する24ビットの深度形式を選択しない限り機能しません。Thus, some Unity UI effects and other stencil-required effects will not work unless 24-bit depth format is selected which will create an 8-bit stencil buffer.

IL2CPP 向けのビルドBuilding for IL2CPP

Unity では .NET scripting バックエンドのサポートが非推奨とされているため、開発者はその UWP visual studio ビルドに対して IL2CPP を利用することをお勧めします。Unity has deprecated support for the .NET scripting backend and thus recommends that developers utilize IL2CPP for their UWP visual studio builds. これにはさまざまな利点がありますが、Unity の IL2CPP から visual studio ソリューションをビルドすることは、古い .net 方式よりも遅くなる可能性があります。Although this brings various advantages, building your visual studio solution from Unity for IL2CPP can be slower than the old .NET method. そのため、開発の反復時間に保存する IL2CPP を構築するためのベストプラクティスに従うことを強くお勧めします。Thus, it is highly recommended to follow best practices for building IL2CPP to save on development iteration time.

  1. 毎回同じディレクトリにプロジェクトをビルドして、インクリメンタルビルドを活用し、ビルド済みのファイルを再利用します。Leverage incremental building by building your project to the same directory every time, reusing the pre-built files there
  2. プロジェクト & ビルドフォルダーに対するマルウェア対策ソフトウェアスキャンを無効にするDisable anti-malware software scans for your project & build folders
    • Windows 10 設定アプリで ウイルス & 脅威保護 を開くOpen Virus & threat protection under your Windows 10 settings app
    • [ウイルス & 脅威保護の設定] の下の [設定の管理] を選択します。Select Manage Settings under Virus & threat protection settings
    • [除外] セクションで [除外の追加または削除] を選択します。Select Add or remove exclusions under the Exclusions section
    • [ 除外の追加 ] を選択し、Unity プロジェクトコードとビルド出力を含むフォルダーを選択します。Select Add an exclusion and select the folder containing your Unity project code and build outputs
  3. SSD を使用してビルドするUse an SSD for building

詳細については、「 IL2CPP のビルド時間の最適化 」を参照してください。Read Optimizing Build Times for IL2CPP for more info.

注意

特に、大きなアセット (スクリプト ファイルを除く) がある場合や、常にシーンやアセットを変更する Unity プロジェクトの場合は、キャッシュ サーバーをセットアップするとよいでしょう。Furthermore, it may be beneficial to setup a Cache Server, especially for Unity projects with a large amount of assets (excluding script files) or constantly changing scenes/assets. プロジェクトを開く際に、Unity は条件を満たすアセットを内部キャッシュ フォーマットで開発者のコンピューターに格納します。When opening a project, Unity stores qualifying assets into an internal cache format on the developer machine. 項目を変更した場合は、再インポートして再処理されるようにする必要があります。Items must be re-imported and thus re-processed when modified. このプロセスが 1 回実行されると、キャッシュ サーバーに保存され、すべての開発者に共有されます。すべての開発者がローカルで新しい変更の再インポート処理を行う必要がなくなるので、時間を節約できます。This process can be done once and saved in a Cache Server and consequently shared with other developers to save time, instead of every developer processing the re-import of new changes locally.

発行のプロパティPublishing properties

Holographic スプラッシュスクリーンHolographic splash screen

HoloLens には、モバイルクラスの CPU と GPU が搭載されています。これは、アプリの読み込みに少し時間がかかる場合があることを意味します。HoloLens has a mobile-class CPU and GPU, which means apps may take a bit longer to load. アプリが読み込まれている間、ユーザーには黒が表示されるので、何が起こっているかがわかります。While the app is loading, users will just see black, and so they may wonder what's going on. 読み込み中に知らせるためするには、holographic スプラッシュスクリーンを追加します。To reassure them during loading, you can add a holographic splash screen.

Holographic スプラッシュスクリーンを切り替えるには、次のようにします。To toggle the holographic splash screen:

  1. > プロジェクト設定 > プレーヤー の編集ページに進むGo to Edit > Project Settings > Player page
  2. [ Windows ストア ] タブを選択し、[ スプラッシュイメージ ] セクションを開きます。Select the Windows Store tab and open the Splash Image section
  3. Windows Holographic > Holographic スプラッシュイメージ プロパティの下にイメージを適用します。Apply your image under the Windows Holographic > Holographic Splash Image property.
    • [ Unity スプラッシュスクリーンを表示 する] オプションを切り替えると、unity ブランド化されたスプラッシュスクリーンが有効または無効になります。Toggling the Show Unity Splash Screen option will enable or disable the Unity branded splash screen. Unity Pro ライセンスを持っていない場合は、Unity ブランド化されたスプラッシュスクリーンが常に表示されます。If you don't have a Unity Pro license, the Unity branded splash screen will always be displayed.
    • Holographic スプラッシュイメージ が適用されている場合は、[Unity スプラッシュスクリーンを表示する] チェックボックスが有効になっているか無効になっているかにかかわらず、常に表示されます。If a Holographic Splash Image is applied, it will always be displayed whether the Show Unity Splash Screen checkbox is enabled or disabled. カスタム holographic スプラッシュイメージの指定は、Unity Pro ライセンスを持つ開発者のみが使用できます。Specifying a custom holographic splash image is only available to developers with a Unity Pro license.
Unity スプラッシュスクリーンを表示するShow Unity Splash Screen Holographic スプラッシュイメージHolographic Splash Image 動作Behavior
オンOn なしNone 既定の Unity スプラッシュスクリーンを5秒間、またはアプリが読み込まれるまでのいずれか長い方に表示します。Show default Unity splash screen for 5 seconds or until the app is loaded, whichever is longer.
オンOn CustomCustom 5秒間、またはアプリが読み込まれるまでのいずれか長い方のカスタムスプラッシュスクリーンを表示します。Show Custom splash screen for 5 seconds or until the app is loaded, whichever is longer.
オフOff なしNone アプリが読み込まれるまで、透明な黒 (何も表示されません) を表示します。Show transparent black (nothing) until app is loaded.
オフOff CustomCustom 5秒間、またはアプリが読み込まれるまでのいずれか長い方のカスタムスプラッシュスクリーンを表示します。Show Custom splash screen for 5 seconds or until the app is loaded, whichever is longer.

詳細については、 Unity のスプラッシュスクリーンのドキュメント を参照してください。Read Unity's Splash Screen documentation for more info.

追跡の損失Tracking loss

Mixed reality ヘッドセットは、その周囲に環境が表示されているかどうかに依存します。これに より、ホログラムを位置どおりに保つことができます。A Mixed reality headset depends on seeing the environment around it to construct world-locked coordinate systems, which allow holograms to remain in position. ヘッドセットが世界中で見つからない場合、ヘッドセットは 追跡が失わ れていると言います。When the headset is unable to locate itself in the world, the headset is said to have lost tracking. このような場合、空間ステージ、空間アンカー、空間マッピングなど、世界的にロックされている座標系に依存する機能は動作しません。In these cases, functionality dependent on world-locked coordinate systems, such as spatial stages, spatial anchors and spatial mapping, don't work.

追跡の停止が発生した場合、Unity の既定の動作では、ホログラムのレンダリングを停止し、 ゲームのループを一時停止して、ユーザーにとって簡単にフォローしている追跡紛失通知を表示します。If a loss of tracking occurs, Unity's default behavior is to stop rendering holograms, pause the game loop, and display a tracking lost notification that comfortably follows the users gaze. カスタム通知は、追跡損失イメージの形式で指定することもできます。Custom notifications can also be provided in the form of a tracking loss image. エクスペリエンス全体の追跡に依存するアプリの場合は、追跡が回復されるまで Unity がこの処理を完全に処理できるようにするだけで十分です。For apps that depend upon tracking for their whole experience, it's sufficient to let Unity handle this entirely until tracking is regained. 開発者は、追跡の停止中に表示されるカスタムイメージを指定できます。Developers can supply a custom image to be shown during tracking loss.

失われた画像の追跡をカスタマイズするには:To customize the tracking lost image:

  1. > プロジェクト設定 > プレーヤー の編集ページに進むGo to Edit > Project Settings > Player page
  2. [ Windows ストア ] タブを選択し、[ スプラッシュイメージ ] セクションを開きます。Select on the Windows Store tab and open the Splash Image section
  3. [ Windows Holographic > Tracking 損失イメージ ] プロパティの下にイメージを適用します。Apply your image under the Windows Holographic > Tracking Loss Image property.

自動一時停止のオプトアウトOpt-out of automatic pause

一部のアプリでは、追跡を必要としない場合があります (たとえば、360度のビデオビューアーなどの 向き専用のアプリ )。追跡が失われても、処理を中断せずに処理を継続する必要がある場合があります。Some apps may not require tracking (e.g. orientation-only apps such as 360-degree video viewers) or may need to continue processing uninterrupted while tracking is lost. 追跡動作の既定の損失をなくすことができますが、すべてのオブジェクトを表示/無効にする必要があります。これは、追跡損失のシナリオでは正しくレンダリングされません。You can opt out of the default loss of tracking behavior but you're responsible for hiding/disabling any objects, which wouldn't render properly in a tracking-loss scenario. ほとんどの場合、この場合に表示することをお勧めするコンテンツは、本文ロックされたコンテンツのみで、メインカメラを中心にしています。In most cases, the only content that is recommended to be render in that case is body-locked content, centered around the main camera.

自動一時停止動作を無効にするには、次のようにします。To opt out of automatic pause behavior:

  1. > プロジェクト設定 > プレーヤー の編集ページに進むGo to the Edit > Project Settings > Player page
  2. [ Windows ストア ] タブを選択し、[ スプラッシュイメージ ] セクションを開きます。Select the Windows Store tab and open the Splash Image section
  3. Windows Holographic > を変更します。 [一時停止の追跡を停止してイメージを表示 ] チェックボックスをオンにします。Modify the Windows Holographic > On Tracking Loss Pause and Show Image checkbox.

損失イベントの追跡Tracking loss events

追跡が失われたときのカスタム動作を定義するには、グローバル 追跡損失イベントを処理します。To define custom behavior when tracking is lost, handle the global tracking loss events.

機能Capabilities

アプリで特定の機能を利用するには、マニフェストで適切な機能を宣言する必要があります。For an app to take advantage of certain functionality, it must declare the appropriate capabilities in its manifest. マニフェスト宣言は Unity で作成できるため、今後のすべてのプロジェクトエクスポートに含まれるようになっています。The manifest declarations can be made in Unity so they're included in every future project export.

次の方法で、Mixed Reality アプリケーションに対して機能を有効にすることができます。Capabilities can be enabled for a Mixed Reality application by:

  1. > プロジェクト設定 > プレーヤー の編集ページに進むGo to Edit > Project Settings > Player page
  2. [ Windows ストア ] タブを選択し、[ 発行の設定 ] セクションを開いて、 機能 の一覧を探します。Select the Windows Store tab, open the Publishing Settings section, and look for the Capabilities list

Holographic アプリで一般的に使用される Api を有効にするための適用可能な機能は次のとおりです。The applicable capabilities for enabling the commonly used APIs for Holographic apps are:

機能Capability 機能を必要とする ApiAPIs requiring capability
SpatialPerceptionSpatialPerception SurfaceObserverSurfaceObserver
WebCamWebCam PhotoCapture と VideoCapturePhotoCapture and VideoCapture
PicturesLibrary / VideosLibraryPicturesLibrary / VideosLibrary PhotoCapture または VideoCapture (キャプチャされたコンテンツを格納する場合)PhotoCapture or VideoCapture, respectively (when storing the captured content)
マイクMicrophone VideoCapture (オーディオをキャプチャする場合)、DictationRecognizer、GrammarRecognizer、および KeywordRecognizerVideoCapture (when capturing audio), DictationRecognizer, GrammarRecognizer, and KeywordRecognizer
InternetClientInternetClient DictationRecognizer (および Unity Profiler の使用)DictationRecognizer (and to use the Unity Profiler)

関連項目See also