東海エリアを中心に活躍するVRクリエイター集団のページ

Unityインテグレーションの詳細

本コンテンツはOculusVR社のOculus Unity Mobile Integration Guideを日本語訳したものです。
※Unity開発に必要なもののみ翻訳しているため、一部省略されている箇所があります
翻訳内容に関する問題・指摘などあれば、訳者:@kaniponまでご一報ください。

Unityインテグレーションの詳細

このセクションでは、インテグレーションのディレクトリ構造を含む、Unityプレハブといくつかの重要なC#のスクリプトが記載されているUnityインテグレーションを調べます。

:PCの開発やモバイルSDKにバンドルされたバージョンのために提供されたUnityインテグレーションの内容とのわずかな違いがあります。

中身
OVR

OculusUnityIntegration.unitypackageでOVRフォルダの内容は、既存のプロジェクトにインポートしても安全であるように、一意の名前にしておく必要がある。

OVRディレクトリには、次のサブディレクトリが含まれています。

Editor
Materials
Moonlight モバイルGearVR開発用の固有のクラスが含まれています。 (モバイルのみ)
Prefabs
Resources
Scenes
Scripts
Shaders
Textures

: 私たちは、開発者がOVRに含まれているスクリプトを直接変更しないことを強く勧めます。

Plugins

Pluginsフォルダは、Windows(32ビットおよび64ビット版)にUnityと通信するためのVRフレームワークを可能にOculusPlugin.dllが含まれています。

このフォルダには、その他のプラットフォーム用のプラグインが含まれています。MacOS用の OculusPlugin.bundle と Android用のAndroid/libOculusPlugin.so , vrlib.jar , AndroidManifest.xml

Prefabs

ユニティアプリケーションにVRのサポートを追加するための現在の統合は、シーンに加えてもよい2プレハブに基づいています:

  • OVRCameraRig
  • OVRPlayerController

使用するには、ドラッグしてシーンにプレハブのいずれかをドロップします。

OVRCameraRig

OVRCameraRigは、シーン内の定期的なユニティカメラを置き換えます。あなたは、あなたのシーンにOVRCameraRigをドラッグすることができますし、ギアVRとリフトとのシーンの表示を開始することができます。

:OVRCameraRigが使用されている唯一のものであることを保証するために、シーン内の他のどのカメラの電源をオフにしてください。

図1: プレハブ: OVRCameraRigをインスペクタで展開

OVRCameraRigは2つのUnityカメラ、各目に1が含まれています。これは、これは、従来のカメラを置き換える(例えば歩いキャラクタ、車、砲塔など)は移動物体に取り付けられるように意図される。

次のスクリプト(成分)OVRCameraRigのプレハブに添付されています:

  • OVRCameraRig.cs
  • OVRManager.cs
OVRPlayerController

OVRPlayerControllerは、仮想環境のナビゲートを開始する最も簡単な方法です。それは基本的にプレハブ単純な文字コントローラに接続さOVRCameraRigです。これは、物理カプセル、移動システム、テキストフィールドのステレオ·レンダリングの単純なメニューシステム、および十字成分を含む。

環境へのプレーヤコントローラをドラッグして、動き回るゲームパッド、またはキーボードとマウスノートの使用を開始、使用するには、次の衝突検出が環境でアクティブであることを確認してください。

2つのスクリプト(成分)OVRPlayerControllerのプレハブに添付されています:

  • OVRPlayerController.cs
  • OVRGamepadController.cs

図2: プレハブ: OVRPlayerControllerをインスペクタで拡大

Unityコンポーネント

次のセクションでは、フォルダがないスクリプト内のスクリプトの何それぞれの一般的な概要を説明します。

OVRCameraRig

OVRCameraRigは、ステレオレンダリングとヘッドトラッキングを制御するコンポーネントです。それは3つの子「アンカー」は、左右の目のポーズだけでなく、それらの中間にある仮想の「中央」の目に変換し維持します。

このコンポーネントは、Unityとカメラ間の主要なインタフェースです。これは、シーンにVRサポートを追加することが容易になりプレハブに取り付けられている。

重要:すべてのカメラ制御は、このコンポーネントを介して行われるべきである。あなた自身のカメラ制御機構を実装するときには、このスクリプトを理解しておく必要があります

OVRManager

OVRManagerはVRのハードウェアへのメインインタフェースです。これは、UnityへのオクルスSDKを公開シングルトンで、カメラの動作を構成するのに役立つ保存さオクルス変数を使用するヘルパー関数が含まれています

このコンポーネントは、OVRCameraRigのプレハブに追加されます。これは、任意のアプリケーションオブジェクトの一部とすることができる。ユニティインスペクタに特定の値を変更することを可能にパブリックメンバがあるので、それだけで、一度に宣言する必要があります

OVRManager.cs、次のパブリックメンバーが含まれています:

図1: モバイルとPCのパブリックメンバー
Monoscopic trueの場合、レンダリングではなく、それぞれの目に一度のレンダリングよりも、単一の視点を最適化しようとします。すべてのプラットフォームでサポートされていません。
Eye Texture Format 目のRenderTexturesの形式を設定します。通常は、高ダイナミックレンジのレンダリングのデフォルトまたはDefaultHDRを使用する必要があります。
Eye Texture Depth 目のRenderTexturesの深さの精度を設定します。パフォーマンスを犠牲にして、Z-戦っアーティファクトを定めることができる。
Eye Texture Antialiasing 目のRenderTextures用アンチエイリアシングのレベルを設定します。
図2: PCのみのパブリックメンバー

省略

ヘルパークラス

上記の成分に加えて、あなたのスクリプトは常にOVRManagerの静的メンバを経由して、HMDの状態にアクセスすることができます。

OVRDisplay HMDのポーズやレンダリング状態を提供します。
OVRTracker 赤外線追跡カメラのポーズ、錐台、トラッキングステータスを提供します。
OvrCapi

OvrCapiはLibOVR(具体的には、CAPI)のためのC#のラッパーです。それはあなたの照会およびトラッキング、レンダリング、および多くのための機能を設定することができ、すべてのデバイス機能を公開します。詳細についてはオクルス開発者ガイドおよびリファレンスマニュアルを参照してください。

注: OvrCapiは、PCユニティインテグレーションのみ利用可能です

OVRCommon OVRCommonはUnityとOvrCapi型の間の変換を含む再利用可能な静的関数の集合です。
ユーティリティ

次のクラスはオプションです。私たちは、あなたがあなたのアプリケーションのニーズに応じて、仮想現実を最大限に活用するためにそれらを提供する。

OVRPlayerController
OVRGamepadController
OVRMainMenu
OVRCrosshair
OVRGUI
OVRGridCube
OVRPresetManager
OVRVisionGuide

Oculus Mobile SDKExamples

SDKサンプルプロジェクト(モバイルSDKのみに付属)は便利なシナリオと機能性を実証する。

UnityにSDKExamplesをインポートするには、新しい空のプロジェクトを作成することから始めます。次に、Assets > Custom Package から SDKExamples.unityPackageを選択してプロジェクトにインポートします。 SDKExamples.unityPackageをダブルクリックすることでもインポート可能です。

インポートしたら、ProjectSettingsがSDKExamplesに付属のフォルダを使用してUnityプロジェクトのProjectSettingsフォルダを置き換えます。

Assets/Sceneにある以下のサンプルシーンをみつける:

30Hz_Sample タイムワープのVSYNCレートを設定する方法の例は、色収差補正を有効にして、平面視は、Androidのためにレンダリングする方法と同様に、30Hzのアプリケーションをサポートする。30HzのタイムワープとAndroid用の色収差補正の詳細については、タイムワープテクニカルノートをご確認ください。
Box_Room テスト用のシンプルなボックス状の部屋
Crosshair_Sample 3つの異なるモードで世界に3Dカーソルを使用する方法の例。
FirstPerson_Sample OVRPlayerControllerにアバタージオメトリを添付する方法の例
GlobalMenu_Sample 「戻るキー」長押しアクションとユニバーサルメニューを実証例に加えて、軌跡と凝視カーソルの実例。インターフェイスガイドラインと要件の詳細については、以下の書類を確認してください。:インターフェイスガイドラインとユニバーサルメニュー
Menu_Sample バックキーを押したときの動作によって、簡単なゲーム内のメニューを表示する実証例。 メニューには、現在のバッテリーレベルと温度を表示するためのバッテリレベルAPIを使用しています。
MoviePlayer_Sample 例では、AndroidのMediaPlayerのを使用して、基本的なゲーム内動画を実証。
Multicamera_Sample 一つのシーンでカメラを切り替える例。
SaveState_Sample 一時停止でゲームの状態を保存と復帰時にそれをロードする実証例。その色を変更するには、シーン内のオブジェクトをクリックします。あなたがシーンを実行すると、再び、オブジェクトを使用すると、終了する前に、選択した色にする必要があります。
Startup_Sample 黒いスプラッシュ画面を利用し素早く、快適なVRアプリケーションの起動の例で、VRのロゴシーンを可能な、非同期メインレベルのロード。インターフェイスガイドラインの詳細については、以下の書類を確認してください。:インターフェイスガイドラインとユニバーサルメニュー

サンプルスクリプトの場所は Assets/OVR/Moonlight/ にあります

Crosshair3D.cs カメラビューに結び付けジャダーフリークロスヘアを作成する方法のための詳細コード。
StartupSample.cs バックグラウンドでメインシーンのロード中に、起動時に最小限のシーンをロードするためのサンプルコード。
TimeWarp30HzSample.cs 30Hzのアプリケーションをサポートするためにタイムワープを設定するだけでなく、色収差補正をトグルし、平面視が上のレンダリングとオフのためのサンプルコード。
HomeMenu.cs アニメーションメニューのコード例。
HomeButton.cs (HomeMenu.csと組み合わせて使用)ボタンコマンドを提供するサンプルコード。
HomeBattery.cs SDKバッテリレベルAPIを使用して対話的に視覚的インジケータを修正するためのサンプルコード。
MoviePlayerSample.cs AndroidのMediaPlayerを使用してテクスチャが貼られたQuadにゲーム内のビデオを再生するサンプルコードとドキュメント。
OVRChromaticAberration.cs ドロップインコンポーネント上でAndroid用オフ色収差補正を切り替えるため。
OVRDebugGraph.cs ドロップでコンポーネントのオンとオフタイムワープデバッググラフを切り替えるため。タイムワープデバッググラフに関する情報は、モバイルSDKドキュメントのタイムワープのテクニカルノートに記載されています。
OVRModeParms.cs 現在の電力レベルの状態を照会する方法だけでなく、電力と熱負荷を低減するために、アプリケーションをデクロッキングのためのサンプルコード。
OVRMonoscopic.cs ドロップインコンポーネント平面視が上のレンダリングとAndroid用のオフ切り替えるため。
OVRResetOrientation.cs ドロップイン部品カメラの向きをリセットします。
OVRWaitCursor.cs 待機カーソルを自動回転させるためのヘルパーコンポーネント。
OVRPlatformMenu.cs 立ち上げへのユニバーサルメニューとバックキーの短押しを確認し、終了し、ホームメニューにを起動するためにキー長押しをバック検出するためのヘルパーコンポーネント。さらに長く押すと時刻を表示するための待ちタイマを実装しています。インターフェイスのガイドラインと要件の詳細については、モバイルSDKドキュメントのインタフェースガイドラインとユニバーサルメニューをご覧ください。

モバイル: コントロールレイアウト

: このセクションでは、唯一のモバイルユニティ統合のためのコントロールレイアウトを記述します。

我々はあなたがここに文書化されたユニティの入力システム、に慣れることから始めることをお勧めします:http://docs.unity3d.com/ScriptReference/Input.html

完全に特定のハードウェアを指し、独自のスクリプトを記述するために、コントローラのマッピングのすべてを事前に移入され、SDKに付属してInputManager.assetファイルを使用して、至るまでのVRアプリのユニティにコントローラ入力を処理するためのいくつかの方法がありますが、キー。始まり、開発者は独自のInputManager設定をセットアップしてから、自分のコントローラコードを書くためにそれが最も簡単に見つけることができます。

以下のマッピングは、サムスンエルGP20のゲームパッドと他のほとんどのサードパーティ製のBluetoothコントローラによって使用されている。コントローラとユニティの入力システムとの間の実際のマッピングは、コントローラのベンダーやOS次第ですが、それは、このスキーマと概ね一致している。

表3: Samsung EI-GP20ゲームパッドコントローラーマッピング

Button / Axis Name Input Manager Mapping / Axis Value Sensitivity
Button A / 1 joystick button 0 1000
Button B / 2 joystick button 1 1000
Button X / 3 joystick button 2 1000
Button Y / 4 joystick button 3 1000
Left Shoulder Button joystick button 4 1000
Right Shoulder Button joystick button 5 1000
Left Trigger Button n/a 1000
Right Trigger Button n/a 1000
Left Analog X Axis X axis 1
Left Analog Y Axis Y axis 1
Right Analog X Axis 3rd axis (Joysticks and Scroll wheel) 1
Right Analog Y Axis 4th axis (Joysticks) 1
Dpad X Axis 5th axis (Joysticks) 1000
Dpad Y Axis 6th axis (Joysticks) 1000
Play Button n/a 1000
Select Button joystick button 11 1000
Start Button joystick button 10 1000

表4: GearVR タッチパッドコントローラーマッピング

Button / Axis Name Input Manager Mapping / Axis Value Sensitivity
Mouse 0 / Button 1 mouse 0 and joystick button 0 1000
Mouse 1 / Button 2 mouse 1 and joystick button 1 1000
Mouse X Mouse Movement X axis 0.1
Mouse Y Mouse Movement Y axis 0.1

これらのコントローラとタッチパッド入力のマッピングは、Project Settings > Inputマネージャーの下でユニティに設定することができます。
タッチパッドと[戻る]ボタンは、それぞれマウス0とマウス1としてマップされます。

: ムーンライトOVRInputControlスクリプトで使用するのに適したデフォルトの入力設定でInputManager.assetファイルはOculus Unityインテグレーションパッケージに含まれています。

PAGETOP
Copyright © 近未来ラボ All Rights Reserved.
Powered by WordPress & BizVektor Theme by Vektor,Inc. technology.