第1回 【初心者向け】unity+oculus...
DESCRIPTION
UnityおよびOculus Riftの初心者の方を対象に簡単な体験型3Dゲーム開発をするワークショップです。TRANSCRIPT
第1回Unity + Oculus Rift次世代の3Dゲームを作って感じるワークショップ2014/2/8 Yuichi Ishii
Yuichi Ishii,2014/2/8 1
自己紹介名前:石井 勇一
開発者コード名:zabaglione
Facebook: https://www.facebook.com/yuichi141
株式会社シーディングソフテック 代表取締役社長
普段はスマートフォン、組込み機器向けのプログラミングに関する研修の講師
物心ついたころからゲームセンターに通いだし、小3の時に親戚の家でパソコンを見てからプログラミングに夢中(下手の横好き)
最近の興味はUnityを中心としたNUI(Natural User Interface)、VRなどを絡めたゲーム開発
Yuichi Ishii,2014/2/8
目次1Unityとは
Oculus Riftとは
Unityの操作について
Oculus Riftとの連携について
入力装置について
Yuichi Ishii,2014/2/8
目次2Oculus Riftの実装例
Unity + Oculus Riftにまつわる問題点と回避策
課題アプリの作成(ワークショップ)
発表会
参考:Oculus Riftのスクリプト
Yuichi Ishii,2014/2/8
Unityとは
Yuichi Ishii,2014/2/8
UnityとはUnity はゲーム開発のエコシステム。インタラクティブな 3D コンテンツ作成のための直感的なツールとサクサク作れるワークフローが、パワフルなレンダリングエンジンと完全に統合された環境で開発が出来ます。
手軽なマルチプラットフォームパブリッシング、高品質なアセットが幾千も揃ったアセットストア、困ったときにノウハウを共有してくれる巨大なコミュニティがあなたを支えます。
Unityの民主的なエコシステムは、美しく手の込んだゲームを作り出す時に、多くのデベロッパーやスタジオが直面する障壁を突き崩す手段となるでしょう。彼らは、人々が夢中になって喜ぶゲームをあらゆるプラットフォームで作るために、Unity を活用しているのです。
引用:http://japan.unity3d.com/unity/Yuichi Ishii,2014/2/8
UnityとはUnity = 「Editor」+「Game Engine」
初登場は2005年のアップル主催 Worldwide Developers Conference
バージョン3.xから非常に多くのプラットフォームで動作するアプリケーションの作成が可能になった
バージョン4.0でMecanimと呼ばれる3Dモデルのアニメーション制御エンジンを内蔵し、4.3から2Dスプライトのサポートなど新機能を次々と実装し続けている。
Yuichi Ishii,2014/2/8
Unityが提供する機能一覧
Unity4.3.4時点 引用:http://japan.unity3d.com/unity/licensesYuichi Ishii,2014/2/8
主な機能
物理演算
ナビメッシュ、パス探索、群衆シミュレーション
RakNet によるマルチプレイヤーネットワーク
LOD のサポート
オーディオ (3D音響とステレオ音響)
オーディオフィルター
ビデオ再生とストリーミング
アセットバンドルによる本格的なストリーミング
Unityが提供する機能一覧
Yuichi Ishii,2014/2/8
アニメーション
Mecanim
Mecanim: IK Rigs
Mecanim: Sync Layers & Additional Curves
デプロイ関連
ワンクリックでのデプロイ
ウェブブラウザとの統合
スプラッシュスクリーンの変更
Unity4.3.4時点 引用:http://japan.unity3d.com/unity/licenses
Unityが提供する機能一覧
Yuichi Ishii,2014/2/8
グラフィックス(1)
低レベルレンダリングへのアクセス
マークアップによる ダイナミックフォント
Shuriken パーティクルシステム
3D テクスチャをサポート
リアルタイム Directional シャドウ
リアルタイム Spot/Point シャドウ またソフトシャドウ
HDR、トーンマッピング
ライトプローブUnity4.3.4時点 引用:http://japan.unity3d.com/unity/licenses
Unityが提供する機能一覧
Yuichi Ishii,2014/2/8
グラフィックス(2)
最適化されたグラフィック
シェーダーの利用(ビルトイン&カスタム)
ライトマッピング
グローバルイルミネーション付きライトマッピングとエリア・ライト
動的バッチング
静的パッチング
地形生成
Render-to-Texture エフェクトUnity4.3.4時点 引用:http://japan.unity3d.com/unity/licenses
Unityが提供する機能一覧
Yuichi Ishii,2014/2/8
グラフィックス(3)
フルスクリーンポストエフェクト
オクルージョンカリング
デファードレンダリング
ステンシルバッファーへのアクセス
GPU スキニング
Unity4.3.4時点 引用:http://japan.unity3d.com/unity/licenses
Unityが提供する機能一覧
Yuichi Ishii,2014/2/8
コード
Navmesh: 動的障害・回避プライオリティ
Webplayer デバッギング
C#, JavaScript, Booによる.NETベースのスクリプト
WWW 関数を使ったウェブデータへのアクセス
ユーザーのブラウザで URL を開く
.NET ソケットサポート
ネイティブプラグインサポート
カスタムクラス用インスペクタ GUIUnity4.3.4時点 引用:http://japan.unity3d.com/unity/licenses
Unityが提供する機能一覧
Yuichi Ishii,2014/2/8
エディタ
統合エディタ
自動的なアセットのインポート
アニメーションエディタ
プロファイラ・GPU プロファイリング
外部バージョン管理サポート
アセットパイプラインへのスクリプトアクセス
ダークスキン
Unity4.3.4時点 引用:http://japan.unity3d.com/unity/licenses
Unityが提供する機能非常に多くの機能がありますが、一度に全部覚える必要はありません。
1つの機能であってもマスターするまでには相当時間がかかりますので、根気よく続けて覚えてください。
このセミナーではUnityの基本操作+Oculus Riftとの連携方法についての説明と、実際の操作を体験していただきます。
Yuichi Ishii,2014/2/8
Oculus Riftとは
Yuichi Ishii,2014/2/8
Oculus RiftとはOculus Rift(オキュラス・リフト)とは、米Oculus VR社が開発したバーチャルリアリティ用ヘッドマウントディスプレイ(HMD、頭部搭載型ディスプレイ)です。
Yuichi Ishii,2014/2/8
http://www.oculusvr.com/
Oculus Riftとは2012 年 8 月にKickstarter上で立ち上げられたプロジェクト
目標金額$250,000に対して、投資総額が$2,437,429 の調達に成功。(当時の日本円は$1=84円ぐらい。約2億円)の調達に成功
大成功プロジェクトして世界から注目を受ける
2012年のE3において「2012 Best of E3 Nominee」にノミネート
2013年のE3において「E3 2013のベストハードウェア賞」を受賞
各種ゲームメディアが「E3 2013で一番驚いたゲーム認定」
フォーブス誌のゲーム部門でCEOが1位を取った
Yuichi Ishii,2014/2/8
引用:http://yaseino.hatenablog.com/entry/2014/01/09/203922引用:https://gist.github.com/japboy/5545565
Oculus Riftのハード仕様(DK1)
Yuichi Ishii,2014/2/8
ディスプレイ仕様
・7 インチの画面サイズ・1280 x 800 (720p) の解像度 (片目辺りの解像度は 640 x 800)・レンズ中央から 64 mm の固定長・60 Hz LCD パネル・DVI-D/HMDI・USB 2.0 Full Speed・輝度とコントラスト調整可
引用:https://gist.github.com/japboy/5545565
Oculus Riftのハード仕様(DK1)
Yuichi Ishii,2014/2/8
トラッキング仕様
・1000 Hz サンプリングレート・3 軸回転儀 (gyroscope) による角速度検知・3 軸磁力計 (magnetometer) による磁場検知・3 軸加速度計 (accelerometer) による重力を含む加速度検知・USB の HID として動作・USB ケーブルが接続されていれば電源投入関係なくセンサー情報にはアクセス可能
引用:https://gist.github.com/japboy/5545565
Oculus Riftのハード仕様(DK1)
Yuichi Ishii,2014/2/8
レンズ仕様
・レンズは A, B, C の 3 種類が付属している。それぞれの適正視力は以下の通り
A: 視力 1.0 および遠視
B: 近視気味
C: 近視
引用:https://gist.github.com/japboy/5545565
Oculus Riftのソフト仕様(DK1)
Windows, Mac, Linux用のSDKを配布(言語はC++)
Unity, UDKへの統合キットを配布
SDKに含まれているソースコード及びバイナリは使用、変更、再配布が可能(正確にはSDKやライブラリなどに含まれるLICENSE.txtファイルやソースコードのコメントを参照のこと)
Yuichi Ishii,2014/2/8
Oculus Riftの長所110 度(対角) / 90 度(水平)と視野角(FOV)が広い(ソニーHMZ-Tシリーズの2倍)
頭の向きをトラッキングでき、6 段階の被写界深度(DOF)をゲームに使えるほど低遅延で実現
他のHMDと同じく両目の視差を利用した裸眼立体視3D表示
59800円のHMZ-T1/T2に対して開発キットで300ドルという低価格(Developer Kit1の値段)
Yuichi Ishii,2014/2/8
引用:http://yaseino.hatenablog.com/entry/2014/01/09/203922引用:https://gist.github.com/japboy/5545565
Oculus Riftの短所開発キットの解像度が1280x800(片目640x800)という低解像度
しかも画面が表示される部分はその中から更に制限(レンズ補正の歪みのため)
頭の「向き」は取れるが「位置」は取れない
Yuichi Ishii,2014/2/8
引用:http://yaseino.hatenablog.com/entry/2014/01/09/203922引用:https://gist.github.com/japboy/5545565
いずれもCES2014で発表された赤外線カメラ付属のコードネーム「Crystal Cove」で解消済み(らしい)。
Oculus Riftの購入方法2014/2/8現在、日本正規代理店は存在しない
公式サイトから直接購入するのが確実https://www.oculusvr.com/order/
本体価格 $300 + 送料($50〜$60ぐらい?) + 関税?
コードネーム「Crystal Cove」が控えているが……
Yuichi Ishii,2014/2/8
Oculus Riftの購入方法Oculus RiftをUnityで使うには「Unity Pro」が必須です。
Oculus Riftを購入するとUnity Pro体験版4か月延長コードが取得できます。
それも使い倒したらUnity Proを購入するか、他のゲームエンジンで試すとよいでしょう。
Yuichi Ishii,2014/2/8
入力装置について
Yuichi Ishii,2014/2/8
相性が良さそうな入力装置XInput互換の入力装置
Windows限定
XBOX 360 Wireless controller for Windows推奨
Mac OS Xは「Unity Hacks: Dual sticks」を使用すると良いらしいというUnityの開発者スレッドを発見(未確認)
http://forum.unity3d.com/threads/200074-Better-Oculus-Rift-FPS-Controller-(OSX)
あるいはこのスライドの後半で紹介している「問題点6」で解説している方法があります(確認済み)
Yuichi Ishii,2014/2/8
相性が良さそうな入力装置Kinect
Leap Motion
Razer Hydra
STEM System
Virtuix Omni
MYO - Gesture control armband by Thalmic Labs
QUMARION
Yuichi Ishii,2014/2/8
相性が良さそうな入力装置その他
Wiiコントローラ、PlayStation3などのコントローラ
Zeemote JS1
MIDI機器
Yuichi Ishii,2014/2/8
Oculus Riftの実装例
Yuichi Ishii,2014/2/8
Oculus Riftの実装例Alone in the Rift
Unity で実装されたホラーデモ。Razer Hydra にも対応。Windows 用。
RiftEnabled™ – Alone in the Rift
Alone in the Rift - A horror game demo (with hydra support!) | Oculus-ready Games and Demos | Oculus Rift Developer Forums
Yuichi Ishii,2014/2/8引用:https://gist.github.com/japboy/5545565
Oculus Riftの実装例Lukalus
Unity で実装されたルカさんを観賞するデモ。Windows と Mac OS X に対応。@yuujii 作
Lukalusでルカと暮らす - develog.me
Lukalus 0.3 Win/Mac GamePad対応 - [ Bowl Roll ]
Yuichi Ishii,2014/2/8引用:https://gist.github.com/japboy/5545565
Oculus Riftの実装例Lukalus Live!
Unity で実装されたルカさんがダンスするのを観賞するデモ。Windows に対応。@yuujii 作
Lukalusでルカと暮らす - develog.me
ルカライブ!(Lukalus Live! 0.1) - [ Bowl Roll ]
Yuichi Ishii,2014/2/8引用:https://gist.github.com/japboy/5545565
Oculus Riftの実装例Macross + Oculus Rift
Unity で実装されたバルキリーシミュレータ。WindowsとMac OS X版。
SolidM Macross + Oculus Rift
SolidM Macross + Oculus Rift その5(最終版)
Yuichi Ishii,2014/2/8引用:https://gist.github.com/japboy/5545565
Oculus Riftの実装例Mikulus
Unity で実装された Tda 式初音ミクを視漢... 観賞するデモ。Windows 用と OS X 版がある。@GOROman作。
RiftEnabled™ – Miku Miku Dance (Japanese)
話題のOculusRiftでアッチの世界に入って来たついでにミクさんを触ってきた - Niconico video Q
Mikulus - 130611版(バージョンアップ) - [ Bowl Roll ]
Mikulus - 130623版 (立ちEDITION) - [ Bowl Roll ]
Mikulus OSX版 β - [ Bowl Roll ]
Yuichi Ishii,2014/2/8引用:https://gist.github.com/japboy/5545565
Oculus Riftの実装例Ocean Rift
Unity で実装された海底体感のデモ。Windows 用。
RiftEnabled™ – Ocean Rift
Ocean Rift (featuring sharks) | Works in Progress | Oculus Rift Developer Forums
Yuichi Ishii,2014/2/8引用:https://gist.github.com/japboy/5545565
Oculus Riftの実装例Oculus Street View
vr.js と HTML 5 で実装された Google Street View の Oculus Rift 対応版。クロスプラットフォーム。
RiftEnabled™ – Oculus Street View
Oculus Google Street Viewer
Yuichi Ishii,2014/2/8引用:https://gist.github.com/japboy/5545565
Oculus Riftの実装例oculusDOGEZA
Tda 式ミクに土下座できる。
oculus DOGEZA(for Oculus Rift Only)
(PCの性能不足だと右画面が白くなる?)
Yuichi Ishii,2014/2/8引用:https://gist.github.com/japboy/5545565
Oculus Riftの実装例Parrot Coaster VR
Unity で実装されたローラーコースターのデモ。Windows 用。
RiftEnabled™ – ParrotCoaster WIP
Oculus Rift - Parrot Coaster VR - Weeeeee! -1080p - YouTube
Yuichi Ishii,2014/2/8引用:https://gist.github.com/japboy/5545565
Oculus Riftの実装例Rift Coaster
UDK で実装されたローラーコースターのデモ。Windows 用。
RiftEnabled™ – Rift Coaster
Meant to be Seen - View topic - Can someone with a Rift test my roller coaster? now w/ sound
Yuichi Ishii,2014/2/8引用:https://gist.github.com/japboy/5545565
Oculus Riftの実装例Titan
Unity で実装された「進撃の巨人」体感デモ。Windows 用と Mac OS X 版がある
Titan Win
Titan Mac
Yuichi Ishii,2014/2/8引用:http://wiki.oculusvr.jp/index.php?%E3%83%87%E3%83%A2
Oculus Riftの実装例Titan of Space
Unity で実装された銀河系を宇宙船から観賞するデモ。Windows 用と Mac OS X 版がある。
RiftEnabled™ – Titans of Space
Titans of Space
Yuichi Ishii,2014/2/8引用:https://gist.github.com/japboy/5545565
Oculus Riftの実装例Tsuitekulus
ミクさんがミクさんなったあなたに着いてきます。Windows 用。
ついてくるッス v0.0.2 - [ Bowl Roll ]
Yuichi Ishii,2014/2/8引用:https://gist.github.com/japboy/5545565
Oculus Riftの実装例VR Cinema 3D
Unity で実装された映画館を再現したデモ。好きな動画を VR 映画館で再生できる。Windows 用。
RiftEnabled™ – VR Cinema 3D
vrcinema3D | Oculus-ready Games and Demos | Oculus Rift Developer Forums
Yuichi Ishii,2014/2/8引用:https://gist.github.com/japboy/5545565
Oculus Riftの実装例Yunalus
Unity で実装されたイリュージョンのスマートフォン向けゲームキャラクター「モグモグゆなちゃん」を観賞するデモ。Windows 用と Mac OS X 版がある。
Oculus Rift バーチャルリアリティがもっと身近に…
Yuichi Ishii,2014/2/8引用:https://gist.github.com/japboy/5545565
Oculus Riftの実装例AngryBots + Oculus Rift + Razer Hydra(自作)
Unity付属のAngryBotsをFPS視点にしてOculus RiftとRazer Hydra対応にしました。Windows版のみ。
Razer Hydra対応は不完全です。WebPlayer版(単にFPS化したもの)
ダウンロード版
Yuichi Ishii,2014/2/8引用:https://gist.github.com/japboy/5545565
Oculus Riftの実装例VR SKI JUMP
SKIのJUMPを体験できる。Windows版とMac版がある。作者の@oukaichimon曰く、「妥当RiftCoasterを目指し、Oculus初体験者向けのソフトを作りました。」とのことです。是非チャレンジしてみてください。
VR SKI JUMP
トップページには沢山のアプリがります。
Yuichi Ishii,2014/2/8引用:https://gist.github.com/japboy/5545565
Oculus Riftの体験会これまで紹介したアプリケーションをダウンロードして試してみましょう。
Yuichi Ishii,2014/2/8
Unityの操作
Yuichi Ishii,2014/2/8
Unityの基本操作
Yuichi Ishii,2014/2/8
Scene
Project
Hierarchy
Toolbar
Inspector
Toolbar
トランスフォームツール
Unityの基本操作
Yuichi Ishii,2014/2/8
Scene内の移動
オブジェクトの移動
オブジェクトの回転
オブジェクトの拡大/縮小
Transformツールのまとめ
Yuichi Ishii,2014/2/8
Unityの基本操作
W E R
移動 回転(後半で使用)
拡大/縮小
この、赤や青、緑のハンドルのようなものを「Gizmo(ギズモ)」と呼びます。
Toolbar
トランスフォームツール
Scene内の移動や拡大縮小(ショートカットキー:Q)
オブジェクトの移動(ショートカットキー:W)
オブジェクトの回転(ショートカットキー:E)
オブジェクトの拡大/縮小(ショートカットキー:R)
Yuichi Ishii,2014/2/8
Toolbar
トランスフォームギズモトグルボタン。
Unityの基本操作
Yuichi Ishii,2014/2/8
Unityの基本操作Toolbar
トランスフォームギズモトグルボタン
Sceneビューにおけるギズモの切り替えます。
それぞれクリックするたびに切り替わります。
Yuichi Ishii,2014/2/8
Toolbar
プレイ/ポーズ/ステップボタン
実際にゲームを動かしてみたり、一時停止、ステップ実行することができます。
Yuichi Ishii,2014/2/8
Unityの基本操作
Play Pause Step
Yuichi Ishii,2014/2/8
Unityの基本操作Toolbar
Layers ドロップダウンボタンSceneビュー中でどのオブジェクトを表示するか管理します
Yuichi Ishii,2014/2/8
Unityの基本操作Toolbarレイアウトドロップダウンボタン
画面のレイアウトを変えることができます。
[2 by 3], [4 Split], [Default], [Tall], [Wide]などからお好みのレイアウトを選んでください。
画面のレイアウトは移動、表示/非表示ができます。
[Save Layout...]でレイアウトを保存できます。
Yuichi Ishii,2014/2/8
Unityの基本操作Scene
プレイヤー、カメラ、敵およびその他あらゆるすべての GameObject を選択し、配置することができます。
Sceneビューの中におけるカメの移動方法について次のスライドで示します、
シーンのカメラの調整方法1あくまでSceneビューの表示だけのことで、「Main Camera」には影響を与えません。
詳細はUnityオンラインドキュメントを参照のこと
Yuichi Ishii,2014/2/8
Unityの基本操作
回転ALT+左クリック右クリック
平行移動ALT+CTRL+左クリックホイールクリック
ズームホイール回転
Yuichi Ishii,2014/2/8
Unityの基本操作
シーンのカメラの調整方法2
フライトスルーモード
マウスの右ボタンを押したままにする
キーボードのWASDキーで上下左右、QEで上下の平行移動
SHIFTキーで加速
詳細はUnityオンラインドキュメントを参照のこと
Yuichi Ishii,2014/2/8
Unityの基本操作シーンのカメラの調整方法3シーンギズモ
Sceneビューの右上のアイコン。
XYZの近くにある腕の部分をクリックするとその方向にカメラを移動します。
真ん中の立方体をクリックすると、等角図法(Isometric Mode)と 透視(遠近)図法(Perspective Mode)の切り替えになります。
また、中央の立方体をSHIFTキーを押しながらクリックすると、少し見下ろした位置にカメラを移動します。
詳細はUnityオンラインドキュメントを参照のこと
Yuichi Ishii,2014/2/8
Unityの基本操作Hierarchy
現在開いているシーン中のすべての GameObject が含まれています。
HierarchyビューではGameObjectの作成や複製、削除ができます。
また、Sceneの中のGameObjectは階層構造を持つことができ、親子関係を持たせたり、解除したりできます。
Yuichi Ishii,2014/2/8
Unityの基本操作Project
プロジェクトに属するAssets(アセット:資産、財産など意味)にアクセスし、管理することができます。
Assetsはゲームを構成する様々な部品を表します。例えるなら、ゲームの素材倉庫のようなものです。
Yuichi Ishii,2014/2/8
Unityの基本操作Inspector
SceneビューやHierarchyビューで選択したGameObjectや、Projectビューのファイルの内容を表示したり変更したりすることができます。
UnityのGameObjectやAsstesは多くの「Component」を含んでいます。
ComponentはUnityの[Component]メニューから増やすことができます。
Componentを削除するには、各コンポーネントの右側にある歯車をクリックして[Remove Component]を選んでください。
Component
Component
GameObjectとComponentSceneには多数のGameObject(インスタンス)が存在します。
GameObjectとはSceneに予め作成することもでききますし、スクリプトで動的に追加することもできます。
Yuichi Ishii,2014/2/8
Scene
GameObject
GameObject
GameObjectには多数のComponent(≒振る舞い)が追加されています。
GameObjectとComponent
Yuichi Ishii,2014/2/8
Component
Scene
GameObject
GameObject
Component
Component
Component
Component
GameObjectとComponentComponentを基底クラスとして様々な振る舞いを定義した派生クラスが定義されています。
Yuichi Ishii,2014/2/8
Component
Transform
Camera
Collider
Behaviour
BoxCollider
CapsuleCollider
MonoBehaviour ユーザ定義
ユーザ定義
GameObjectとComponentGameObject
Create Empty
Transform以外のコンポーネントを持たないGameObject
Create Other
初めからいくつかのコンポーネントが追加されたGameObject
Yuichi Ishii,2014/2/8
GameObjectとComponentComponentはGameObjectに追加します。したがって、まずはGameObjectを選択する必要があります。
ComponentはUnity Editorから追加したり、スクリプトから動的に追加することもできます。
Yuichi Ishii,2014/2/8
GameObjectとComponent1つのGameObjectに同系のComponentを2つ以上追加することはできません。
例:Box ColliderとSphere Collider
どうしても追加したい場合は、よく吟味したうえでEmpty GameObjectを作成し、親子関係を持たせてることで実現できます。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携について
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1Oculus SDK配布サイトにあるovr_unity_0.2.5_lib.zipを展開し、OculusUnityIntegrationフォルダに含まれるUnityPackageをインストールするだけです。
OculusUnityIntegrationTuscanyDemo.unitypackage「Tuscany」のDemoパッケージ付
下記パッケージも包含しています。
OculusUnityIntegration.unitypackageOculus Riftと連携するために最低限必要なパッケージ
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1まずは試してみましょう。
Unityを起動してください。
新規にプロジェクトを作成してください
[File]-[New Project...]としてください
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1Explorerで「OculusUnityIntegrationTuscanyDemo.unitypackage」をダブルクリックしてください。
しばらくするとUnity側でImport Package画面が出るので、Importボタンを押してください。インポートには時間がかかります。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1インポート直後の画面
Yuichi Ishii,2014/2/8
スクリプトやPrefabなど
ネイティブプラグイン
demoプロジェクト
Oculus Riftとの連携1OVR
OVR は Oculus Unity 統合の最上位のフォルダです。
PluginsOculus Riftとの通信するためのネイティブライブラリです
TuscanyOculus Riftのdemoアセット
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1Editor:
Unity エディタへの機能拡張といくつかのC#スクリプトが含まれます。
Materials磁気コンパスや Main GUI ディスプレイで使用する画像ファイルなどが含まれます。
OVRImageEffectsOculus Rift ディスプレイ内で画像をワープさせるのに必要なスクリプトおよびレンズ補正シェーダが含まれます。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1Prefabs
Oculus Rift を Unity シーンに繋げるためのプレハブが含まれています。
Resources
いくつかの OVR スクリプトにより必要とされ、インスタンス化されるプレハブおよび別のオブジェクト(例えば磁気コンパスのオブジェクト)が含まれます。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1Scripts
Oculut Rift と Unity コンポーネントを結ぶC# ファイルが含まれます。これら多くのスクリプトは Prefabs フォルダと連携します。
ShadersOculus Rift用に調整されたGUI Shaderを含みます。
Texturesいくつかのスクリプトコンポーネントが必要とする画像アセットが含まれます。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1Projectビューの[Tuscany]-[Scenes]-[VRDemoTuscany]シーンファイルをダブルクリックして開いてください。
保存の確認ダイアログが表示されますが、今回は特に何もないので「Don't save」を押してください。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1Sceneファイルを開いた直後の画面
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1Hierarchyビューにある「OVRPlayerController」をダブルクリックして操作キャラの位置を確認しましょう。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1Toolbarの「Play」ボタンを押してください。
Oculus Riftが繋がっていれば樽状の2つのカメラ画像が表示されます。
Oculus Riftが繋がっていなければ、単なる2つのカメラ画像が表示されます。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1Oculus Rift接続時の画面
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1Oculus Rift未接続時の画面
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1Oculus Riftで立体視するためには、1280x800の解像度に全画面で表示する必要があります。
Unityの現バージョン(4.3.4)ではEditor上の実行でフルスクリーンにすることはできません。
そこでアプリケーションにして確認してみます。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1Unityの[File]-[Build Settings...:]を開いてビルドの設定をします。
ビルド対象のシーンを追加するために、[Add Current]ボタンを押します。
間違って複数回押してしまったら、選択してDelキーを押して消してください。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
Yuichi Ishii,2014/2/8
余計なシーンは選択して[Del]キーで消します。
Oculus Riftとの連携1[Player Settings...]を押してResolution and Presentationを以下のように変更します。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1一旦、ダイアログを閉じてQualityの設定を行います。
Oculus Riftでは画面の粗さを抑えるためにAnti Aliasingを「4x Multi Sampling」以上にすることが推奨されています。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1設定が終わりましたのでビルドおよび実行します。
Oculus RiftのパッケージをインストールするとUInityのメニューに[Oculus]が追加されます。
[Oculus]-[Build]メニューから行えます。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1キーボードの制御1
Yuichi Ishii,2014/2/8
キー名称 使用方法
W または上矢印 プレイヤーを前方に移動
A または左矢印 プレイヤーを左に移動
S または下矢印 プレイヤーを後ろに移動
D または右矢印 プレイヤーを右に移動
左 Shift 押し続けるとプレイヤーが走る
Q および E 左右にプレイヤーが回転
引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html
Oculus Riftとの連携1キーボードの制御2
Yuichi Ishii,2014/2/8
キー名称 使用方法
右 Shift シーン選択をトグル(上下の矢印でシーンの一覧からスクロール)
Return シーン選択がオンのとき、現在選択されたシーンをロード
Z 手動の磁気カリブレーションを有効化
X 自動の磁気カリブレーションを有効化
C マウスカーソルをオン/オフ切替
P 予測(Prediction)モードをオン/オフ切替
引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html
Oculus Riftとの連携1キーボードの制御3
Yuichi Ishii,2014/2/8
キー名称 使用方法
B トラッカーの向きをリセット
スペース コンフィグメニューをトグル
, および . 予測(prediction) の値の減算/加算(ミリ秒単位)
[ および ] 垂直方向の視界 (FOV) の減算/加算(角度単位)
-および = 瞳孔間距離 (IPD) の減算/加算(ミリメートル単位)
引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html
Oculus Riftとの連携1キーボードの制御4
Yuichi Ishii,2014/2/8
キー名称 使用方法
1 および 2 歪み定数 1 (K1) の減算/加算
3 および 4 歪み定数 2 (K2) の減算/加算
5 および 6 プレイヤーの高さの減算/加算(メートル単位)の減算/加算
7 および 8 プレイヤーの移動速度係数の減算/加算
9 および 0 プレイヤーの回転速度係数の減算/加算
引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html
Oculus Riftとの連携1キーボードの制御5
Yuichi Ishii,2014/2/8
キー名称 使用方法
TabTabを押し続けて F3 -F5を押下することで現在のコンフィグのスナップショットを保存
F2 デフォルトのコンフィグにリセット
F3 F4 F5 保存されたコンフィグのスナップショットを再呼出
F6もし磁気参照の向きがセットされていれば磁気コンパスのオン/
オフ切替
引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html
Oculus Riftとの連携1キーボードの制御6
Yuichi Ishii,2014/2/8
キー名称 使用方法
F11 全画面表示およびウィンドウ表示のモード切替
Esc アプリケーションの終了
引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html
Oculus Riftとの連携1マウスの制御
マウスを使用することでプレイヤーが左右に回転します。
もしカーソルが有効化されていれば、マウスはカーソルが画面外になるまで、プレイヤーを回転させずに、カーソルをトラックします。
Yuichi Ishii,2014/2/8引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html
Oculus Riftとの連携1ゲームパッドの制御1
もしプラットフォームの互換コントローラがある場合、プレイヤーコントローラの動作を制御できます。
左アナログスティックは WASD キーを使用するのと同様にプレイヤーを動作させることが出来ます。
右アナログスティックはプレイヤーを左右に Q および E キーを使用するかのように回転させます。
Yuichi Ishii,2014/2/8引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html
Oculus Riftとの連携1ゲームパッドの制御2
左のトリガーにより、もっと速く移動するか、シーン上を走ることができます。
スタートボタンにより画面選択をトグルできます。D-パッドの上下を押すことで、利用可能なシーンをスクロールします。A ボタンを押すことで現在選択されたシーンを開始します。
もしシーン選択がトグルされない場合、D-パッドの下を押すことでトラッカーの向きをリセットします。
Yuichi Ishii,2014/2/8引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html
Oculus Riftとの連携2今度は1から作成してみましょう。
Unityを起動してください。
新規にプロジェクトを作成してください
[File]-[New Project...]としてください
Yuichi Ishii,2014/2/8
Oculus Riftとの連携2Explorerで「OculusUnityIntegration.unitypackage」をダブルクリックしてください。(Demoを含まないパッケージ)
しばらくするとUnity側でImport Package画面が出るので、Importボタンを押してください。
インポートには時間は比較的短めです。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携2ステージとなる床を作成します。
[GameObject]-[Create Other]-[Plane]でPlaneオブジェクトを作成
Planeのままでは後で何のオブジェクトか分からなくなるので、名前を変更してください。
名前を変更するには、Hierarchyビューで「Plane」を選択してマウスカーソルをちょっとずらすか、F2キーを押すと変更可能になります。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携2ステージとなる床を作成します(続き)。
名前を「Plain」から「Floor」に変更します。
次に位置を調整します。位置はHierarchyビューで「Floor」を選択し、Inspectorビューの「Transform」コンポーネントの「Position」のX,Y,Zの値をすべて0にしてください。
Rotate, Scaleは変更不要です。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携2
Yuichi Ishii,2014/2/8
Oculus Riftとの連携2Oculus Rift対応済みのPrefabをSceneビューに追加します。
[Oculus]-[Prefabs]-[OVRPlayerController]を選択
Yuichi Ishii,2014/2/8
Oculus Riftとの連携2OVRPlayerControllerには(左右の)カメラが子オブジェクトとして追加されています。
したがってHierarchyにあるMain Cameraは不要なので削除してください。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携2Playerの位置がFloorと同じため、そのままでは落ちてしまいます(試しにPlayしてみてください)
Yuichi Ishii,2014/2/8
Oculus Riftとの連携2Playerを少し引き上げてください。
Hierarchyビューで「OVRPlayerController」をダブルクリックして、Sceneビューで緑色の矢印(Y軸)を選択して少し上に持ち上げてください。
InspectorビューのTransform : PositionのYが1以上であれば問題ありません。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携2これで対応終了です。Playボタンを押して動作確認をしてください。
ただし、このままでは暗く、何もオブジェクトがありません。あとはUnityの機能を使ってシーンを構築していきます。
Yuichi Ishii,2014/2/8
参考:Unity基本操作明るくするには1
Directional Light
太陽のように、かなり遠くに配置され、シーン内のすべてを照らします。
配置方法
[GameObject] - [Create Other] - [Directional Light]
位置はどこでも構わない
詳しくは公式ドキュメント参照
Yuichi Ishii,2014/2/8
参考:Unity基本操作明るくするには2
Point Light
電球のように、ある場所から全方向を等しく照らします。
配置方法
[GameObject] - [Create Other] - [Point Light]
詳しくは公式ドキュメント参照
Yuichi Ishii,2014/2/8
参考:Unity基本操作明るくするには3
Spot Light
車のヘッドライトのように、1 点から 1 方向に光を放ち、円錐内のオブジェクトのみを照らします。
配置方法
[GameObject] - [Create Other] - [Spot Light]
詳しくは公式ドキュメント参照
Yuichi Ishii,2014/2/8
参考:Unity基本操作色を付けるには
Projectビューにある「Create」メニューを押して[Material(質感)]を選ぶ。
新しく作成したMaterialを選択し、InspectorでMain Colorをクリックするとカラーダイアログが表示されるので好きな色を選び閉じる。
色を設定したMaterialをSceneビューやHierarchyビューのオブジェクトにドラッグ&ドロップすると色を変更できる
Yuichi Ishii,2014/2/8
参考:Unity基本操作テクスチャを貼りつけるには
Projectビューに画像ファイルをドラッグ&ドロップする
Projectビューの画像ファイルをSceneビューまたはHierarchyビューのオブジェクトにドラッグ&ドロップする(正しくは、Materialを作成してMaterialのTextureを変更し、Materialをドラッグ&ドロップする)
Yuichi Ishii,2014/2/8
Oculus Riftとの連携3既存のプログラムに対してOculus Rift対応を行うには、Main CameraをOculus Rift対応Cameraに置換します
これでOculus Riftのヘッドの動きにカメラが追従します
手順
1. Hierarchyの「Main Camera」を選択
2. InspectorのTransformの右側の歯車をクリックし、[Copy Component]を実行(位置と向きをコピー)
Yuichi Ishii,2014/2/8
Oculus Riftとの連携3手順
3. Hierarchyの「Main Camera」を削除
4. OVR/Prefabs/OVRCameraControllerをHierarchyに追加
5. または[Oculus]-[Prefabs]-[OVRCameraController]を実行
6. Hierarchyの[OVRCameraController]を選択
7. InspectorのTransformの右側の歯車をクリックし、[Paste Component Values]を実行(位置と向きを貼り付け)
Yuichi Ishii,2014/2/8
Unity + Oculus Riftにまつわる問題点と回避策
Yuichi Ishii,2014/2/8
問題点と解決策Unity+Oculus Rift開発メモ @k0rinさん
Oculus Rift ドキュメント(非公式翻訳)gamesonytabletさん
すべては紹介できないのでので、いくつかピックアップして紹介します。
Yuichi Ishii,2014/2/8
問題点1自動車や飛行機など、移動するオブジェクトにカメラを載せるには?
OVRCameraController(プレハブ)をそのオブジェクトの子にして、OVRCameraControllerコンポーネントのFollow Orientationプロパティに親オブジェクトをセットします。
OVRCameraControllerを子にしただけでは、追従はしますが回転にはついていきません。
Yuichi Ishii,2014/2/8
問題点1実例
1. OculusSample.zipを展開
2. Unityで上記プロジェクトを開く
3. Sample/Scenes/Scene1を開く(床とライトを設置済)
4. [GameObject]-[Create Other]-[Cube]を作成
5. Cubeを「Player」に名前を変更
6. Positionを(0, 0.5, 0)にする
Yuichi Ishii,2014/2/8
問題点1実例
7. OVRCameraControllerをPlayerの子に設定
8. OVRCameraControllerのPositionを(0,0,0)に設定
9. OVRCameraControllerのOVRCameraControllerプロパティの「Camera root position」 (親オブジェクトから見て、カメラの相対配置場所)のYを1に設定
10. 位置「Neck Position」のYを0.7(首の位置を指定)
11. OVRCameraControllerのOVRCameraControllerプロパティのFollow Orientationに「Player」を設定
Yuichi Ishii,2014/2/8
問題点1設定例
Yuichi Ishii,2014/2/8
問題点1実例
11. Layoutを「2 by 3」に変更
12. Playボタンを押して実行
13. HierarchyのPlayerを選択
14. InspectorのPositionの値を変更&確認
• カメラが追随することを確認
15. InspectorのRotationの値を変更&確認
• カメラが追随することを確認
Yuichi Ishii,2014/2/8
問題点23Dモデルのキャラの向きと頭の向きを同期させるには?
3DモデルのオブジェクトをOVRPlayerControllerの子オブジェクトのForwardDirectionの子オブジェクトとして登録する。
さらに「問題点1」の設定を行い、OVRCameraControllerコンポーネントの「Tracker Rotates Y」のチェックをオンにする
Yuichi Ishii,2014/2/8
問題点2実例
1. 先ほどの続きの場合はPlayerを削除。あるいはSample/Scenes/Scene2を開く
2. OVR/Prefabs/OVRPlayerControllerをHierarchyに追加
3. OVRPlayerControllerのPositionのYを1に設定
Yuichi Ishii,2014/2/8
問題点2実例
4. Cubeを作成
5. CubeをOVRPlayerController/ForwardDirectionの子に設定
6. CubeのPositionを(0, 0, 0)に設定
7. CubeのBox Colliderを削除(右の歯車を選択し、「Remove Component」を実行
Yuichi Ishii,2014/2/8
問題点2設定例
Playを押して動作確認
さらに効果を確認するために、CubeをForwardDirectionの子ではなく、OVRPlayerControllerの子に移動する
Yuichi Ishii,2014/2/8
問題点3Skyboxがずれて表示されることがある?
Unity標準のSkyboxはOculus Riftの立体視に対応していません。3Dモデルとして設置する必要があります。Noraさんが公開されているSkyboxMesh.csを使うのが簡単です。こちらで詳しい使い方が紹介されています。
Oculus Rift で Skybox を破綻なく表示できるSkyboxMesh.cs を試してみた - 凹みTips
Yuichi Ishii,2014/2/8
問題点4メッセージを常に正面に表示したい
3D Textかテクスチャを貼ったポリゴンを、OVRCameraControllerの子のCameraRightに接続します。CameraLeftの子にすると描画順序の関係からブレが発生します。
テクスチャポリゴンは3D空間内で他のオブジェクトと干渉しないよう、以下のような変更を加えたシェーダーを使います。
Tags { "Queue" = "Overlay" } // 最後に描画する
ZTest Always // Zテストをせず描画する
Yuichi Ishii,2014/2/8
問題点5GUIを追加したい
OVRGUI.csがGUIのヘルパクラスです。(OVR/Scripts/OVRGUI.cs)
SPACEキーを押した時のメニュー表示はOVRMainMenu.csが行っており、OVRGUIを利用しています。(OVR/Scripts/OVRMainMenu.cs)
Yuichi Ishii,2014/2/8
問題点5GUIを追加したい(続き)
OVRMainMenu.csと同様に行ってもよいのですが、Oculus開発者スレッドでUnity標準のGUIクラスのような感じで使うことができる「VRGUIパッケージ」が公開されています。
ダウンロードするにはOculus Riftの開発者名でログインしてください。
Yuichi Ishii,2014/2/8
問題点5GUIを追加したい(続き)
NGUIを利用する方法があります。
How to use NGUI with the Oculus Rift
Yuichi Ishii,2014/2/8
問題点6Mac OS XでXBOX360コントローラを使うには?
Unity 4 Integration - OSX Gamepadでまとめられています。
以下に要点をまとめ書きます。
ここのドライバ(TATTIEBOGLE)をインストール
これでとりあえず使えるようになります。
参考:ゲームパッドの動作テスト用のアプリ「Joystick And Gamepad Tester」-強火で進めで紹介されているツールを使うとボタンの番号がわかります。
Yuichi Ishii,2014/2/8
問題点6Mac OS XでXBOX360コントローラを使うには?(続き)
1. Unity標準の"First Person Controller"をシーンに配置
2. "First Person Controller"の子のMain Cameraを削除
3. "First Person Controller"の子にOVRCameraControllerを追加
4. 「問題点1」の対処を行う
Yuichi Ishii,2014/2/8
問題点6Mac OS XでXBOX360コントローラを使うには?(続き)
5. [Edit]->[ProjectSetting]->[Input setting]を開く
a. インスペクターのAxesの"Mouse X"と"Mouse Y"を複製
b. 複製した"Mouse X"のTypeを"Joystick Axis"にし、Axisを"3rd axis"にする
c. 複製した"Mouse Y"のTypeを"Joystick Axis"にし、Axisを"4th axis"にする
6. これでMac OS XでもXBOX360を使って移動ができます。
7. そのほかのボタンについては別途調整
Yuichi Ishii,2014/2/8
課題アプリの作成ワークショップ形式
Yuichi Ishii,2014/2/8
課題の説明課題はOculus Rift対応のアプリケーションを作成することです。
いくつかアプリケーション例を示しますので、その中からお好きなものを選んで作成してください。
Yuichi Ishii,2014/2/8
課題の説明アプリケーション例1
Sample Assets(beta)をベースに作成する
Sandboxフォルダにあるものをベースに改造する
ステージ作成用の3Dモデルとキャラクターだけ使用する
その他
Yuichi Ishii,2014/2/8
課題の説明アプリケーション例2
Asset Storeで公開されているステージ内をOculus Riftで動き回る
おすすめのパッケージを以下に示します。
【全部タダ!】無料で使える Unity Asset 50選 -3Dモデル編-
syyamalogさん
Yuichi Ishii,2014/2/8
課題の説明アプリケーション例3
ミクさんと戯れたい!
MMD4Mecanimを使うとMikuMikuDance用のモデルデータおよびモーションデータ(PMX/PMDファイル)をUnityにコンバートすることができます。
詳しくは公式サイトやUnity仮面さんの動画をご覧ください。
参考:MMDのモデルデータhttp://www6.atwiki.jp/vpvpwiki/pages/13.html
Yuichi Ishii,2014/2/8
課題の説明アプリケーション例4
オリジナルゲームの作成
次のスライドにアイディアだけ書いておきます。
煮るなり焼くなり好きにしてください。
(資料作りに追われてゲームを作れなかったなんて言えない・・・)
Yuichi Ishii,2014/2/8
オリジナルゲーム案コンセプト・イメージ
Missile CommandとYs1のダルク・ファクト戦を足して2で割った感じ
目的
あなたは超高出力レーザー砲になり、降りそそぐ隕石をレーザー砲で撃ち落とします。
レーザーが隕石に当たると3秒間爆風が広がります。これに他の隕石が巻き込まれると高得点になります。
隕石が床に当たると床が消えます。消えた床には移動できません。自分が立っている床が消えるとゲームオーバーです。
Yuichi Ishii,2014/2/8
オリジナルゲーム案移動方法(下記のいずれか)
なし(頭の向きのみ。照準があったら自動的にレーザーを発射)
前後左右。メインキャラクタの方向は正面のみ
前後+左右旋回。メインキャラの向きも変更
勝利条件隕石の衝突を避け一定数以上の隕石を撃ち落したら終了
プレイヤーは得点を競い合う
得点例
レーザーによる直接破壊:10点
爆風による破壊:100点、200点、400点、・・・、100×2個数-1
Yuichi Ishii,2014/2/8
発表会
Yuichi Ishii,2014/2/8
お疲れ様でした!スタッフのみなさんもお疲れ様でした!
Yuichi Ishii,2014/2/8 149
参考:Oculus Riftのスクリプト
Yuichi Ishii,2014/2/8
Oculus Riftのスクリプトこの資料は以下の情報を元に独自に書いています。
Oculus Rift ドキュメント(非公式翻訳)
Oculus Unity Integration Guide v0.2.5c - Updated: December 3, 2013
誤字脱字、問題点がありましたら私にご連絡ください。
Yuichi Ishii,2014/2/8
主に使用するスクリプトOVR/Scriptsに格納されている。
MonoBehaviourからの派生クラスOVRComponent
OVRCamera
OVRCameraController
OVRPlayerController
OVRDevice
OVRGamepadController
OVRMainMenu
Yuichi Ishii,2014/2/8
主に使用するスクリプトヘルパー・クラス
OVRCrosshair
OVRGUI
OVRMagCalibration
OVRMessenger
OVRPresetManager
OVRUtils
Yuichi Ishii,2014/2/8
MonoBehaviourからの派生クラス
Yuichi Ishii,2014/2/8
OVRComponentOVRクラスのベースクラスとなります。
Awake(), Start(), Update(), LateUpdate()メソッドにvirtualキーワードがついています。
Yuichi Ishii,2014/2/8
OVRCameraUnity カメラクラスにレンダリングするために使用されます。
このコンポーネントは Rift トラッカーを読み取り、カメラ位置および回転をします。
Yuichi Ishii,2014/2/8
OVRCameraController低レベルのカメラ操作を容易にするコンポーネントです。
Unity およびカメラのメインのインタフェースとなります。
Oculus Riftによるカメラ制御はこのコンポーネントを通じて行うようにしてください。
Yuichi Ishii,2014/2/8
OVRCameraControllerOVRCameraControllerのプロパティ一覧
Yuichi Ishii,2014/2/8
OVRCameraControllerVertical FOVこのフィールドには、カメラの視野(FOV)の垂直方向のフィールドを設定します(単位は度数)。
FOVはSDKで最適値を計算しますが、必要に応じてこの値を上書きすることができます。
FOVについては「よく分かるかもしれないOculus Riftについて(2) -Oculus Rift向けのポストプロセスの部分について」を参照のこと。
Yuichi Ishii,2014/2/8
OVRCameraControllerIPD
瞳孔間距離(Inter-Pupillary Distance)をメール単位で指定します。
デフォルトでは一般的な平均値が設定されています。
必要に応じて上書きすることができます。
Yuichi Ishii,2014/2/8
OVRCameraControllerCamera Root Position
アタッチされているオブジェクトに対する相対位置を設定します。
OVRPlayerController(プレハブ) では、Capsule Colliderのデフォルトの高さ2(m)の中心点である1.0(m)にセットされています。
Yuichi Ishii,2014/2/8
OVRCameraControllerNeck Position
アタッチされているオブジェクトに対する首の位置を指定します。
Yuichi Ishii,2014/2/8
OVRCameraControllerEye Center Position
このフィールドは頭部のモデリングにおいて目の中心が配置される場所をセットするのに使用します。
左右の目を分離するための瞳孔間距離(IPD)は自動的にセットされますが、この値は Set/GetIPD関数を通してセットすることも出来ます。
Yuichi Ishii,2014/2/8
OVRCameraControllerUse Player Eye Height
このフィールドは Oculus Configツールから実際のプレイヤーの目の高さをセットするために使用します。
このパラメータがONの時、以下の3 つの合計が Player Eye Heightと一致します。
Camera Root Position
Neck Position
Eye Center Position
このパラメータがONの時、 "Set Neck Position" を通して首の位置の書き換えは許可されません。
実装例はOVRCameraController.csスクリプトを確認して下さい。
Yuichi Ishii,2014/2/8
OVRCameraControllerFollow Orientation
これがセットされたとき、カメラは常にコンポーネントのrotationを追跡して、ヘッドトラッキングはこれに対するオフセットとなります。
車またはボディなどのオブジェクトにカメラを載せるときに便利です。
Yuichi Ishii,2014/2/8
OVRCameraControllerTracker Rotates Y
これがONのとき、カメラの実際のY軸回転に元づいて、それがアタッチされている親のTransformのY軸rotationの値をセットします。
これを拡張してX およびZ軸の値も対応させることができます。
カメラの実際の向きに元づいて、他のコンポーネントまたは他のゲームオブジェクトへフィードバックを反映させるのに便利です。
現時点ではヘッドトラッキングを実現してコントローラのForward 方向に反映させる際に、OVRPlayerControllerによって使用されます。
このコンポーネントの親 TransformをFollow Orientation にセットしたうえで Tracker Rotates Y を true とすることで方向(orientation)に対してフィードバックを反映します。
Yuichi Ishii,2014/2/8
OVRCameraControllerEnable Orientation
OFFにするとトラッカーの方向に応じたカメラの方向の更新を停止します。
Yuichi Ishii,2014/2/8
OVRCameraControllerPrediction On
オンのとき、トラッカーの予測(prediction)補正がセットされます。
予測(prediction)時間の大きさはOVRCameraController 配下にあるOVRDeviceコンポーネントを通して調整できます。
Yuichi Ishii,2014/2/8
OVRCameraControllerCall in Pre-Renderオンのとき、OVRCamera.csスクリプトの中でOnPreRender関数でレンダリングが行われます。
トラッカーをレンダリングに近づけるという効果があります(すなわち結果的に実際の待ち時間を低下させる) 。
しかし、この設定による発生する問題については「既知の問題」を参照して下さい。
Yuichi Ishii,2014/2/8
OVRCameraControllerWire-Frame Mode
セットするとシーンのレンダリングがワイヤフレームとなります。
Yuichi Ishii,2014/2/8
OVRCameraControllerLens Correction
セットすると、レンズ補正のパスが有効となります。
Yuichi Ishii,2014/2/8
OVRCameraControllerChromatic
セットすると、色収差(Chromatic Aberration)を修正するシェーダが使用されます。
色収差はレンズにより引き起こされ、画像の色が放射状に広がり、レンダリングされた画像の特定の場所で縞模様の色(Color Fringe)が発生する原因となります。
Yuichi Ishii,2014/2/8
OVRCameraControllerBackground Color
OVRCameraControllerプレハブにアタッチされた両方のカメラの背景色を設定します。
Near Clip Plane両方のカメラのニアクリップ平面(カメラの描画を行う、カメラから最も近い点)の値をセットします。
Far Clip Plane両方のカメラのファークリップ平面(カメラの描画を行う、カメラから最も遠い点)の値をセットします。
Yuichi Ishii,2014/2/8
OVRPlayerControllerOVRPlayerController によりOculus Riftを使用した基本的なFirst Person Controllerを実装します。このスクリプトはOVRCameraController がアタッチされた OVRPlayerControllerプレハブにアタッチされています。
OVRPlayerControllerスクリプトは、Character Controllerを自動的に追加します。したがって、Sceneに適切なCollisionを設定することで相互作用します。
OVRPlayerControllerプレハブはForwardDirectionと呼ばれる空のゲームオブジェクトがアタッチされています。このゲームのオブジェクトは、Motor Controlの方向に基づいた行列が含まれています。このゲームオブジェクトは主にプレイヤーのモデルを格納します。
Yuichi Ishii,2014/2/8
OVRPlayerControllerOVRPlayerControllerのプロパティ一覧
Yuichi Ishii,2014/2/8
OVRDeviceOVRDevice は Oculus Rift ハードウェアに対する基本的なインタフェースです。全てのエクスポートされた C++ 関数のラッパー関数に加えて、格納されたOculus 変数を使用してカメラのビヘイビアをセットアップするヘルパー関数を含んでいます。
このコンポーネントはOVRCameraControllerプレハブに追加されてます。任意のゲームオブジェクトにアタッチできます。しかし宣言は一回のみとすべきであり、理由として特定のOculus Riftの値をUnityインスペクタで調整できるパブリック変数が含まれるためです。
Yuichi Ishii,2014/2/8
OVRDeviceOVRDeviceのプロパティ一覧
Yuichi Ishii,2014/2/8
OVRDevicePrediction Time
このフィールドにより、トラッカーがプレイヤーの頭部の位置がある場所を予想する時間をどれぐらい先にするかを調整できます。入力からビデオ遅延(Latency)をカバーするのに有力です。デフォルトの値は50ミリ秒ですが、適切に調整できます。
Yuichi Ishii,2014/2/8
OVRDeviceReset Tracker On Load
この値のデフォルトはOnです。
Onの時、Application.LoadLevelでシーンを移動するとRiftの向きがリセットされます。向きをキープしたい場合には、このパラメータをOffにします。
プログラムで任意のタイミングでリセットするにはOVRDevice.ResetOrientation(0); // デバイス番号
と記述します。
Yuichi Ishii,2014/2/8
OVRGamepadControllerOVRGamepadController はゲームパッドコントローラに対するインタフェースクラスです。
Windows マシン上で、ゲームパッドはXInput互換である必要があります。
現在ネイティブXInput互換のゲームパッドはMacOSでサポートされていません。ゲームパッドの入力には従前のUnity Input の手法を使用してください。
Yuichi Ishii,2014/2/8
OVRMainMenuOVRMainMenuは異なるシーンのロードを制御するために使用します。さらにユーザが様々なOculus Rift 設定を修正できるメニューをレンダリングして、これらの設定を後で再度呼び出しできるように格納します。
アクセスしたいシーンを幾つも加えることが出来ます。
現在OVRMainMenuは利便性を考えてOVRPlayerControllerプレハブにアタッチされてますが、適切に取り外して一般的なUnity ロジックで使用されている別のゲームオブジェクトに追加することもできます。
Yuichi Ishii,2014/2/8
ヘルパー・クラス
Yuichi Ishii,2014/2/8
OVRCrosshairOVRCrosshair ステレオスコープを通した照準を追加するコンポーネントです。
照準は現在ビューがレンダリングされた後に描画されるため、歪み補正は全くありません。
Yuichi Ishii,2014/2/8
OVRGUIOVRGUI は2D または 3D で基本的なテキストのレンダリングを隠蔽するヘルパー・クラスです。
コードの2Dバージョンでは廃止予定であり、3D 要素のレンダリングに移行予定です(現在OVRMainMenuで使用されます。)
VRGUIパッケージを用いるとより使いやすくなります。
Yuichi Ishii,2014/2/8
OVRMagCalibrationOVRMagCalibrationは、ヨー・ドリフト(Yaw-drif)補正のために磁気センサーを校正するヘルパー・クラスです。
Yuichi Ishii,2014/2/8
OVRMessengerOVRMessengerは直接クラス間で高度なメッセージのためのクラスです。
これはUnity Community WikiのGeneral Conceptsにある"Advanced CSharp Messenger"のコピーです。
訳注:Scripts/Generalの「Messaging Systems」の中にありました。
Yuichi Ishii,2014/2/8
OVRPresetManagerOVRPresetManagerは、UnityのPlayerPrefsクラスを使用して変数の値を保存、再読み込みを可能にするためのヘルパークラスです。
現在OVRMainMenuコンポーネントによって使用されています。
Yuichi Ishii,2014/2/8
OVRUtilsOVRUtilsは、再利用可能なstatic関数の集まりです。
Yuichi Ishii,2014/2/8
本資料に関する問い合わせmail to: [email protected]
Facebook: https://www.facebook.com/yuichi141
HP: 個人ブログ:Zabaglioneのさもありなんhttp://zabaglione.info/
会社HP:(株)シーディングソフテックhttp://seedingsoftech.jp/
Yuichi Ishii,2014/2/8