移植ガイド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. Oculus Rift や HTC Naopak などの別のデバイス用にコンテンツを構築している場合は、オペレーティングシステムのプラットフォーム API の上に存在するライブラリに依存関係があります。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 に取り込むには、これらの他の Sdk を Windows Api に再ターゲット使用する必要があります。Bringing existing content over to Windows Mixed Reality involves retargeting usage of these other SDKs to the Windows APIs. Mixed reality の 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 の秋の作成者の更新プログラム (16299) が実行されていることを確認します。Make sure your PC is running the Windows 10 Fall Creators Update (16299). 内部からのプレビュービルドを受信することはお勧めできなくなりました。これらのビルドは、mixed reality 開発では最も安定していないためです。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 の作成者の更新プログラムをインストールするInstall the Windows 10 Creators Update
  2. Windows Insider プログラムに参加します。Join the Windows Insider Program.
  3. 開発者モードを有効にするEnable Developer Mode
  4. 設定を使用してWindows Insider Fast のフライトに切り替える--> Update & Security セクション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. これは、ネイティブの DirectX アプリに加えて、ID3D11Device がその機能に対して明示的または暗黙的 (メディアファンデーション) に作成される場合にも、Unity アプリに適用されます。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. Mixed reality サポートを使用して、 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. Unity のサイトで自動 API アップデーターを使用する手順に従います。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. Windows MR の最新の LTS リリース (すべての20xx リリース) をご確認ください。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 scripting バックエンドを現在対象としている場合は、代わりに 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 ストアビルドターゲットのエクスポート時に、プロジェクトを更新して、prefabs と script 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 SDK を対象とするIn 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:

XRDevice.SetTrackingSpaceType(TrackingSpaceType.Stationary);

これにより、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. ユーザーが recenter した元の位置を確認するには、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. ユーザーが定義したフロアレベルのオリジンとオプションの部屋の境界を表す 空間ステージ を使用して、ユーザーのフロアについては、最初の実行時に設定します。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.
}
else
{
    // 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.

スクリプトコードでは、TrackedArea の境界の種類を指定して、境界ポリゴンを取得するために、XR 型の TryGetGeometry メソッドを呼び出すことができます。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. このアルゴリズムは、Unity の 5.6 preview MRTP バージョンを使用する Mixed Reality Toolkit のフォークに含まれています。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-使用例Assets/HoloToolkit/Stage/Scripts/StageManager.cs - example of usage
  • Assets/HoloToolkit/Stage/Scripts/LargestRectangle-アルゴリズムの実装Assets/HoloToolkit/Stage/Scripts/LargestRectangle.cs - implementation of the algorithm
  • Assets/HoloToolkit-UnitTests/Editor/Stage/LargestRectangleTest-アルゴリズムの簡易テスト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

既存の HMD を対象とする各ゲームまたはアプリケーションには、処理する入力のセット、エクスペリエンスに必要な入力の種類、およびそれらの入力を取得するために呼び出す特定の 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. 詳細については、「 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. Oculus 入力openvr 入力については、現在 Unity VR apps で使用されているのは、GetAxis api です。The general Input.GetButton/Input.GetAxis APIs are used by Unity VR apps today for Oculus input and OpenVR input. アプリが既にモーションコントローラー用のこれらの Api を使用している場合は、これが最も簡単なパスです。入力マネージャーでボタンと軸を再マップするだけで済みます。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.
    • Unity のモーションコントローラーデータにアクセスするには、一般的な GetAxis Api または MR 固有の UnityEngine. XR Api を使用します (複数の場合があります)。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 名前空間にあります)(previously in the UnityEngine.XR.WSA.Input namespace in Unity 5.6)
    • ゲームパッドとモーションコントローラーを組み合わせたツールキットの例を参照してください。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. 混合現実のパフォーマンスを理解することで、パフォーマンスの詳細な説明があります。There is an extensive discussion of performance available at Understanding Performance for Mixed Reality. さらに、unity のパフォーマンスに関する推奨事項には、unity に関する具体的な詳細があります。Further, there are specific details for Unity under Performance Recommendations for Unity.

関連項目See also