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 品質設定非常に低いものに変更することが重要です。It is important to modify the Unity Quality settings for your environment to Very Low. これにより、アプリケーションが適切なフレームレートで実行されるようにすることができます。This will help ensure your application is running performantly at the appropriate framerate. これは、HoloLens 開発で非常に重要です。This is extremely significant 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 2018 LTS + では、プロジェクトの品質レベルは次の方法で設定できます。In Unity 2018 LTS+, the project's quality level can be set by:

[プロジェクト設定編集 > プロジェクトの設定] の [品質の > ] で、[品質レベル] の下矢印をクリックして既定値を設定 > ます。Under Edit > Project Settings > Quality > Set the Default by clicking on the downward arrow to the Very Low quality level

光源の設定Lighting settings

品質のシーン設定と同様に、混合の現実アプリケーションに最適な光源設定を設定することが重要です。Similar to Quality scene settings, it is 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. これをオフにするには、 [ウィンドウ] の下に移動し、 > 光源の設定 > リアルタイムのグローバル照明表示 > ます。This can be turned off by going under Window > Rendering > Lighting Settings > Realtime Global Illumination.

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

詳細については、 Unity からのグローバルな照明をお読みください。Please 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 で最も効率的なレンダリングパスを選択することが重要です。Thus, it is 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 thus it is recommended to enable this setting by default for every project.

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

  1. プレーヤーの XR の設定を開きます ( [編集] > プロジェクトの設定 > player > XR 設定)Open Player XR Settings (go to Edit > Project Settings > Player > XR Settings)
  2. [ステレオレンダリングメソッド] ドロップダウンメニューから [シングルパスインスタンス] を選択します ( [Virtual Reality がサポートさ] れる チェックボックスをオンにする必要があります)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. この機能を有効にした後、開発者は、一部のオブジェクトが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 is 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 will then be able to 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. プレーヤーの XR の設定を開きます ( [編集] > プロジェクトの設定 > player > 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 is 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 generally 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 significantly 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, re-using 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 プロジェクトコードとビルド出力を含むフォルダーを選択します。Click Add an exclusion and select the folder containing your Unity project code and build outputs
  3. SSD を使用してビルドするUtilize an SSD for building

詳細については、「 IL2CPP のビルド時間の最適化」を参照してください。Please 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. [ Edit > Project Settings > Player ] ページにアクセスしますGo to Edit > Project Settings > Player page
  2. [Windows ストア] タブをクリックし、 [スプラッシュイメージ] セクションを開きます。Click the Windows Store tab and open the Splash Image section
  3. 必要なイメージをWindows Holographic > Holographic スプラッシュイメージプロパティの下に適用します。Apply your desired 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 do not 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 regardless of 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 NoneNone 既定の Unity スプラッシュスクリーンを5秒間、またはアプリが読み込まれるまでのいずれか長い方に表示します。Show default Unity splash screen for 5 seconds or until the app is loaded, whichever is longer.
On カスタムCustom 5秒間、またはアプリが読み込まれるまでのいずれか長い方のカスタムスプラッシュスクリーンを表示します。Show Custom splash screen for 5 seconds or until the app is loaded, whichever is longer.
[オフ]Off NoneNone アプリが読み込まれるまで、透明な黒 (何も表示されません) を表示します。Show transparent black (nothing) until app is loaded.
[オフ]Off カスタムCustom 5秒間、またはアプリが読み込まれるまでのいずれか長い方のカスタムスプラッシュスクリーンを表示します。Show Custom splash screen for 5 seconds or until the app is loaded, whichever is longer.

詳細については、 Unity のスプラッシュスクリーンのドキュメントを参照してください。Please 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, do not 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. [ Edit > Project Settings > Player ] ページにアクセスしますGo to Edit > Project Settings > Player page
  2. [Windows ストア] タブをクリックし、 [スプラッシュイメージ] セクションを開きます。Click on the Windows Store tab and open the Splash Image section
  3. [Windows Holographic > Tracking 損失イメージ] プロパティで目的のイメージを適用します。Apply your desired 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. このような場合、アプリは、既定では追跡動作の損失をオプトアウトできます。In these cases, apps can opt out of the default loss of tracking behavior. これを選択する開発者は、追跡損失のシナリオで適切に表示されないオブジェクトを表示/無効にする役割を担います。Developers who choose this are responsible for hiding/disabling any objects which would not 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 ストア] タブをクリックし、 [スプラッシュイメージ] セクションを開きます。Click 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 are included in every subsequent project export.

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

  1. [ Edit > Project Settings > Player ] ページにアクセスしますGo to Edit > Project Settings > Player page
  2. [Windows ストア] タブをクリックし、 [発行の設定] セクションを開いて、機能の一覧を探します。Click 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