移植ガイドPorting guides


HoloLens 2 に固有のガイダンスについて近日します。More guidance specific to HoloLens 2 coming soon.

Windows 10 では、没入型および holographic ヘッドセットのサポートは直接含まれています。Windows 10 includes support for immersive and holographic headsets directly. オペレーティング システムのプラットフォーム API の上に存在するライブラリに依存関係を持つこれらのコンテンツを Oculus Rift や HTC Vive などの別のデバイスをビルドした場合。If you have built content for another device such as the Oculus Rift or HTC Vive, these have dependencies on libraries that exist above the operating system's platform API. Windows Mixed Reality を経由で既存のコンテンツを使えるようにするには、Windows Api にその他のこれらの Sdk の使用状況の再ターゲットする必要があります。Bringing existing content over to Windows Mixed Reality involves retargeting usage of these other SDKs to the Windows APIs. 複合現実の Windows プラットフォーム Apiユニバーサル Windows プラットフォーム (UWP) アプリ モデルでのみ動作します。The Windows platform APIs for mixed reality only work in the Universal Windows Platform (UWP) app model. したがって移植エクスペリエンスの一部が場合は、アプリは UWP の既には構築されずからになります UWP に移植します。So if your app is not already built for UWP, porting to UWP will be part of the porting experience.

移植の概要Porting overview

大まかに、これらは既存のコンテンツを移植するための手順です。At a high-level, these are the steps involved in porting existing content:

  1. お使いの PC には、Windows 10 Fall Creators Update (16299) が実行されていることを確認します。Make sure your PC is running the Windows 10 Fall Creators Update (16299). 推奨されなく Insider スキップ先リングからビルドのプレビューを受け取るようにそれらのビルドを複合現実の開発で最も安定したことはできません。We no longer recommend receiving preview builds from the Insider Skip Ahead ring, as those builds won't be the most stable for mixed reality development.
  2. グラフィックスやゲーム エンジンの最新バージョンにアップグレードします。Upgrade to the latest version of your graphics or game engine. ゲーム エンジンは、Windows 10 SDK バージョン 10.0.15063.0 (2017 年 4 月リリース) をサポートする必要がありますまたはそれ以降。Game engines will need to support the Windows 10 SDK version 10.0.15063.0 (released in April 2017) or higher.
  3. すべてのミドルウェア、プラグインまたはコンポーネントをアップグレードします。Upgrade any middleware, plug-ins or components. アプリに任意のコンポーネントが含まれている場合は、最新バージョンにアップグレードすることをお勧めします。If your app contains any components, it's a good idea to upgrade to the latest version. 最も一般的なプラグインの新しいバージョンでは、UWP のサポートがあります。Newer versions of most common plug-ins have support for UWP.
  4. 重複する Sdk の依存関係を削除します。Remove dependencies on duplicate SDKs. コンテンツの対象デバイス、によっては、削除するか、その SDK (例: SteamVR) を条件付きでコンパイルする必要がありますので、Windows Api を代わりに対象にできます。Depending on which device your content was targeting, you'll need to remove or conditionally compile out that SDK (e.g. SteamVR) so you can target the Windows APIs instead.
  5. ビルドの問題に取り組みます。Work through build issues. この時点では、移植の演習では、アプリ、エンジン、およびコンポーネントの依存関係がある場合に固有です。At this point, the porting exercise is specific to your app, your engine, and the component dependencies you have.

移植の一般的な手順Common porting steps

一般的な手順 1:適切な開発のハードウェアがあるかどうかを確認します。Common step 1: Make sure you have the right development hardware

ツールをインストールするページは、開発の推奨されるハードウェアを一覧表示されます。The install the tools page lists the recommended development hardware.

一般的な手順 2:Windows 10 の最新のフライトへのアップグレードします。Common step 2: Upgrade to the latest flight of Windows 10

Windows Mixed Reality プラットフォームは、まだアクティブの開発中に最も効果的なは、ためお勧めします"Windows Insider Fast"フライト中します。The Windows Mixed Reality platform is still under active development, and to be most effective, we recommend being on the "Windows Insider Fast" flight. Windows のフライトへのアクセスを確保するためにする必要がありますWindows Insider Program に参加します。In order to have access to windows flights, you will need to join the Windows Insider Program.

  1. インストール、 Windows 10 Creators UpdateInstall the Windows 10 Creators Update
  2. 参加Windows Insider プログラム。Join the Windows Insider Program.
  3. 有効にする開発者モードEnable Developer Mode
  4. 切り替えて、 Windows Insider Fast フライト設定を使用して、更新プログラムとセキュリティ セクション-->Switch to the Windows Insider Fast flights through Settings --> Update & Security Section

一般的な手順 3:Visual Studio の最新のビルドにアップグレードします。Common step 3: Upgrade to the most recent build of Visual Studio

一般的な手順 4:ストアの準備が完了します。Common step 4: Be Ready for The Store

一般的な手順 5:正しいアダプターを選択します。Common step 5: Choose the correct Adapter

  • 2 つの Gpu と notebook のようなシステムで正しいアダプターを対象します。In systems like notebooks with two GPUs, target the correct adapter. これに適用されます、Unity アプリをさらに、ID3D11Device が作成される場所明示的または暗黙的にネイティブの DirectX アプリ (Media Foundation)、その機能。This applies to Unity apps, in addition to native DirectX apps, where a ID3D11Device is created, either explicitly or implicitly (Media Foundation), for its functionality.

Unity の移植のガイダンスUnity porting guidance

Unity の手順 1:一般的な移植の手順に従いますUnity step 1: Follow the common porting steps

すべての一般的な手順に従います。Follow all of the common steps. 手順 3 で選択、 Unity によるゲーム開発のワークロード。When in step #3, select the Game Development with Unity workload. 以下の手順から Unity の新しいバージョンをインストールするしますので、Unity エディターのオプション コンポーネントの選択を解除することがあります。You may deselect the Unity Editor optional component since you'll be installing a newer version of Unity from the instructions below.

Unity の手順 2:Windows MR サポートと Unity の最新のパブリック ビルドへのアップグレードします。Unity step 2: Upgrade to the latest public build of Unity with Windows MR Support

  1. 最新バージョンをダウンロードUnity のパブリック ビルドの推奨複合現実をサポートします。Download the latest recommended public build of Unity with mixed reality support.
  2. 開始する前に、プロジェクトのコピーを保存します。Save a copy of your project before you get started
  3. レビュー、ドキュメント移植の Unity から入手できます。Review the documentation available from Unity on porting.
  4. に従って、指示自動の API の更新ツールを使用するための Unity のサイトFollow the instructions on Unity's site for using their automatic API updater
  5. 確認しを実行しているプロジェクトを取得するために必要な追加の変更があるかどうかを参照してください、残りエラーと警告を使用します。Check and see if there are additional changes that you need to make to get your project running, and work through any remaining errors and warnings. 注:依存するミドルウェアをした場合は、(下の手順 3 で他の詳細) を開始するには、そのミドルウェアを更新する必要があります。Note: If you have middleware that you depend on, you may need to update that middleware to get going (more details in step 3 below).

Unity の手順 3:ミドルウェアを最新バージョンにアップグレードします。Unity step 3: Upgrade your middleware to the latest versions

更新では、Unity、ゲームまたはアプリケーションが依存している 1 つまたは複数のミドルウェア パッケージを更新する必要がある可能性があります。With any Unity update, there is a good chance that you need to update one or more middleware packages that your game or application depends on. さらに、すべてのミドルウェアの最新バージョンで、移植プロセスの残りの部分で成功する可能性が向上します。Additionally, being on the latest version of all of your middleware will increase your likelihood of success throughout the rest of the porting process. 多くのミドルウェア パッケージは、ユニバーサル Windows プラットフォーム (UWP) のサポートを最近追加したし、最新のバージョンにアップグレードすると、その作業を活用することです。Many middleware packages have recently added support for Universal Windows Platform (UWP), and upgrading to the most recent versions will let you leverage that work.

Unity の手順 4:対象とするユニバーサル Windows プラットフォーム (UWP) でを実行するアプリケーションUnity step 4: Target your application to run on Universal Windows Platform (UWP)

ツールをインストールした後は、アプリをユニバーサル Windows アプリとして実行する必要があります。After installing the tools, you need to get your app running as a Universal Windows app.

  • に従って、詳しいステップ バイ ステップ チュートリアルUnity によって提供されます。Follow the detailed step by step walk through provided by Unity. 最新 LTS リリース (20xx.4 のリリース) の Windows MR で維持する必要があることに注意してください。Please note that you should stay on the latest LTS release (any 20xx.4 release) for Windows MR.
  • その他の UWP 開発リソースを参照してください、 Windows 10 ゲームの開発ガイドします。For more UWP development resources, take a look at the Windows 10 game development guide.
  • Unity の il2cpp バック エンドのサポートを強化し続けていることに注意してください。Il2cpp バック エンドは、いくつかの UWP ポート大幅に簡素化します。Please note that Unity continues to improve IL2CPP support; IL2CPP makes some UWP ports significantly easier. 場合は、.Net バックエンドのスクリプトを対象としている現在、代わりに、il2cpp バック エンドのバックエンドを利用する変換を検討してください。If you are currently targeting the .Net scripting backend, you should consider converting to leverage the IL2CPP backend instead.

注:アプリケーションにすべての依存関係がある場合は、ストリームから一致などの特定のサービス、デバイスでは、この手順で無効にする必要があります。Note: If your application has any dependencies on device specific services, such as match making from Steam, you will need to disable them at this step. 後では、Windows が提供する同等のサービスにフックすることができます。At a later time, you can hook up to the equivalent services that Windows provides.

Unity の手順 5:(非推奨)Unity step 5: (Deprecated)

手順 5 では、必要なくなりました。Step 5 is no longer required. 私たち離職する人が、ここでは同じ手順のインデックスを作成できるようにします。We are leaving it here so that the indexing of steps remains the same.

Unity の手順 6:Windows Mixed Reality ハードウェア設定の取得します。Unity step 6: Get your Windows Mixed Reality hardware set up

  1. 確認手順イマーシブ ヘッドセットのセットアップReview steps in Immersive headset setup
  2. についてWindows Mixed Reality シミュレーターを使用してWindows Mixed Reality ホームに移動します。Learn about Using the Windows Mixed Reality simulator and Navigating the Windows Mixed Reality home

Unity の手順 7:対象とするアプリケーションを Windows Mixed Reality を実行するにはUnity step 7: Target your application to run on Windows Mixed Reality

  1. 最初に、削除するか、特定 VR SDK ライブラリ サポートを条件付きでコンパイルする必要があります。First, you must remove or conditionally compile out any other library support specific to a particular VR SDK. これらの資産は、設定と Windows Mixed Reality などの他の VR Sdk と互換性のない方法で、プロジェクトのプロパティを頻繁に変更します。Those assets frequently change settings and properties on your project in ways that are incompatible with other VR SDKs, such as Windows Mixed Reality.
    • たとえば、SteamVR SDK をプロジェクトに参照する場合、Windows ストアのビルド ターゲットをエクスポートするときに、それらのプレハブとスクリプト API の呼び出しを除外するプロジェクトを更新する必要があります。For example, if your project references the SteamVR SDK, you will need to update your project to exclude those prefabs and script API calls when exporting for the Windows Store build target.
    • その他の VR Sdk を条件付きで除外するための特定の手順は近日公開予定。Specific steps for conditionally excluding other VR SDKs is coming soon.
  2. Unity プロジェクトで、対象 Windows 10 SDKIn your Unity project, target the Windows 10 SDK
  3. 各シーンのカメラのセットアップFor each scene, setup the camera

Unity の手順 8:ステージを使用して、床の上のコンテンツを配置するにはUnity step 8: Use the stage to place content on the floor

複合現実エクスペリエンスをビルドするには幅広いのスケールが発生するします。You can build Mixed Reality experiences across a wide range of experience scales.

移植する場合、取り付けられているスケールのエクスペリエンス、Unity に設定されていることを確認する必要があります、静止領域の種類の追跡。If you're porting a seated-scale experience, you must ensure Unity is set to the Stationary tracking space type:


追跡するために Unity のワールド座標系を設定、フレームの静止した基準します。This sets Unity's world coordinate system to track the stationary frame of reference. カメラの既定の場所の前に、エディターで、静止した追跡モードでコンテンツが配置されます (フォワードは ~ Z)、アプリの起動時にも、ユーザーが表示されます。In the Stationary tracking mode, content placed in the editor just in front of the camera's default location (forward is -Z) will appear in front of the user when the app launches. 配信元が、ユーザーを戻します取り付けられて、Unity の呼び出すことができますXR します。InputTracking.Recenterメソッド。To recenter the user's seated origin, you can call Unity's XR.InputTracking.Recenter method.

移植する場合、継続スケール エクスペリエンスまたはルーム スケール エクスペリエンスコンテンツ、フロアの基準とした配置します。If you're porting a standing-scale experience or room-scale experience, you'll be placing content relative to the floor. ユーザーの理解を使用して floor、 空間ステージ、現場レベルの配信元と省略可能な領域の境界を表す、ユーザーの定義、初回実行時に設定します。You reason about the user's floor using the spatial stage, which represents the user's defined floor-level origin and optional room boundary, set up during first run. これらのエクスペリエンス向けに設定されている Unity を確認する必要があります、 RoomScale領域の種類を追跡します。For these experiences, you must ensure Unity is set to the RoomScale tracking space type. RoomScale 既定では、中に明示的に設定し、ユーザーが調整、部屋から自分のコンピューターを移動が、状況をキャッチする true に戻すを取得することを確認する必要があります。While RoomScale is the default, you'll want to set it explicitly and ensure you get back true, to catch situations where the user has moved their computer away from the room they calibrated:

if (XRDevice.SetTrackingSpaceType(TrackingSpaceType.RoomScale))
    // RoomScale mode was set successfully.  App can now assume that y=0 in Unity world coordinate represents the floor.
    // RoomScale mode was not set successfully.  App cannot make assumptions about where the floor plane is.

アプリが正常に RoomScale の空間型で、y に、コンテンツの追跡を設定すると、0、床の上にプレーンが表示されますを = です。Once your app successfully sets the RoomScale tracking space type, content placed on the y=0 plane will appear on the floor. 原点 (0, 0, 0) は、特定の場所 - セットアップ時に直面していましたが、順方向を表す Z で部屋のセットアップ中に、ユーザー縦位置、床の上になります。The origin at (0, 0, 0) will be the specific place on the floor where the user stood during room setup, with -Z representing the forward direction they were facing during setup.

スクリプトのコードでできますを TryGetGeometry メソッドを呼び出している、境界の多角形を取得する UnityEngine.Experimental.XR.Boundary 型 TrackedArea の境界の種類を指定します。In script code, you can then call the TryGetGeometry method on your the UnityEngine.Experimental.XR.Boundary type to get a boundary polygon, specifying a boundary type of TrackedArea. ユーザーに (戻る頂点のリスト) の境界が定義されている場合、配信するには、安全ではわかって、ルーム スケール エクスペリエンスをユーザーに場所がシーンを中心ご説明を作成します。If the user defined a boundary (you get back a list of vertices), you know it is safe to deliver a room-scale experience to the user, where they can walk around the scene you create.

エントリのユーザーがそれに近づくと、システムは境界がレンダリングに自動的に注意してください。Note that the system will automatically render the boundary when the user approaches it. アプリは、それ自体の境界を表示するためにこの多角形を使用する必要はありません。Your app does not need to use this polygon to render the boundary itself.

詳細については、次を参照してください。、 Unity の座標系ページ。For more details, see the Coordinate systems in Unity page.

一部のアプリケーションでは、その相関関係を制限するのに四角形を使用します。Some applications use a rectangle to constrain their interaction. 囲む四角形の最大の取得は直接サポートされていません、UWP API または Unity でします。Retrieving the largest inscribed rectangle is not directly supported in the UWP API or Unity. コード例下記のリンクを示しますトレースの境界内の四角形を検索する方法。The example code linked to below shows how to find a rectangle within the traced bounds. ただし、結果が期待と一貫性のある一般的には、ヒューリスティックに基づいている最適なソリューションが見つからないことがあるためにです。It is heuristic based so may not find the optimal solution, however, results are generally consistent with expectations. アルゴリズムのパラメーターを調整することで、処理時間がより正確な結果を検索します。Parameters in the algorithm can be tuned to find more precise results at the cost of processing time. アルゴリズムは、MRTP バージョンの Unity 5.6 のプレビューを使用する混在現実ツールキットのフォークでは。The algorithm is in a fork of the Mixed Reality Toolkit that uses the 5.6 preview MRTP version of Unity. これは、市販されていません。This is not publically available. コードは、2017.2 以降のバージョンの Unity で直接使用する必要があります。The code should be directly usable in 2017.2 and higher versions of Unity. コードは、近い将来に現在 MRTK に移植されます。The code will be ported to the current MRTK in the near future.

GitHub でコードの zip ファイル重要なファイル。zip file of code on GitHub Important files:

  • Assets/HoloToolkit/Stage/Scripts/StageManager.cs - 使用方法の例Assets/HoloToolkit/Stage/Scripts/StageManager.cs - example of usage
  • Assets/HoloToolkit/Stage/Scripts/LargestRectangle.cs - アルゴリズムの実装Assets/HoloToolkit/Stage/Scripts/LargestRectangle.cs - implementation of the algorithm
  • Assets/HoloToolkit-UnitTests/Editor/Stage/LargestRectangleTest.cs - アルゴリズムの単純なテストAssets/HoloToolkit-UnitTests/Editor/Stage/LargestRectangleTest.cs - trivial test of the algorithm

結果の例:Example of results:


アルゴリズムは、Daniel Smilkov でブログに基づいています。最も大きな四角形を多角形Algorithm is based on a blog by Daniel Smilkov: Largest rectangle in a polygon

Unity の手順 9:入力モデルを使用します。Unity step 9: Work through your input model

各ゲームや既存のッドマウントを対象とするアプリケーションは、一連の動作は、必要な入力とこれらの入力を取得するために呼び出す特定の Api の種類は、処理する入力のがあります。Each game or application targeting an existing HMD will have a set of inputs that it handles, types of inputs that it needs for the experience, and specific APIs that it calls to get those inputs. Windows Mixed Reality で使用可能な入力を活用するためにできる限り単純さにしようとでの投資を行いました。We have invested in trying to make it as simple and straightforward as possible to take advantage of the inputs available in Windows Mixed Reality.

  1. 目を通してください、 移植 for Unity ガイド入力 Windows Mixed Reality 方法の詳細については、入力が公開して、今すぐ行うことができます、どのようなアプリケーションにマップされる方法です。Read through the Input porting guide for Unity for details of how Windows Mixed Reality exposes input, and how that maps to what your application may do today.
  2. Unity のクロス-VR-SDK 入力 API を活用しようとするまたは、MR 固有 API を入力するかどうかを選択します。Choose whether you are going to leverage Unity's cross-VR-SDK input API, or the MR-specific input API. 今日の Unity VR アプリで使用する一般的な Input.GetButton/Input.GetAxis Api Oculus 入力OpenVR 入力します。The general Input.GetButton/Input.GetAxis APIs are used by Unity VR apps today for Oculus input and OpenVR input. 既にアプリがモーションのコント ローラーのこれらの Api を使用して、これは、最も簡単なパスにボタンと Input Manager での軸を再マップする必要があるだけです。If your apps are already using these APIs for motion controllers, this is the easiest path - you should just need to remap buttons and axes in the Input Manager.
    • いずれかの一般的なクロス-VR-SDK Input.GetButton/Input.GetAxis Api または MR 固有の UnityEngine.XR.WSA.Input Api を使用して Unity でのモーション コント ローラーのデータにアクセスすることができます。You can access motion controller data in Unity using either the general cross-VR-SDK Input.GetButton/Input.GetAxis APIs or the MR-specific UnityEngine.XR.WSA.Input APIs. (以前の Unity 5.6 で UnityEngine.XR.WSA.Input 名前空間)(previously in the UnityEngine.XR.WSA.Input namespace in Unity 5.6)
    • 参照してください、 toolkit の使用例ゲームパッド、モーションのコント ローラーを結合します。See the example in Toolkit that combines gamepad and motion controllers.

Unity 手順 10:パフォーマンス テストとチューニングUnity step 10: Performance testing and tuning

Windows Mixed Reality はデバイスの広範なクラスで使用できる、高の範囲 Pc のゲームを終了、広範な市場に Pc をメイン ストリームします。Windows Mixed Reality will be available on a broad class of devices, ranging from high end gaming PCs, down to broad market mainstream PCs. どのような市場を対象としている、によって、アプリケーションの利用可能なコンピューティングおよびグラフィックスの予算に大きな違いは。Depending on what market you are targeting, there is a significant difference in the available compute and graphics budgets for your application. この移植の演習では、可能性が高い premium の PC を活用することをアプリに大きなコンピューティングおよびグラフィックス ・予算の利用があった。During this porting exercise, you are likely leveraging a premium PC, and have had significant compute and graphics budgets available to your app. テストし、でアプリをプロファイリングする必要がありますより広範な対象ユーザーにアプリを使用できるようにする場合は、する代表的なハードウェア ターゲットします。If you wish to make your app available to a broader audience, you should test and profile your app on the representative hardware that you wish to target.

両方UnityVisual Studioパフォーマンス プロファイラーでは、両方は、 MicrosoftIntel発行のガイドラインパフォーマンスのプロファイリングおよび最適化します。Both Unity and Visual Studio include performance profilers, and both Microsoft and Intel publish guidelines on performance profiling and optimization. パフォーマンスの詳細については、パフォーマンスと for Mixed Realityします。There is an extensive discussion of performance available at Understanding Performance for Mixed Reality. さらに、Unity の詳細データがあるfor Unity のパフォーマンスに関する推奨事項します。Further, there are specific details for Unity under Performance Recommendations for Unity.

関連項目See also