第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
目次1
Unityとは
Oculus Riftとは
Unityの操作について
Oculus Riftとの連携について
入力装置について
Yuichi Ishii,2014/2/8
目次2
Oculus 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が提供する機能一覧
主な機能
物理演算
ナビメッシュ、パス探索、群衆シミュレーション
RakNet によるマルチプレイヤーネットワーク
LOD のサポート
オーディオ (3D音響とステレオ音響)
オーディオフィルター
ビデオ再生とストリーミング
アセットバンドルによる本格的なストリーミング
Unity4.3.4時点

引用:http://japan.unity3d.com/unity/licenses
Yuichi Ishii,2014/2/8
Unityが提供する機能一覧
アニメーション
Mecanim
Mecanim: IK Rigs
Mecanim: Sync Layers & Additional Curves
デプロイ関連
ワンクリックでのデプロイ
ウェブブラウザとの統合
スプラッシュスクリーンの変更
Unity4.3.4時点

引用:http://japan.unity3d.com/unity/licenses
Yuichi Ishii,2014/2/8
Unityが提供する機能一覧
グラフィックス(1)
低レベルレンダリングへのアクセス
マークアップによる ダイナミックフォント
Shuriken パーティクルシステム
3D テクスチャをサポート
リアルタイム Directional シャドウ
リアルタイム Spot/Point シャドウ またソフトシャドウ
HDR、トーンマッピング
ライトプローブ
Unity4.3.4時点

引用:http://japan.unity3d.com/unity/licenses
Yuichi Ishii,2014/2/8
Unityが提供する機能一覧
グラフィックス(2)
最適化されたグラフィック
シェーダーの利用(ビルトイン&カスタム)
ライトマッピング
グローバルイルミネーション付きライトマッピングとエリア・ライト
動的バッチング
静的パッチング
地形生成
Render-to-Texture エフェクト
Unity4.3.4時点

引用:http://japan.unity3d.com/unity/licenses
Yuichi Ishii,2014/2/8
Unityが提供する機能一覧
グラフィックス(3)
フルスクリーンポストエフェクト
オクルージョンカリング
デファードレンダリング
ステンシルバッファーへのアクセス
GPU スキニング

Unity4.3.4時点

引用:http://japan.unity3d.com/unity/licenses
Yuichi Ishii,2014/2/8
Unityが提供する機能一覧
コード
Navmesh: 動的障害・回避プライオリティ
Webplayer デバッギング
C#, JavaScript, Booによる.NETベースのスクリプト
WWW 関数を使ったウェブデータへのアクセス
ユーザーのブラウザで URL を開く
.NET ソケットサポート
ネイティブプラグインサポート
カスタムクラス用インスペクタ GUI
Unity4.3.4時点

引用:http://japan.unity3d.com/unity/licenses
Yuichi Ishii,2014/2/8
Unityが提供する機能一覧
エディタ
統合エディタ
自動的なアセットのインポート
アニメーションエディタ
プロファイラ・GPU プロファイリング
外部バージョン管理サポート
アセットパイプラインへのスクリプトアクセス
ダークスキン
Unity4.3.4時点

引用:http://japan.unity3d.com/unity/licenses
Yuichi Ishii,2014/2/8
Unityが提供する機能
非常に多くの機能がありますが、一度に全部覚える
必要はありません。
1つの機能であってもマスターするまでには相当時
間がかかりますので、根気よく続けて覚えてくださ
い。
このセミナーではUnityの基本操作+Oculus Riftとの連
携方法についての説明と、実際の操作を体験してい
ただきます。
Yuichi Ishii,2014/2/8
Oculus Riftとは

Yuichi Ishii,2014/2/8
Oculus Riftとは
Oculus Rift(オキュラス・リフト)とは、米Oculus
VR社が開発したバーチャルリアリティ用ヘッド
マウントディスプレイ(HMD、頭部搭載型ディス
プレイ)です。
http://www.oculusvr.com/

Yuichi Ishii,2014/2/8
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位を取った
引用:http://yaseino.hatenablog.com/entry/2014/01/09/203922
引用:https://gist.github.com/japboy/5545565
Yuichi Ishii,2014/2/8
Oculus Riftのハード仕様(DK1)
ディスプレイ仕様
・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
Yuichi Ishii,2014/2/8
Oculus Riftのハード仕様(DK1)
トラッキング仕様
・1000 Hz サンプリングレート
・3 軸回転儀 (gyroscope) による角速度検知
・3 軸磁力計 (magnetometer) による磁場検知
・3 軸加速度計 (accelerometer) による重力を含む加速度検知
・USB の HID として動作
・USB ケーブルが接続されていれば電源投入関係なくセンサー情報に
はアクセス可能

引用:https://gist.github.com/japboy/5545565
Yuichi Ishii,2014/2/8
Oculus Riftのハード仕様(DK1)
レンズ仕様
・レンズは A, B, C の 3 種類が付属している。それぞれの適正視力は
以下の通り
A: 視力 1.0 および遠視
B: 近視気味
C: 近視

引用:https://gist.github.com/japboy/5545565
Yuichi Ishii,2014/2/8
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の値段)
引用:http://yaseino.hatenablog.com/entry/2014/01/09/203922
引用:https://gist.github.com/japboy/5545565
Yuichi Ishii,2014/2/8
Oculus Riftの短所
開発キットの解像度が1280x800(片目640x800)という
低解像度
しかも画面が表示される部分はその中から更に制限
(レンズ補正の歪みのため)
頭の「向き」は取れるが「位置」は取れない
いずれもCES2014で発表された赤外線カメラ付属のコードネーム
「Crystal Cove」で解消済み(らしい)。
引用:http://yaseino.hatenablog.com/entry/2014/01/09/203922
引用:https://gist.github.com/japboy/5545565
Yuichi Ishii,2014/2/8
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-BetterOculus-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
引用:https://gist.github.com/japboy/5545565

Yuichi Ishii,2014/2/8
Oculus Riftの実装例
Lukalus
Unity で実装されたルカさんを観賞するデモ。
Windows と Mac OS X に対応。@yuujii 作
Lukalusでルカと暮らす - develog.me
Lukalus 0.3 Win/Mac GamePad対応 - [ Bowl Roll ]

引用:https://gist.github.com/japboy/5545565

Yuichi Ishii,2014/2/8
Oculus Riftの実装例
Lukalus Live!
Unity で実装されたルカさんがダンスするのを観
賞するデモ。Windows に対応。@yuujii 作
Lukalusでルカと暮らす - develog.me
ルカライブ!(Lukalus Live! 0.1) - [ Bowl Roll ]

引用:https://gist.github.com/japboy/5545565

Yuichi Ishii,2014/2/8
Oculus Riftの実装例
Macross + Oculus Rift
Unity で実装されたバルキリーシミュレータ。
WindowsとMac OS X版。
SolidM Macross + Oculus Rift
SolidM Macross + Oculus Rift その5(最終版)

引用:https://gist.github.com/japboy/5545565

Yuichi Ishii,2014/2/8
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 ]
引用:https://gist.github.com/japboy/5545565

Yuichi Ishii,2014/2/8
Oculus Riftの実装例
Ocean Rift
Unity で実装された海底体感のデモ。Windows 用。
RiftEnabled™ – Ocean Rift
Ocean Rift (featuring sharks) | Works in Progress |
Oculus Rift Developer Forums

引用:https://gist.github.com/japboy/5545565

Yuichi Ishii,2014/2/8
Oculus Riftの実装例
Oculus Street View
vr.js と HTML 5 で実装された Google Street View
の Oculus Rift 対応版。クロスプラットフォーム。
RiftEnabled™ – Oculus Street View
Oculus Google Street Viewer

引用:https://gist.github.com/japboy/5545565

Yuichi Ishii,2014/2/8
Oculus Riftの実装例
oculusDOGEZA
Tda 式ミクに土下座できる。
oculus DOGEZA(for Oculus Rift Only)
(PCの性能不足だと右画面が白くなる?)

引用:https://gist.github.com/japboy/5545565

Yuichi Ishii,2014/2/8
Oculus Riftの実装例
Parrot Coaster VR
Unity で実装されたローラーコースターのデモ。
Windows 用。
RiftEnabled™ – ParrotCoaster WIP
Oculus Rift - Parrot Coaster VR - Weeeeee! 1080p - YouTube

引用:https://gist.github.com/japboy/5545565

Yuichi Ishii,2014/2/8
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

引用:https://gist.github.com/japboy/5545565

Yuichi Ishii,2014/2/8
Oculus Riftの実装例
Titan
Unity で実装された「進撃の巨人」体感デモ。
Windows 用と Mac OS X 版がある
Titan Win
Titan Mac

引用:http://wiki.oculusvr.jp/index.php?%E3%83%87%E3%83%A2

Yuichi Ishii,2014/2/8
Oculus Riftの実装例
Titan of Space
Unity で実装された銀河系を宇宙船から観賞する
デモ。Windows 用と Mac OS X 版がある。
RiftEnabled™ – Titans of Space
Titans of Space

引用:https://gist.github.com/japboy/5545565

Yuichi Ishii,2014/2/8
Oculus Riftの実装例
Tsuitekulus
ミクさんがミクさんなったあなたに着いてきま
す。Windows 用。
ついてくるッス v0.0.2 - [ Bowl Roll ]

引用:https://gist.github.com/japboy/5545565

Yuichi Ishii,2014/2/8
Oculus Riftの実装例
VR Cinema 3D
Unity で実装された映画館を再現したデモ。好き
な動画を VR 映画館で再生できる。Windows 用。
RiftEnabled™ – VR Cinema 3D
vrcinema3D | Oculus-ready Games and Demos |
Oculus Rift Developer Forums

引用:https://gist.github.com/japboy/5545565

Yuichi Ishii,2014/2/8
Oculus Riftの実装例
Yunalus
Unity で実装されたイリュージョンのスマート
フォン向けゲームキャラクター「モグモグゆな
ちゃん」を観賞するデモ。Windows 用と Mac OS
X 版がある。
Oculus Rift バーチャルリアリティがもっと身近に
…
引用:https://gist.github.com/japboy/5545565

Yuichi Ishii,2014/2/8
Oculus Riftの実装例
AngryBots + Oculus Rift + Razer Hydra(自作)

Unity付属のAngryBotsをFPS視点にしてOculus
RiftとRazer Hydra対応にしました。Windows版の
み。
Razer Hydra対応は不完全です。
WebPlayer版(単にFPS化したもの)
ダウンロード版
引用:https://gist.github.com/japboy/5545565

Yuichi Ishii,2014/2/8
Oculus Riftの実装例
VR SKI JUMP

SKIのJUMPを体験できる。Windows版とMac版がある。
作者の@oukaichimon曰く、「妥当RiftCoasterを目指し、
Oculus初体験者向けのソフトを作りました。」との
ことです。是非チャレンジしてみてください。
VR SKI JUMP
トップページには沢山のアプリがります。
引用:https://gist.github.com/japboy/5545565

Yuichi Ishii,2014/2/8
Oculus Riftの体験会
これまで紹介したアプリケーションをダウン
ロードして試してみましょう。

Yuichi Ishii,2014/2/8
Unityの操作

Yuichi Ishii,2014/2/8
Unityの基本操作
Toolbar

Hierarchy

Scene
Inspector

Project

Yuichi Ishii,2014/2/8
Unityの基本操作
Toolbar
トランスフォームツール

オブジェクトの
拡大/縮小

Scene内の
移動
オブジェクトの
移動

オブジェクトの
回転
Yuichi Ishii,2014/2/8
Unityの基本操作
Transformツールのまとめ
W

移動

E

回転
(後半で使用)

R

拡大/縮小

この、赤や青、緑のハンドルのようなものを「Gizmo(ギズモ)」と呼びます。
Yuichi Ishii,2014/2/8
Toolbar
トランスフォームツール
Scene内の移動や拡大縮小(ショートカットキー:Q)
オブジェクトの移動(ショートカットキー:W)
オブジェクトの回転(ショートカットキー:E)
オブジェクトの拡大/縮小(ショートカットキー:R)

Yuichi Ishii,2014/2/8
Unityの基本操作
Toolbar
トランスフォームギズモトグルボタン。

Yuichi Ishii,2014/2/8
Unityの基本操作
Toolbar
トランスフォームギズモトグルボタン
Sceneビューにおけるギズモの切り替えます。
それぞれクリックするたびに切り替わります。

Yuichi Ishii,2014/2/8
Unityの基本操作
Toolbar
プレイ/ポーズ/ステップ ボタン
実際にゲームを動かしてみたり、一時停止、ステップ実行
することができます。

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ビューの中におけるカメの移動方法について次の
スライドで示します、

Yuichi Ishii,2014/2/8
Unityの基本操作
シーンのカメラの調整方法1
あくまでSceneビューの表示だけのことで、「Main Camera」には影響
を与えません。

回転
ALT+左クリック
右クリック

平行移動
ALT+CTRL+左クリック
ホイールクリック

ズーム
ホイール回転

詳細はUnityオンラインドキュメントを参照のこと
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
Yuichi Ishii,2014/2/8
GameObjectとComponent
Sceneには多数のGameObject(インスタンス)が存在し
ます。
GameObjectとはSceneに予め作成することもでききま
すし、スクリプトで動的に追加することもできます。
GameObject
Scene
GameObject
Yuichi Ishii,2014/2/8
GameObjectとComponent
GameObjectには多数のComponent(≒振る舞い)が
追加されています。
Component
GameObject

Component

Component

Scene
GameObject

Component
Component
Yuichi Ishii,2014/2/8
GameObjectとComponent
Componentを基底クラスとして様々な振る舞いを
定義した派生クラスが定義されています。
Behaviour

MonoBehaviour

Transform

Component

ユーザ定義
ユーザ定義

Collider

CapsuleCollider

Camera

BoxCollider
Yuichi Ishii,2014/2/8
GameObjectとComponent
GameObject
Create Empty
Transform以外のコンポーネント
を持たないGameObject

Create Other
初めからいくつかのコンポーネ
ントが追加されたGameObject

Yuichi Ishii,2014/2/8
GameObjectとComponent
ComponentはGameObject
に追加します。したがっ
て、まずはGameObjectを
選択する必要があります。

ComponentはUnity Editor
から追加したり、スクリ
プトから動的に追加する
こともできます。
Yuichi Ishii,2014/2/8
GameObjectとComponent
1つのGameObjectに同系のComponentを2つ以
上追加することはできません。
例:Box ColliderとSphere Collider

どうしても追加したい場合は、よく吟味したう
えでEmpty GameObjectを作成し、親子関係を持
たせてることで実現できます。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携について

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
Oculus SDK配布サイトにあるovr_unity_0.2.5_lib.zipを展
開し、OculusUnityIntegrationフォルダに含まれるUnity
Packageをインストールするだけです。
OculusUnityIntegrationTuscanyDemo.unitypackage
「Tuscany」のDemoパッケージ付
下記パッケージも包含しています。

OculusUnityIntegration.unitypackage
Oculus Riftと連携するために最低限必要なパッケージ
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
まずは試してみましょう。
Unityを起動してください。
新規にプロジェクトを作成してください
[File]-[New Project...]としてください

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
Explorerで
「OculusUnityIntegrationTuscanyDemo.unitypackage」をダ
ブルクリックしてください。
しばらくするとUnity側でImport Package画面が出るので、
Importボタンを押してください。インポートには時間がか
かります。

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
インポート直後の画面

スクリプトや
Prefabなど

demo
プロジェクト

ネイティブ
プラグイン
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
OVR
OVR は Oculus Unity 統合の最上位
のフォルダです。

Plugins
Oculus Riftとの通信するためのネイ
ティブライブラリです

Tuscany
Oculus Riftのdemoアセット

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
Editor:
Unity エディタへの機能拡張といくつかの
C#スクリプトが含まれます。

Materials
磁気コンパスや Main GUI ディスプレイで
使用する画像ファイルなどが含まれます。

OVRImageEffects
Oculus Rift ディスプレイ内で画像をワー
プさせるのに必要なスクリプトおよびレ
ンズ補正シェーダが含まれます。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
Prefabs
Oculus Rift を Unity シーンに繋げるため
のプレハブが含まれています。

Resources
いくつかの OVR スクリプトにより必要
とされ、インスタンス化されるプレハ
ブおよび別のオブジェクト(例えば磁気
コンパスのオブジェクト)が含まれます。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
Scripts
Oculut Rift と Unity コンポーネントを結ぶ
C# ファイルが含まれます。これら多くの
スクリプトは Prefabs フォルダと連携しま
す。

Shaders
Oculus Rift用に調整されたGUI Shaderを含
みます。

Textures
いくつかのスクリプトコンポーネントが
必要とする画像アセットが含まれます。

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
Projectビューの[Tuscany]-[Scenes]-[VRDemo
Tuscany]シーンファイルをダブルクリックして開い
てください。
保存の確認ダイアログが表示されますが、今回は特
に何もないので「Don't save」を押してください。

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
Sceneファイルを開いた直後の画面

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
Hierarchyビューにある「OVRPlayerController」を
ダブルクリックして操作キャラの位置を確認し
ましょう。

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
Toolbarの「Play」ボタンを押してください。
Oculus Riftが繋がっていれば樽状の2つのカメラ
画像が表示されます。

Oculus Riftが繋がっていなければ、単なる2つの
カメラ画像が表示されます。

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
Oculus Rift接続時の画面

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
Oculus Rift未接続時の画面

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
Oculus Riftで立体視するためには、1280x800の解
像度に全画面で表示する必要があります。
Unityの現バージョン(4.3.4)ではEditor上の実行で
フルスクリーンにすることはできません。
そこでアプリケーションにして確認してみます。

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
Unityの[File]-[Build Settings...:]を開いてビルドの
設定をします。
ビルド対象のシーンを追加するために、[Add
Current]ボタンを押します。
間違って複数回押してしまったら、選択してDel
キーを押して消してください。
Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
余計なシーンは選択して
[Del]キーで消します。

Yuichi Ishii,2014/2/8
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
キー名称
W または 上矢印

使用方法
プレイヤーを前方に移動

A または左矢印

プレイヤーを左に移動

S または下矢印

プレイヤーを後ろに移動

D または右矢印

プレイヤーを右に移動

左 Shift
Q および E

押し続けるとプレイヤーが走る
左右にプレイヤーが回転

引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
キーボードの制御2
キー名称

使用方法

右 Shift

シーン選択をトグル(上下の矢印でシーンの一覧からスクロール)

Return

シーン選択がオンのとき、現在選択されたシーンをロード

Z

手動の磁気カリブレーションを有効化

X

自動の磁気カリブレーションを有効化

C

マウスカーソルをオン/オフ切替

P

予測(Prediction)モードをオン/オフ切替

引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
キーボードの制御3
キー名称
B

使用方法
トラッカーの向きをリセット

スペース コンフィグ メニューをトグル
, および . 予測(prediction) の値の減算/加算(ミリ秒単位)

[ および ] 垂直方向の視界 (FOV) の減算/加算(角度単位)
- および = 瞳孔間距離 (IPD) の減算/加算(ミリメートル単位)

引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
キーボードの制御4
キー名称

使用方法

1 および 2 歪み定数 1 (K1) の減算/加算
3 および 4 歪み定数 2 (K2) の減算/加算
5 および 6 プレイヤーの高さの減算/加算(メートル単位)の減算/加算

7 および 8 プレイヤーの移動速度係数の減算/加算
9 および 0 プレイヤーの回転速度係数の減算/加算

引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
キーボードの制御5
キー名称

使用方法

Tab

Tabを押し続けて F3 -F5を押下することで現在のコンフィグのス
ナップショットを保存

F2

デフォルトのコンフィグにリセット

F3 F4 F5 保存されたコンフィグのスナップショットを再呼出
F6

もし磁気参照の向きがセットされていれば磁気コンパスのオン/
オフ切替

引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
キーボードの制御6
キー名称

使用方法

F11

全画面表示およびウィンドウ表示のモード切替

Esc

アプリケーションの終了

引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
マウスの制御
マウスを使用することでプレイヤーが左右に回転
します。
もしカーソルが有効化されていれば、マウスは
カーソルが画面外になるまで、プレイヤーを回転
させずに、カーソルをトラックします。

引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
ゲームパッドの制御1
もしプラットフォームの互換コントローラがある
場合、プレイヤーコントローラの動作を制御でき
ます。
左アナログスティックは WASD キーを使用するの
と同様にプレイヤーを動作させることが出来ます。
右アナログスティックはプレイヤーを左右に Q
および E キーを使用するかのように回転させます。
引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html

Yuichi Ishii,2014/2/8
Oculus Riftとの連携1
ゲームパッドの制御2
左のトリガーにより、もっと速く移動するか、シーン
上を走ることができます。
スタートボタンにより画面選択をトグルできます。Dパッドの上下を押すことで、利用可能なシーンをスク
ロールします。A ボタンを押すことで現在選択された
シーンを開始します。
もしシーン選択がトグルされない場合、D-パッドの下
を押すことでトラッカーの向きをリセットします。

引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html

Yuichi Ishii,2014/2/8
Oculus Riftとの連携2
今度は1から作成してみましょう。
Unityを起動してください。
新規にプロジェクトを作成してください
[File]-[New Project...]としてください

Yuichi Ishii,2014/2/8
Oculus Riftとの連携2
Explorerで「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との連携2
Oculus Rift対応済みのPrefabをSceneビューに追
加します。
[Oculus]-[Prefabs]-[OVRPlayerController]を選択

Yuichi Ishii,2014/2/8
Oculus Riftとの連携2
OVRPlayerControllerには(左右の)カメラが子オブ
ジェクトとして追加されています。
したがってHierarchyにあるMain Cameraは不要な
ので削除してください。

Yuichi Ishii,2014/2/8
Oculus Riftとの連携2
Playerの位置がFloorと同じため、そのままでは落
ちてしまいます(試しにPlayしてみてください)

Yuichi Ishii,2014/2/8
Oculus Riftとの連携2
Playerを少し引き上げてください。
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.
2.

Hierarchyの「Main Camera」を選択
InspectorのTransformの右側の歯車をクリックし、[Copy
Component]を実行(位置と向きをコピー)
Yuichi Ishii,2014/2/8
Oculus Riftとの連携3
手順
3.
4.
5.

6.
7.

Hierarchyの「Main Camera」を削除
OVR/Prefabs/OVRCameraControllerをHierarchyに追加
または[Oculus]-[Prefabs]-[OVRCameraController]を実行
Hierarchyの[OVRCameraController]を選択
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.
2.
3.

4.
5.
6.

OculusSample.zipを展開
Unityで上記プロジェクトを開く
Sample/Scenes/Scene1を開く(床とライトを設置済)
[GameObject]-[Create Other]-[Cube]を作成
Cubeを「Player」に名前を変更
Positionを(0, 0.5, 0)にする
Yuichi Ishii,2014/2/8
問題点1
実例
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」を設定
7.

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
問題点2
3Dモデルのキャラの向きと頭の向きを同期させるには?
3DモデルのオブジェクトをOVRPlayerControllerの子オブ
ジェクトのForwardDirectionの子オブジェクトとして登録
する。
さらに「問題点1」の設定を行い、OVRCameraController
コンポーネントの「Tracker Rotates Y」のチェックをオン
にする

Yuichi Ishii,2014/2/8
問題点2
実例
1.
2.

3.

先ほどの続きの場合はPlayerを削除。あるいは
Sample/Scenes/Scene2を開く
OVR/Prefabs/OVRPlayerControllerをHierarchyに追加
OVRPlayerControllerのPositionのYを1に設定

Yuichi Ishii,2014/2/8
問題点2
実例
4.
5.
6.

7.

Cubeを作成
CubeをOVRPlayerController/ForwardDirectionの子に設定
CubeのPositionを(0, 0, 0)に設定
CubeのBox Colliderを削除(右の歯車を選択し、「Remove
Component」を実行

Yuichi Ishii,2014/2/8
問題点2
設定例
Playを押して動作確認
さらに効果を確認するために、
CubeをForwardDirectionの子で
はなく、OVRPlayerController
の子に移動する
Yuichi Ishii,2014/2/8
問題点3
Skyboxがずれて表示されることがある?
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
問題点5
GUIを追加したい
OVRGUI.csがGUIのヘルパクラスです。
(OVR/Scripts/OVRGUI.cs)
SPACEキーを押した時のメニュー表示は
OVRMainMenu.csが行っており、OVRGUIを利用し
ています。(OVR/Scripts/OVRMainMenu.cs)

Yuichi Ishii,2014/2/8
問題点5
GUIを追加したい(続き)
OVRMainMenu.csと同様に行ってもよいのですが、
Oculus開発者スレッドでUnity標準のGUIクラスの
ような感じで使うことができる「VRGUIパッケー
ジ」が公開されています。
ダウンロードするにはOculus Riftの開発者名でロ
グインしてください。

Yuichi Ishii,2014/2/8
問題点5
GUIを追加したい(続き)
NGUIを利用する方法があります。
How to use NGUI with the Oculus Rift

Yuichi Ishii,2014/2/8
問題点6
Mac OS XでXBOX360コントローラを使うには?
Unity 4 Integration - OSX Gamepadでまとめられていま
す。
以下に要点をまとめ書きます。
ここのドライバ(TATTIEBOGLE)をインストール
これでとりあえず使えるようになります。
参考:ゲームパッドの動作テスト用のアプリ
「Joystick And Gamepad Tester」- 強火で進めで紹介
されているツールを使うとボタンの番号がわかります。
Yuichi Ishii,2014/2/8
問題点6
Mac 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
問題点6
Mac 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.
7.

これでMac OS XでもXBOX360を使って移動ができます。
そのほかのボタンについては別途調整

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
OVRComponent
OVRクラスのベースクラスとなります。
Awake(), Start(), Update(), LateUpdate()メソッドに
virtualキーワードがついています。

Yuichi Ishii,2014/2/8
OVRCamera
Unity カメラクラスにレンダリングするために使
用されます。
このコンポーネントは Rift トラッカーを読み取
り、カメラ位置および回転をします。

Yuichi Ishii,2014/2/8
OVRCameraController
低レベルのカメラ操作を容易にするコンポーネ
ントです。
Unity およびカメラのメインのインタフェースと
なります。
Oculus Riftによるカメラ制御はこのコンポーネン
トを通じて行うようにしてください。
Yuichi Ishii,2014/2/8
OVRCameraController
OVRCameraControllerのプロパティ一覧

Yuichi Ishii,2014/2/8
OVRCameraController
Vertical FOV
このフィールドには、カメラの視
野(FOV)の垂直方向のフィールド
を設定します(単位は度数)。
FOVはSDKで最適値を計算します
が、 必要に応じてこの値を上書
きすることができます。
FOVについては「よく分かるかも
しれないOculus Riftについて(2) Oculus Rift向けのポストプロセス
の部分について」を参照のこと。
Yuichi Ishii,2014/2/8
OVRCameraController
IPD
瞳孔間距離(Inter-Pupillary
Distance)をメール単位で指定し
ます。
デフォルトでは一般的な平均値
が設定されています。
必要に応じて上書きすることが
できます。
Yuichi Ishii,2014/2/8
OVRCameraController
Camera Root Position
アタッチされているオブジェク
トに対する相対位置を設定しま
す。
OVRPlayerController(プレハブ)
では、Capsule Colliderのデフォ
ルトの高さ2(m)の中心点である
1.0(m)にセットされています。
Yuichi Ishii,2014/2/8
OVRCameraController
Neck Position
アタッチされているオブジェク
トに対する首の位置を指定しま
す。

Yuichi Ishii,2014/2/8
OVRCameraController
Eye Center Position
このフィールドは頭部のモデリン
グにおいて目の中心が配置される
場所をセットするのに使用します。
左右の目を分離するための瞳孔間
距離(IPD)は自動的にセットされ
ますが、この値は Set/GetIPD 関
数を通してセットすることも出来
ます。
Yuichi Ishii,2014/2/8
OVRCameraController
Use 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
OVRCameraController
Follow Orientation
これがセットされたとき、カメラは常に
コンポーネントのrotationを追跡して、
ヘッドトラッキングはこれに対するオフ
セットとなります。
車またはボディなどのオブジェクトにカ
メラを載せるときに便利です。

Yuichi Ishii,2014/2/8
OVRCameraController
Tracker Rotates Y
これがONのとき、カメラの実際のY軸回転に元づいて、それが
アタッチされている親のTransformのY軸rotationの値をセットし
ます。
これを拡張してX およびZ軸の値も対応させることができます。
カメラの実際の向きに元づいて、他のコンポーネントまたは他
のゲームオブジェクトへフィードバックを反映させるのに便利
です。
現時点ではヘッドトラッキングを実現してコントローラの
Forward 方向に反映させる際に、OVRPlayerController によって使
用されます。
このコンポーネントの親 TransformをFollow Orientation にセット
したうえで Tracker Rotates Y を true とすることで方向
(orientation)に対してフィードバックを反映します。

Yuichi Ishii,2014/2/8
OVRCameraController
Enable Orientation
OFFにするとトラッカーの方向に応じた
カメラの方向の更新を停止します。

Yuichi Ishii,2014/2/8
OVRCameraController
Prediction On
オンのとき、トラッカーの予測
(prediction)補正がセットされます。
予測(prediction)時間の大きさは
OVRCameraController 配下にある
OVRDeviceコンポーネントを通し
て調整できます。

Yuichi Ishii,2014/2/8
OVRCameraController
Call in Pre-Render
オンのとき、OVRCamera.csスクリプ
トの中でOnPreRender関数でレンダリ
ングが行われます。
トラッカーをレンダリングに近づける
という効果があります(すなわち結果
的に実際の待ち時間を低下させる) 。
しかし、この設定による発生する問題
については「既知の問題」を参照して
下さい。

Yuichi Ishii,2014/2/8
OVRCameraController
Wire-Frame Mode
セットするとシーンのレンダリン
グがワイヤフレームとなります。

Yuichi Ishii,2014/2/8
OVRCameraController
Lens Correction
セットすると、レンズ補正のパス
が有効となります。

Yuichi Ishii,2014/2/8
OVRCameraController
Chromatic
セットすると、色収差(Chromatic
Aberration)を修正するシェーダが使
用されます。
色収差はレンズにより引き起こさ
れ、画像の色が放射状に広がり、
レンダリングされた画像の特定の
場所で縞模様の色(Color Fringe)が
発生する原因となります。
Yuichi Ishii,2014/2/8
OVRCameraController
Background Color
OVRCameraController プレハブにアタッチされた両方
のカメラの背景色を設定します。

Near Clip Plane
両方のカメラのニアクリップ平面(カメラの描画を行
う、カメラから最も近い点)の値をセットします。

Far Clip Plane
両方のカメラのファークリップ平面(カメラの描画を
行う、カメラから最も遠い点)の値をセットします。

Yuichi Ishii,2014/2/8
OVRPlayerController
OVRPlayerController によりOculus Riftを使用した基本的な
First Person Controllerを実装します。このスクリプトは
OVRCameraController がアタッチされた OVRPlayerController
プレハブにアタッチされています。
OVRPlayerControllerスクリプトは、Character Controllerを自動
的に追加します。したがって、Sceneに適切なCollisionを設定
することで相互作用します。
OVRPlayerControllerプレハブはForwardDirectionと呼ばれる空
のゲームオブジェクトがアタッチされています。このゲーム
のオブジェクトは、Motor Controlの方向に基づいた行列が含
まれています。このゲームオブジェクトは主にプレイヤーの
モデルを格納します。
Yuichi Ishii,2014/2/8
OVRPlayerController
OVRPlayerControllerのプロパティ一覧

Yuichi Ishii,2014/2/8
OVRDevice
OVRDevice は Oculus Rift ハードウェアに対する基本
的なインタフェースです。全てのエクスポートされ
た C++ 関数のラッパー関数に加えて、格納された
Oculus 変数を使用してカメラのビヘイビアをセット
アップするヘルパー関数を含んでいます。
このコンポーネントはOVRCameraControllerプレハブ
に追加されてます。任意のゲームオブジェクトにア
タッチできます。しかし宣言は一回のみとすべきで
あり、理由として特定のOculus Riftの値をUnityインス
ペクタで調整できるパブリック変数が含まれるため
です。
Yuichi Ishii,2014/2/8
OVRDevice
OVRDeviceのプロパティ一覧

Yuichi Ishii,2014/2/8
OVRDevice
Prediction Time
このフィールドにより、トラッカーがプレイヤーの頭部の位
置がある場所を予想する時間をどれぐらい先にするかを調整
できます。入力からビデオ遅延(Latency)をカバーするのに有
力です。デフォルトの値は50ミリ秒ですが、適切に調整でき
ます。

Yuichi Ishii,2014/2/8
OVRDevice
Reset Tracker On Load
この値のデフォルトはOnです。
Onの時、Application.LoadLevelでシーンを移動するとRiftの向きがリ
セットされます。向きをキープしたい場合には、このパラメータを
Offにします。
プログラムで任意のタイミングでリセットするには
OVRDevice.ResetOrientation(0); // デバイス番号
と記述します。

Yuichi Ishii,2014/2/8
OVRGamepadController
OVRGamepadController はゲームパッドコント
ローラに対するインタフェースクラスです。
Windows マシン上で、ゲームパッドはXInput互換
である必要があります。
現在ネイティブXInput互換のゲームパッドは
MacOSでサポートされていません。ゲームパッ
ドの入力には従前のUnity Input の手法を使用し
てください。
Yuichi Ishii,2014/2/8
OVRMainMenu
OVRMainMenu は異なるシーンのロードを制御するために
使用します。さらにユーザが様々なOculus Rift 設定を修正
できるメニューをレンダリングして、これらの設定を後で
再度呼び出しできるように格納します。
アクセスしたいシーンを幾つも加えることが出来ます。
現在OVRMainMenu は利便性を考えてOVRPlayerController
プレハブにアタッチされてますが、適切に取り外して一般
的なUnity ロジックで使用されている別のゲームオブジェ
クトに追加することもできます。
Yuichi Ishii,2014/2/8
ヘルパー・クラス

Yuichi Ishii,2014/2/8
OVRCrosshair
OVRCrosshair ステレオスコープを通した照準を
追加するコンポーネントです。
照準は現在ビューがレンダリングされた後に描
画されるため、歪み補正は全くありません。

Yuichi Ishii,2014/2/8
OVRGUI
OVRGUI は2D または 3D で基本的なテキストの
レンダリングを隠蔽するヘルパー・クラスです。
コードの2Dバージョンでは廃止予定であり、3D
要素のレンダリングに移行予定です(現在
OVRMainMenuで使用されます。)
VRGUIパッケージを用いるとより使いやすくなり
ます。
Yuichi Ishii,2014/2/8
OVRMagCalibration
OVRMagCalibrationは、ヨー・ドリフト(Yaw-drif)
補正のために磁気センサーを校正するヘル
パー・クラスです。

Yuichi Ishii,2014/2/8
OVRMessenger
OVRMessengerは直接クラス間で高度なメッセー
ジのためのクラスです。
これはUnity Community WikiのGeneral Conceptsに
ある"Advanced CSharp Messenger"のコピーです。
訳注:Scripts/Generalの「Messaging Systems」
の中にありました。
Yuichi Ishii,2014/2/8
OVRPresetManager
OVRPresetManagerは、UnityのPlayerPrefsクラス
を使用して変数の値を保存、再読み込みを可能
にするためのヘルパークラスです。
現在OVRMainMenuコンポーネントによって使用
されています。

Yuichi Ishii,2014/2/8
OVRUtils
OVRUtilsは、再利用可能なstatic関数の集まりで
す。

Yuichi Ishii,2014/2/8
本資料に関する問い合わせ
mail to: yuichi141@gmail.com

Facebook: https://www.facebook.com/yuichi141
HP:
個人ブログ:Zabaglioneのさもありなん
http://zabaglione.info/
会社HP:(株)シーディングソフテック
http://seedingsoftech.jp/
Yuichi Ishii,2014/2/8

第1回 【初心者向け】Unity+Oculus Riftで次世代の3Dゲームを作って感じるワークショップ