Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

70,887 views

Published on

UnityおよびOculus Riftの初心者の方を対象に簡単な体験型3Dゲーム開発をするワークショップです。

Published in: Technology
  • Be the first to comment

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

  1. 1. 第1回 Unity + Oculus Rift 次世代の3Dゲームを作って感じるワークショップ 2014/2/8 Yuichi Ishii Yuichi Ishii,2014/2/8 1
  2. 2. 自己紹介 名前:石井 勇一 開発者コード名:zabaglione Facebook: https://www.facebook.com/yuichi141 株式会社シーディングソフテック 代表取締役社長 普段はスマートフォン、組込み機器向けのプログラミングに関する研修の講師 物心ついたころからゲームセンターに通いだし、小3の時に親戚の家でパソコンを見てか らプログラミングに夢中(下手の横好き) 最近の興味はUnityを中心としたNUI(Natural User Interface)、VRなどを絡めたゲーム開発 Yuichi Ishii,2014/2/8
  3. 3. 目次1 Unityとは Oculus Riftとは Unityの操作について Oculus Riftとの連携について 入力装置について Yuichi Ishii,2014/2/8
  4. 4. 目次2 Oculus Riftの実装例 Unity + Oculus Riftにまつわる問題点と回避策 課題アプリの作成(ワークショップ) 発表会 参考:Oculus Riftのスクリプト Yuichi Ishii,2014/2/8
  5. 5. Unityとは Yuichi Ishii,2014/2/8
  6. 6. Unityとは Unity はゲーム開発のエコシステム。インタラクティブな 3D コンテ ンツ作成のための直感的なツールとサクサク作れるワークフローが、 パワフルなレンダリングエンジンと完全に統合された環境で開発が 出来ます。 手軽なマルチプラットフォームパブリッシング、高品質なアセット が幾千も揃ったアセットストア、困ったときにノウハウを共有して くれる巨大なコミュニティがあなたを支えます。 Unityの民主的なエコシステムは、美しく手の込んだゲームを作り出 す時に、多くのデベロッパーやスタジオが直面する障壁を突き崩す 手段となるでしょう。彼らは、人々が夢中になって喜ぶゲームをあ らゆるプラットフォームで作るために、Unity を活用しているのです。 引用:http://japan.unity3d.com/unity/ Yuichi Ishii,2014/2/8
  7. 7. Unityとは Unity = 「Editor」+「Game Engine」 初登場は2005年のアップル主催 Worldwide Developers Conference バージョン3.xから非常に多くのプラットフォームで動作す るアプリケーションの作成が可能になった バージョン4.0でMecanimと呼ばれる3Dモデルのアニメー ション制御エンジンを内蔵し、4.3から2Dスプライトのサ ポートなど新機能を次々と実装し続けている。 Yuichi Ishii,2014/2/8
  8. 8. Unityが提供する機能一覧 主な機能 物理演算 ナビメッシュ、パス探索、群衆シミュレーション RakNet によるマルチプレイヤーネットワーク LOD のサポート オーディオ (3D音響とステレオ音響) オーディオフィルター ビデオ再生とストリーミング アセットバンドルによる本格的なストリーミング Unity4.3.4時点 引用:http://japan.unity3d.com/unity/licenses Yuichi Ishii,2014/2/8
  9. 9. Unityが提供する機能一覧 アニメーション Mecanim Mecanim: IK Rigs Mecanim: Sync Layers & Additional Curves デプロイ関連 ワンクリックでのデプロイ ウェブブラウザとの統合 スプラッシュスクリーンの変更 Unity4.3.4時点 引用:http://japan.unity3d.com/unity/licenses Yuichi Ishii,2014/2/8
  10. 10. Unityが提供する機能一覧 グラフィックス(1) 低レベルレンダリングへのアクセス マークアップによる ダイナミックフォント Shuriken パーティクルシステム 3D テクスチャをサポート リアルタイム Directional シャドウ リアルタイム Spot/Point シャドウ またソフトシャドウ HDR、トーンマッピング ライトプローブ Unity4.3.4時点 引用:http://japan.unity3d.com/unity/licenses Yuichi Ishii,2014/2/8
  11. 11. Unityが提供する機能一覧 グラフィックス(2) 最適化されたグラフィック シェーダーの利用(ビルトイン&カスタム) ライトマッピング グローバルイルミネーション付きライトマッピングとエリア・ライト 動的バッチング 静的パッチング 地形生成 Render-to-Texture エフェクト Unity4.3.4時点 引用:http://japan.unity3d.com/unity/licenses Yuichi Ishii,2014/2/8
  12. 12. Unityが提供する機能一覧 グラフィックス(3) フルスクリーンポストエフェクト オクルージョンカリング デファードレンダリング ステンシルバッファーへのアクセス GPU スキニング Unity4.3.4時点 引用:http://japan.unity3d.com/unity/licenses Yuichi Ishii,2014/2/8
  13. 13. 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
  14. 14. Unityが提供する機能一覧 エディタ 統合エディタ 自動的なアセットのインポート アニメーションエディタ プロファイラ・GPU プロファイリング 外部バージョン管理サポート アセットパイプラインへのスクリプトアクセス ダークスキン Unity4.3.4時点 引用:http://japan.unity3d.com/unity/licenses Yuichi Ishii,2014/2/8
  15. 15. Unityが提供する機能 非常に多くの機能がありますが、一度に全部覚える 必要はありません。 1つの機能であってもマスターするまでには相当時 間がかかりますので、根気よく続けて覚えてくださ い。 このセミナーではUnityの基本操作+Oculus Riftとの連 携方法についての説明と、実際の操作を体験してい ただきます。 Yuichi Ishii,2014/2/8
  16. 16. Oculus Riftとは Yuichi Ishii,2014/2/8
  17. 17. Oculus Riftとは Oculus Rift(オキュラス・リフト)とは、米Oculus VR社が開発したバーチャルリアリティ用ヘッド マウントディスプレイ(HMD、頭部搭載型ディス プレイ)です。 http://www.oculusvr.com/ Yuichi Ishii,2014/2/8
  18. 18. 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
  19. 19. 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
  20. 20. 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
  21. 21. Oculus Riftのハード仕様(DK1) レンズ仕様 ・レンズは A, B, C の 3 種類が付属している。それぞれの適正視力は 以下の通り A: 視力 1.0 および遠視 B: 近視気味 C: 近視 引用:https://gist.github.com/japboy/5545565 Yuichi Ishii,2014/2/8
  22. 22. Oculus Riftのソフト仕様(DK1) Windows, Mac, Linux用のSDKを配布(言語はC++) Unity, UDKへの統合キットを配布 SDKに含まれているソースコード及びバイナリは 使用、変更、再配布が可能 (正確にはSDKやライブラリなどに含まれる LICENSE.txtファイルやソースコードのコメント を参照のこと) Yuichi Ishii,2014/2/8
  23. 23. 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
  24. 24. 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
  25. 25. Oculus Riftの購入方法 2014/2/8現在、日本正規代理店は存在しない 公式サイトから直接購入するのが確実 https://www.oculusvr.com/order/ 本体価格 $300 + 送料($50〜$60ぐらい?) + 関税? コードネーム「Crystal Cove」が控えているが …… Yuichi Ishii,2014/2/8
  26. 26. Oculus Riftの購入方法 Oculus RiftをUnityで使うには「Unity Pro」が必須 です。 Oculus Riftを購入するとUnity Pro体験版4か月延 長コードが取得できます。 それも使い倒したらUnity Proを購入するか、他 のゲームエンジンで試すとよいでしょう。 Yuichi Ishii,2014/2/8
  27. 27. 入力装置について Yuichi Ishii,2014/2/8
  28. 28. 相性が良さそうな入力装置 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
  29. 29. 相性が良さそうな入力装置 Kinect Leap Motion Razer Hydra STEM System Virtuix Omni MYO - Gesture control armband by Thalmic Labs QUMARION Yuichi Ishii,2014/2/8
  30. 30. 相性が良さそうな入力装置 その他 Wiiコントローラ、PlayStation3などのコントローラ Zeemote JS1 MIDI機器 Yuichi Ishii,2014/2/8
  31. 31. Oculus Riftの実装例 Yuichi Ishii,2014/2/8
  32. 32. 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
  33. 33. 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
  34. 34. 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
  35. 35. 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
  36. 36. 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
  37. 37. 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
  38. 38. 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
  39. 39. Oculus Riftの実装例 oculusDOGEZA Tda 式ミクに土下座できる。 oculus DOGEZA(for Oculus Rift Only) (PCの性能不足だと右画面が白くなる?) 引用:https://gist.github.com/japboy/5545565 Yuichi Ishii,2014/2/8
  40. 40. 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
  41. 41. 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
  42. 42. 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
  43. 43. 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
  44. 44. Oculus Riftの実装例 Tsuitekulus ミクさんがミクさんなったあなたに着いてきま す。Windows 用。 ついてくるッス v0.0.2 - [ Bowl Roll ] 引用:https://gist.github.com/japboy/5545565 Yuichi Ishii,2014/2/8
  45. 45. 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
  46. 46. Oculus Riftの実装例 Yunalus Unity で実装されたイリュージョンのスマート フォン向けゲームキャラクター「モグモグゆな ちゃん」を観賞するデモ。Windows 用と Mac OS X 版がある。 Oculus Rift バーチャルリアリティがもっと身近に … 引用:https://gist.github.com/japboy/5545565 Yuichi Ishii,2014/2/8
  47. 47. 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
  48. 48. 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
  49. 49. Oculus Riftの体験会 これまで紹介したアプリケーションをダウン ロードして試してみましょう。 Yuichi Ishii,2014/2/8
  50. 50. Unityの操作 Yuichi Ishii,2014/2/8
  51. 51. Unityの基本操作 Toolbar Hierarchy Scene Inspector Project Yuichi Ishii,2014/2/8
  52. 52. Unityの基本操作 Toolbar トランスフォームツール オブジェクトの 拡大/縮小 Scene内の 移動 オブジェクトの 移動 オブジェクトの 回転 Yuichi Ishii,2014/2/8
  53. 53. Unityの基本操作 Transformツールのまとめ W 移動 E 回転 (後半で使用) R 拡大/縮小 この、赤や青、緑のハンドルのようなものを「Gizmo(ギズモ)」と呼びます。 Yuichi Ishii,2014/2/8
  54. 54. Toolbar トランスフォームツール Scene内の移動や拡大縮小(ショートカットキー:Q) オブジェクトの移動(ショートカットキー:W) オブジェクトの回転(ショートカットキー:E) オブジェクトの拡大/縮小(ショートカットキー:R) Yuichi Ishii,2014/2/8
  55. 55. Unityの基本操作 Toolbar トランスフォームギズモトグルボタン。 Yuichi Ishii,2014/2/8
  56. 56. Unityの基本操作 Toolbar トランスフォームギズモトグルボタン Sceneビューにおけるギズモの切り替えます。 それぞれクリックするたびに切り替わります。 Yuichi Ishii,2014/2/8
  57. 57. Unityの基本操作 Toolbar プレイ/ポーズ/ステップ ボタン 実際にゲームを動かしてみたり、一時停止、ステップ実行 することができます。 Play Pause Step Yuichi Ishii,2014/2/8
  58. 58. Unityの基本操作 Toolbar Layers ドロップダウンボタン Sceneビュー中でどのオブジェク トを表示するか管理します Yuichi Ishii,2014/2/8
  59. 59. Unityの基本操作 Toolbar レイアウト ドロップダウンボタン 画面のレイアウトを変えることができ ます。 [2 by 3], [4 Split], [Default], [Tall], [Wide] などからお好みのレイアウトを選んで ください。 画面のレイアウトは移動、表示/非表示 ができます。 [Save Layout...]でレイアウトを保存でき ます。 Yuichi Ishii,2014/2/8
  60. 60. Unityの基本操作 Scene プレイヤー、カメラ、敵およびその他あらゆるすべて の GameObject を選択し、配置することができます。 Sceneビューの中におけるカメの移動方法について次の スライドで示します、 Yuichi Ishii,2014/2/8
  61. 61. Unityの基本操作 シーンのカメラの調整方法1 あくまでSceneビューの表示だけのことで、「Main Camera」には影響 を与えません。 回転 ALT+左クリック 右クリック 平行移動 ALT+CTRL+左クリック ホイールクリック ズーム ホイール回転 詳細はUnityオンラインドキュメントを参照のこと Yuichi Ishii,2014/2/8
  62. 62. Unityの基本操作 シーンのカメラの調整方法2 フライトスルーモード マウスの右ボタンを押したままにする キーボードのWASDキーで上下左右、QEで上下の平行移動 SHIFTキーで加速 詳細はUnityオンラインドキュメントを参照のこと Yuichi Ishii,2014/2/8
  63. 63. Unityの基本操作 シーンのカメラの調整方法3 シーンギズモ Sceneビューの右上のアイコン。 XYZの近くにある腕の部分をクリックすると その方向にカメラを移動します。 真ん中の立方体をクリックすると、等角図法(Isometric Mode) と 透視(遠近)図法(Perspective Mode)の切り替えになります。 また、中央の立方体をSHIFTキーを押しながらクリックすると、 少し見下ろした位置にカメラを移動します。 詳細はUnityオンラインドキュメントを参照のこと Yuichi Ishii,2014/2/8
  64. 64. Unityの基本操作 Hierarchy 現在開いているシーン中のすべて の GameObject が含まれています。 HierarchyビューではGameObjectの作 成や複製、削除ができます。 また、Sceneの中のGameObjectは階 層構造を持つことができ、親子関係 を持たせたり、解除したりできます。 Yuichi Ishii,2014/2/8
  65. 65. Unityの基本操作 Project プロジェクトに属するAssets(ア セット:資産、財産など意味)に アクセスし、管理することがで きます。 Assetsはゲームを構成する様々 な部品を表します。例えるなら、 ゲームの素材倉庫のようなもの です。 Yuichi Ishii,2014/2/8
  66. 66. Unityの基本操作 Inspector SceneビューやHierarchyビューで選択した GameObjectや、Projectビューのファイルの 内容を表示したり変更したりすることがで きます。 UnityのGameObjectやAsstesは多くの 「Component」を含んでいます。 ComponentはUnityの[Component]メニューか ら増やすことができます。 Componentを削除するには、各コンポーネン トの右側にある歯車をクリックして[Remove Component]を選んでください。 Component Component Yuichi Ishii,2014/2/8
  67. 67. GameObjectとComponent Sceneには多数のGameObject(インスタンス)が存在し ます。 GameObjectとはSceneに予め作成することもでききま すし、スクリプトで動的に追加することもできます。 GameObject Scene GameObject Yuichi Ishii,2014/2/8
  68. 68. GameObjectとComponent GameObjectには多数のComponent(≒振る舞い)が 追加されています。 Component GameObject Component Component Scene GameObject Component Component Yuichi Ishii,2014/2/8
  69. 69. GameObjectとComponent Componentを基底クラスとして様々な振る舞いを 定義した派生クラスが定義されています。 Behaviour MonoBehaviour Transform Component ユーザ定義 ユーザ定義 Collider CapsuleCollider Camera BoxCollider Yuichi Ishii,2014/2/8
  70. 70. GameObjectとComponent GameObject Create Empty Transform以外のコンポーネント を持たないGameObject Create Other 初めからいくつかのコンポーネ ントが追加されたGameObject Yuichi Ishii,2014/2/8
  71. 71. GameObjectとComponent ComponentはGameObject に追加します。したがっ て、まずはGameObjectを 選択する必要があります。 ComponentはUnity Editor から追加したり、スクリ プトから動的に追加する こともできます。 Yuichi Ishii,2014/2/8
  72. 72. GameObjectとComponent 1つのGameObjectに同系のComponentを2つ以 上追加することはできません。 例:Box ColliderとSphere Collider どうしても追加したい場合は、よく吟味したう えでEmpty GameObjectを作成し、親子関係を持 たせてることで実現できます。 Yuichi Ishii,2014/2/8
  73. 73. Oculus Riftとの連携について Yuichi Ishii,2014/2/8
  74. 74. 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
  75. 75. Oculus Riftとの連携1 まずは試してみましょう。 Unityを起動してください。 新規にプロジェクトを作成してください [File]-[New Project...]としてください Yuichi Ishii,2014/2/8
  76. 76. Oculus Riftとの連携1 Explorerで 「OculusUnityIntegrationTuscanyDemo.unitypackage」をダ ブルクリックしてください。 しばらくするとUnity側でImport Package画面が出るので、 Importボタンを押してください。インポートには時間がか かります。 Yuichi Ishii,2014/2/8
  77. 77. Oculus Riftとの連携1 インポート直後の画面 スクリプトや Prefabなど demo プロジェクト ネイティブ プラグイン Yuichi Ishii,2014/2/8
  78. 78. Oculus Riftとの連携1 OVR OVR は Oculus Unity 統合の最上位 のフォルダです。 Plugins Oculus Riftとの通信するためのネイ ティブライブラリです Tuscany Oculus Riftのdemoアセット Yuichi Ishii,2014/2/8
  79. 79. Oculus Riftとの連携1 Editor: Unity エディタへの機能拡張といくつかの C#スクリプトが含まれます。 Materials 磁気コンパスや Main GUI ディスプレイで 使用する画像ファイルなどが含まれます。 OVRImageEffects Oculus Rift ディスプレイ内で画像をワー プさせるのに必要なスクリプトおよびレ ンズ補正シェーダが含まれます。 Yuichi Ishii,2014/2/8
  80. 80. Oculus Riftとの連携1 Prefabs Oculus Rift を Unity シーンに繋げるため のプレハブが含まれています。 Resources いくつかの OVR スクリプトにより必要 とされ、インスタンス化されるプレハ ブおよび別のオブジェクト(例えば磁気 コンパスのオブジェクト)が含まれます。 Yuichi Ishii,2014/2/8
  81. 81. Oculus Riftとの連携1 Scripts Oculut Rift と Unity コンポーネントを結ぶ C# ファイルが含まれます。これら多くの スクリプトは Prefabs フォルダと連携しま す。 Shaders Oculus Rift用に調整されたGUI Shaderを含 みます。 Textures いくつかのスクリプトコンポーネントが 必要とする画像アセットが含まれます。 Yuichi Ishii,2014/2/8
  82. 82. Oculus Riftとの連携1 Projectビューの[Tuscany]-[Scenes]-[VRDemo Tuscany]シーンファイルをダブルクリックして開い てください。 保存の確認ダイアログが表示されますが、今回は特 に何もないので「Don't save」を押してください。 Yuichi Ishii,2014/2/8
  83. 83. Oculus Riftとの連携1 Yuichi Ishii,2014/2/8
  84. 84. Oculus Riftとの連携1 Sceneファイルを開いた直後の画面 Yuichi Ishii,2014/2/8
  85. 85. Oculus Riftとの連携1 Hierarchyビューにある「OVRPlayerController」を ダブルクリックして操作キャラの位置を確認し ましょう。 Yuichi Ishii,2014/2/8
  86. 86. Oculus Riftとの連携1 Toolbarの「Play」ボタンを押してください。 Oculus Riftが繋がっていれば樽状の2つのカメラ 画像が表示されます。 Oculus Riftが繋がっていなければ、単なる2つの カメラ画像が表示されます。 Yuichi Ishii,2014/2/8
  87. 87. Oculus Riftとの連携1 Oculus Rift接続時の画面 Yuichi Ishii,2014/2/8
  88. 88. Oculus Riftとの連携1 Oculus Rift未接続時の画面 Yuichi Ishii,2014/2/8
  89. 89. Oculus Riftとの連携1 Oculus Riftで立体視するためには、1280x800の解 像度に全画面で表示する必要があります。 Unityの現バージョン(4.3.4)ではEditor上の実行で フルスクリーンにすることはできません。 そこでアプリケーションにして確認してみます。 Yuichi Ishii,2014/2/8
  90. 90. Oculus Riftとの連携1 Unityの[File]-[Build Settings...:]を開いてビルドの 設定をします。 ビルド対象のシーンを追加するために、[Add Current]ボタンを押します。 間違って複数回押してしまったら、選択してDel キーを押して消してください。 Yuichi Ishii,2014/2/8
  91. 91. Oculus Riftとの連携1 余計なシーンは選択して [Del]キーで消します。 Yuichi Ishii,2014/2/8
  92. 92. Oculus Riftとの連携1 [Player Settings...]を押してResolution and Presentationを以下のように変更します。 Yuichi Ishii,2014/2/8
  93. 93. Oculus Riftとの連携1 一旦、ダイアログを閉じてQualityの設定を行い ます。 Oculus Riftでは画面の粗さを抑えるためにAnti Aliasingを「4x Multi Sampling」以上にすることが 推奨されています。 Yuichi Ishii,2014/2/8
  94. 94. Oculus Riftとの連携1 設定が終わりましたのでビルドおよび実行します。 Oculus Riftのパッケージをインストールすると UInityのメニューに[Oculus]が追加されます。 [Oculus]-[Build]メニューから行えます。 Yuichi Ishii,2014/2/8
  95. 95. 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
  96. 96. 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
  97. 97. Oculus Riftとの連携1 キーボードの制御3 キー名称 B 使用方法 トラッカーの向きをリセット スペース コンフィグ メニューをトグル , および . 予測(prediction) の値の減算/加算(ミリ秒単位) [ および ] 垂直方向の視界 (FOV) の減算/加算(角度単位) - および = 瞳孔間距離 (IPD) の減算/加算(ミリメートル単位) 引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html Yuichi Ishii,2014/2/8
  98. 98. 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
  99. 99. 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
  100. 100. Oculus Riftとの連携1 キーボードの制御6 キー名称 使用方法 F11 全画面表示およびウィンドウ表示のモード切替 Esc アプリケーションの終了 引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html Yuichi Ishii,2014/2/8
  101. 101. Oculus Riftとの連携1 マウスの制御 マウスを使用することでプレイヤーが左右に回転 します。 もしカーソルが有効化されていれば、マウスは カーソルが画面外になるまで、プレイヤーを回転 させずに、カーソルをトラックします。 引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html Yuichi Ishii,2014/2/8
  102. 102. Oculus Riftとの連携1 ゲームパッドの制御1 もしプラットフォームの互換コントローラがある 場合、プレイヤーコントローラの動作を制御でき ます。 左アナログスティックは WASD キーを使用するの と同様にプレイヤーを動作させることが出来ます。 右アナログスティックはプレイヤーを左右に Q および E キーを使用するかのように回転させます。 引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html Yuichi Ishii,2014/2/8
  103. 103. Oculus Riftとの連携1 ゲームパッドの制御2 左のトリガーにより、もっと速く移動するか、シーン 上を走ることができます。 スタートボタンにより画面選択をトグルできます。Dパッドの上下を押すことで、利用可能なシーンをスク ロールします。A ボタンを押すことで現在選択された シーンを開始します。 もしシーン選択がトグルされない場合、D-パッドの下 を押すことでトラッカーの向きをリセットします。 引用: http://gamesonytablet.blogspot.jp/2013/08/oculus-rift.html Yuichi Ishii,2014/2/8
  104. 104. Oculus Riftとの連携2 今度は1から作成してみましょう。 Unityを起動してください。 新規にプロジェクトを作成してください [File]-[New Project...]としてください Yuichi Ishii,2014/2/8
  105. 105. Oculus Riftとの連携2 Explorerで「OculusUnityIntegration.unitypackage」 をダブルクリックしてください。 (Demoを含まないパッケージ) しばらくするとUnity側でImport Package画面が出 るので、Importボタンを押してください。 インポートには時間は比較的短めです。 Yuichi Ishii,2014/2/8
  106. 106. Oculus Riftとの連携2 ステージとなる床を作成します。 [GameObject]-[Create Other]-[Plane]でPlaneオブ ジェクトを作成 Planeのままでは後で何のオブジェクトか分から なくなるので、名前を変更してください。 名前を変更するには、Hierarchyビューで 「Plane」を選択してマウスカーソルをちょっと ずらすか、F2キーを押すと変更可能になります。 Yuichi Ishii,2014/2/8
  107. 107. Oculus Riftとの連携2 ステージとなる床を作成します(続き)。 名前を「Plain」から「Floor」に変更します。 次に位置を調整します。位置はHierarchyビューで 「Floor」を選択し、Inspectorビューの 「Transform」コンポーネントの「Position」の X,Y,Zの値をすべて0にしてください。 Rotate, Scaleは変更不要です。 Yuichi Ishii,2014/2/8
  108. 108. Oculus Riftとの連携2 Yuichi Ishii,2014/2/8
  109. 109. Oculus Riftとの連携2 Oculus Rift対応済みのPrefabをSceneビューに追 加します。 [Oculus]-[Prefabs]-[OVRPlayerController]を選択 Yuichi Ishii,2014/2/8
  110. 110. Oculus Riftとの連携2 OVRPlayerControllerには(左右の)カメラが子オブ ジェクトとして追加されています。 したがってHierarchyにあるMain Cameraは不要な ので削除してください。 Yuichi Ishii,2014/2/8
  111. 111. Oculus Riftとの連携2 Playerの位置がFloorと同じため、そのままでは落 ちてしまいます(試しにPlayしてみてください) Yuichi Ishii,2014/2/8
  112. 112. Oculus Riftとの連携2 Playerを少し引き上げてください。 Hierarchyビューで「OVRPlayerController」をダブ ルクリックして、Sceneビューで緑色の矢印(Y軸) を選択して少し上に持ち上げてください。 InspectorビューのTransform : PositionのYが1以上 であれば問題ありません。 Yuichi Ishii,2014/2/8
  113. 113. Oculus Riftとの連携2 これで対応終了です。Playボタンを押して動作確 認をしてください。 ただし、このままでは暗く、何もオブジェクト がありません。あとはUnityの機能を使ってシー ンを構築していきます。 Yuichi Ishii,2014/2/8
  114. 114. 参考:Unity基本操作 明るくするには1 Directional Light 太陽のように、かなり遠くに配置され、シーン内の すべてを照らします。 配置方法 [GameObject] - [Create Other] - [Directional Light] 位置はどこでも構わない 詳しくは公式ドキュメント参照 Yuichi Ishii,2014/2/8
  115. 115. 参考:Unity基本操作 明るくするには2 Point Light 電球のように、ある場所から全方向を等しく照らし ます。 配置方法 [GameObject] - [Create Other] - [Point Light] 詳しくは公式ドキュメント参照 Yuichi Ishii,2014/2/8
  116. 116. 参考:Unity基本操作 明るくするには3 Spot Light 車のヘッドライトのように、1 点から 1 方向に光を 放ち、円錐内のオブジェクトのみを照らします。 配置方法 [GameObject] - [Create Other] - [Spot Light] 詳しくは公式ドキュメント参照 Yuichi Ishii,2014/2/8
  117. 117. 参考:Unity基本操作 色を付けるには Projectビューにある「Create」メニューを押して [Material(質感)]を選ぶ。 新しく作成したMaterialを選択し、InspectorでMain Colorをクリックするとカラーダイアログが表示される ので好きな色を選び閉じる。 色を設定したMaterialをSceneビューやHierarchyビュー のオブジェクトにドラッグ&ドロップすると色を変更 できる Yuichi Ishii,2014/2/8
  118. 118. 参考:Unity基本操作 テクスチャを貼りつけるには Projectビューに画像ファイルをドラッグ&ドロッ プする Projectビューの画像ファイルをSceneビューまた はHierarchyビューのオブジェクトにドラッグ&ド ロップする(正しくは、Materialを作成してMaterial のTextureを変更し、Materialをドラッグ&ドロッ プする) Yuichi Ishii,2014/2/8
  119. 119. 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
  120. 120. 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
  121. 121. Unity + Oculus Riftにまつわる 問題点と回避策 Yuichi Ishii,2014/2/8
  122. 122. 問題点と解決策 Unity+Oculus Rift開発メモ @k0rinさん Oculus Rift ドキュメント(非公式翻訳) gamesonytabletさん すべては紹介できないのでので、いくつかピッ クアップして紹介します。 Yuichi Ishii,2014/2/8
  123. 123. 問題点1 自動車や飛行機など、移動するオブジェクトに カメラを載せるには? OVRCameraController(プレハブ)をそのオブジェク トの子にして、OVRCameraControllerコンポーネ ントのFollow Orientationプロパティに親オブジェ クトをセットします。 OVRCameraControllerを子にしただけでは、追従 はしますが回転にはついていきません。 Yuichi Ishii,2014/2/8
  124. 124. 問題点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
  125. 125. 問題点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
  126. 126. 問題点1 設定例 Yuichi Ishii,2014/2/8
  127. 127. 問題点1 実例 11. Layoutを「2 by 3」に変更 12. Playボタンを押して実行 13. HierarchyのPlayerを選択 14. InspectorのPositionの値を変更&確認 • カメラが追随することを確認 15. InspectorのRotationの値を変更&確認 • カメラが追随することを確認 Yuichi Ishii,2014/2/8
  128. 128. 問題点2 3Dモデルのキャラの向きと頭の向きを同期させるには? 3DモデルのオブジェクトをOVRPlayerControllerの子オブ ジェクトのForwardDirectionの子オブジェクトとして登録 する。 さらに「問題点1」の設定を行い、OVRCameraController コンポーネントの「Tracker Rotates Y」のチェックをオン にする Yuichi Ishii,2014/2/8
  129. 129. 問題点2 実例 1. 2. 3. 先ほどの続きの場合はPlayerを削除。あるいは Sample/Scenes/Scene2を開く OVR/Prefabs/OVRPlayerControllerをHierarchyに追加 OVRPlayerControllerのPositionのYを1に設定 Yuichi Ishii,2014/2/8
  130. 130. 問題点2 実例 4. 5. 6. 7. Cubeを作成 CubeをOVRPlayerController/ForwardDirectionの子に設定 CubeのPositionを(0, 0, 0)に設定 CubeのBox Colliderを削除(右の歯車を選択し、「Remove Component」を実行 Yuichi Ishii,2014/2/8
  131. 131. 問題点2 設定例 Playを押して動作確認 さらに効果を確認するために、 CubeをForwardDirectionの子で はなく、OVRPlayerController の子に移動する Yuichi Ishii,2014/2/8
  132. 132. 問題点3 Skyboxがずれて表示されることがある? Unity標準のSkyboxはOculus Riftの立体視に対応していませ ん。3Dモデルとして設置する必要があります。Noraさん が公開されているSkyboxMesh.csを使うのが簡単です。こ ちらで詳しい使い方が紹介されています。 Oculus Rift で Skybox を破綻なく表示できる SkyboxMesh.cs を試してみた - 凹みTips Yuichi Ishii,2014/2/8
  133. 133. 問題点4 メッセージを常に正面に表示したい 3D Textかテクスチャを貼ったポリゴンを、OVRCameraController の子のCameraRightに接続します。CameraLeftの子にすると描画 順序の関係からブレが発生します。 テクスチャポリゴンは3D空間内で他のオブジェクトと干渉しな いよう、以下のような変更を加えたシェーダーを使います。 Tags { "Queue" = "Overlay" } // 最後に描画する ZTest Always // Zテストをせず描画する Yuichi Ishii,2014/2/8
  134. 134. 問題点5 GUIを追加したい OVRGUI.csがGUIのヘルパクラスです。 (OVR/Scripts/OVRGUI.cs) SPACEキーを押した時のメニュー表示は OVRMainMenu.csが行っており、OVRGUIを利用し ています。(OVR/Scripts/OVRMainMenu.cs) Yuichi Ishii,2014/2/8
  135. 135. 問題点5 GUIを追加したい(続き) OVRMainMenu.csと同様に行ってもよいのですが、 Oculus開発者スレッドでUnity標準のGUIクラスの ような感じで使うことができる「VRGUIパッケー ジ」が公開されています。 ダウンロードするにはOculus Riftの開発者名でロ グインしてください。 Yuichi Ishii,2014/2/8
  136. 136. 問題点5 GUIを追加したい(続き) NGUIを利用する方法があります。 How to use NGUI with the Oculus Rift Yuichi Ishii,2014/2/8
  137. 137. 問題点6 Mac OS XでXBOX360コントローラを使うには? Unity 4 Integration - OSX Gamepadでまとめられていま す。 以下に要点をまとめ書きます。 ここのドライバ(TATTIEBOGLE)をインストール これでとりあえず使えるようになります。 参考:ゲームパッドの動作テスト用のアプリ 「Joystick And Gamepad Tester」- 強火で進めで紹介 されているツールを使うとボタンの番号がわかります。 Yuichi Ishii,2014/2/8
  138. 138. 問題点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
  139. 139. 問題点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
  140. 140. 課題アプリの作成 ワークショップ形式 Yuichi Ishii,2014/2/8
  141. 141. 課題の説明 課題はOculus Rift対応のアプリケーションを作成 することです。 いくつかアプリケーション例を示しますので、 その中からお好きなものを選んで作成してくだ さい。 Yuichi Ishii,2014/2/8
  142. 142. 課題の説明 アプリケーション例1 Sample Assets(beta)をベースに作成する Sandboxフォルダにあるものをベースに改造する ステージ作成用の3Dモデルとキャラクターだけ使用する その他 Yuichi Ishii,2014/2/8
  143. 143. 課題の説明 アプリケーション例2 Asset Storeで公開されているステージ内をOculus Riftで動き 回る おすすめのパッケージを以下に示します。 【全部タダ!】無料で使える Unity Asset 50選 -3Dモデル編syyamalogさん Yuichi Ishii,2014/2/8
  144. 144. 課題の説明 アプリケーション例3 ミクさんと戯れたい! MMD4Mecanimを使うとMikuMikuDance用のモデルデータおよび モーションデータ(PMX/PMDファイル)をUnityにコンバートする ことができます。 詳しくは公式サイトやUnity仮面さんの動画をご覧ください。 参考:MMDのモデルデータ http://www6.atwiki.jp/vpvpwiki/pages/13.html Yuichi Ishii,2014/2/8
  145. 145. 課題の説明 アプリケーション例4 オリジナルゲームの作成 次のスライドにアイディアだけ書いておきます。 煮るなり焼くなり好きにしてください。 (資料作りに追われてゲームを作れなかったなんて言えな い・・・) Yuichi Ishii,2014/2/8
  146. 146. オリジナルゲーム案 コンセプト・イメージ Missile CommandとYs1のダルク・ファクト戦を足して2で割った感じ 目的 あなたは超高出力レーザー砲になり、降りそそぐ隕石をレーザー砲で 撃ち落とします。 レーザーが隕石に当たると3秒間爆風が広がります。これに他の隕石 が巻き込まれると高得点になります。 隕石が床に当たると床が消えます。消えた床には移動できません。自 分が立っている床が消えるとゲームオーバーです。 Yuichi Ishii,2014/2/8
  147. 147. オリジナルゲーム案 移動方法(下記のいずれか) なし(頭の向きのみ。照準があったら自動的にレーザーを発射) 前後左右。メインキャラクタの方向は正面のみ 前後+左右旋回。メインキャラの向きも変更 勝利条件 隕石の衝突を避け一定数以上の隕石を撃ち落したら終了 プレイヤーは得点を競い合う 得点例 レーザーによる直接破壊:10点 爆風による破壊:100点、200点、400点、・・・、100×2個数-1 Yuichi Ishii,2014/2/8
  148. 148. 発表会 Yuichi Ishii,2014/2/8
  149. 149. お疲れ様でした! スタッフのみなさんもお疲れ様でした! Yuichi Ishii,2014/2/8 149
  150. 150. 参考: Oculus Riftのスクリプト Yuichi Ishii,2014/2/8
  151. 151. Oculus Riftのスクリプト この資料は以下の情報を元に独自に書いていま す。 Oculus Rift ドキュメント(非公式翻訳) Oculus Unity Integration Guide v0.2.5c - Updated: December 3, 2013 誤字脱字、問題点がありましたら私にご連絡く ださい。 Yuichi Ishii,2014/2/8
  152. 152. 主に使用するスクリプト OVR/Scriptsに格納されている。 MonoBehaviourからの派生クラス OVRComponent OVRCamera OVRCameraController OVRPlayerController OVRDevice OVRGamepadController OVRMainMenu Yuichi Ishii,2014/2/8
  153. 153. 主に使用するスクリプト ヘルパー・クラス OVRCrosshair OVRGUI OVRMagCalibration OVRMessenger OVRPresetManager OVRUtils Yuichi Ishii,2014/2/8
  154. 154. MonoBehaviourからの 派生クラス Yuichi Ishii,2014/2/8
  155. 155. OVRComponent OVRクラスのベースクラスとなります。 Awake(), Start(), Update(), LateUpdate()メソッドに virtualキーワードがついています。 Yuichi Ishii,2014/2/8
  156. 156. OVRCamera Unity カメラクラスにレンダリングするために使 用されます。 このコンポーネントは Rift トラッカーを読み取 り、カメラ位置および回転をします。 Yuichi Ishii,2014/2/8
  157. 157. OVRCameraController 低レベルのカメラ操作を容易にするコンポーネ ントです。 Unity およびカメラのメインのインタフェースと なります。 Oculus Riftによるカメラ制御はこのコンポーネン トを通じて行うようにしてください。 Yuichi Ishii,2014/2/8
  158. 158. OVRCameraController OVRCameraControllerのプロパティ一覧 Yuichi Ishii,2014/2/8
  159. 159. OVRCameraController Vertical FOV このフィールドには、カメラの視 野(FOV)の垂直方向のフィールド を設定します(単位は度数)。 FOVはSDKで最適値を計算します が、 必要に応じてこの値を上書 きすることができます。 FOVについては「よく分かるかも しれないOculus Riftについて(2) Oculus Rift向けのポストプロセス の部分について」を参照のこと。 Yuichi Ishii,2014/2/8
  160. 160. OVRCameraController IPD 瞳孔間距離(Inter-Pupillary Distance)をメール単位で指定し ます。 デフォルトでは一般的な平均値 が設定されています。 必要に応じて上書きすることが できます。 Yuichi Ishii,2014/2/8
  161. 161. OVRCameraController Camera Root Position アタッチされているオブジェク トに対する相対位置を設定しま す。 OVRPlayerController(プレハブ) では、Capsule Colliderのデフォ ルトの高さ2(m)の中心点である 1.0(m)にセットされています。 Yuichi Ishii,2014/2/8
  162. 162. OVRCameraController Neck Position アタッチされているオブジェク トに対する首の位置を指定しま す。 Yuichi Ishii,2014/2/8
  163. 163. OVRCameraController Eye Center Position このフィールドは頭部のモデリン グにおいて目の中心が配置される 場所をセットするのに使用します。 左右の目を分離するための瞳孔間 距離(IPD)は自動的にセットされ ますが、この値は Set/GetIPD 関 数を通してセットすることも出来 ます。 Yuichi Ishii,2014/2/8
  164. 164. 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
  165. 165. OVRCameraController Follow Orientation これがセットされたとき、カメラは常に コンポーネントのrotationを追跡して、 ヘッドトラッキングはこれに対するオフ セットとなります。 車またはボディなどのオブジェクトにカ メラを載せるときに便利です。 Yuichi Ishii,2014/2/8
  166. 166. 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
  167. 167. OVRCameraController Enable Orientation OFFにするとトラッカーの方向に応じた カメラの方向の更新を停止します。 Yuichi Ishii,2014/2/8
  168. 168. OVRCameraController Prediction On オンのとき、トラッカーの予測 (prediction)補正がセットされます。 予測(prediction)時間の大きさは OVRCameraController 配下にある OVRDeviceコンポーネントを通し て調整できます。 Yuichi Ishii,2014/2/8
  169. 169. OVRCameraController Call in Pre-Render オンのとき、OVRCamera.csスクリプ トの中でOnPreRender関数でレンダリ ングが行われます。 トラッカーをレンダリングに近づける という効果があります(すなわち結果 的に実際の待ち時間を低下させる) 。 しかし、この設定による発生する問題 については「既知の問題」を参照して 下さい。 Yuichi Ishii,2014/2/8
  170. 170. OVRCameraController Wire-Frame Mode セットするとシーンのレンダリン グがワイヤフレームとなります。 Yuichi Ishii,2014/2/8
  171. 171. OVRCameraController Lens Correction セットすると、レンズ補正のパス が有効となります。 Yuichi Ishii,2014/2/8
  172. 172. OVRCameraController Chromatic セットすると、色収差(Chromatic Aberration)を修正するシェーダが使 用されます。 色収差はレンズにより引き起こさ れ、画像の色が放射状に広がり、 レンダリングされた画像の特定の 場所で縞模様の色(Color Fringe)が 発生する原因となります。 Yuichi Ishii,2014/2/8
  173. 173. OVRCameraController Background Color OVRCameraController プレハブにアタッチされた両方 のカメラの背景色を設定します。 Near Clip Plane 両方のカメラのニアクリップ平面(カメラの描画を行 う、カメラから最も近い点)の値をセットします。 Far Clip Plane 両方のカメラのファークリップ平面(カメラの描画を 行う、カメラから最も遠い点)の値をセットします。 Yuichi Ishii,2014/2/8
  174. 174. OVRPlayerController OVRPlayerController によりOculus Riftを使用した基本的な First Person Controllerを実装します。このスクリプトは OVRCameraController がアタッチされた OVRPlayerController プレハブにアタッチされています。 OVRPlayerControllerスクリプトは、Character Controllerを自動 的に追加します。したがって、Sceneに適切なCollisionを設定 することで相互作用します。 OVRPlayerControllerプレハブはForwardDirectionと呼ばれる空 のゲームオブジェクトがアタッチされています。このゲーム のオブジェクトは、Motor Controlの方向に基づいた行列が含 まれています。このゲームオブジェクトは主にプレイヤーの モデルを格納します。 Yuichi Ishii,2014/2/8
  175. 175. OVRPlayerController OVRPlayerControllerのプロパティ一覧 Yuichi Ishii,2014/2/8
  176. 176. OVRDevice OVRDevice は Oculus Rift ハードウェアに対する基本 的なインタフェースです。全てのエクスポートされ た C++ 関数のラッパー関数に加えて、格納された Oculus 変数を使用してカメラのビヘイビアをセット アップするヘルパー関数を含んでいます。 このコンポーネントはOVRCameraControllerプレハブ に追加されてます。任意のゲームオブジェクトにア タッチできます。しかし宣言は一回のみとすべきで あり、理由として特定のOculus Riftの値をUnityインス ペクタで調整できるパブリック変数が含まれるため です。 Yuichi Ishii,2014/2/8
  177. 177. OVRDevice OVRDeviceのプロパティ一覧 Yuichi Ishii,2014/2/8
  178. 178. OVRDevice Prediction Time このフィールドにより、トラッカーがプレイヤーの頭部の位 置がある場所を予想する時間をどれぐらい先にするかを調整 できます。入力からビデオ遅延(Latency)をカバーするのに有 力です。デフォルトの値は50ミリ秒ですが、適切に調整でき ます。 Yuichi Ishii,2014/2/8
  179. 179. OVRDevice Reset Tracker On Load この値のデフォルトはOnです。 Onの時、Application.LoadLevelでシーンを移動するとRiftの向きがリ セットされます。向きをキープしたい場合には、このパラメータを Offにします。 プログラムで任意のタイミングでリセットするには OVRDevice.ResetOrientation(0); // デバイス番号 と記述します。 Yuichi Ishii,2014/2/8
  180. 180. OVRGamepadController OVRGamepadController はゲームパッドコント ローラに対するインタフェースクラスです。 Windows マシン上で、ゲームパッドはXInput互換 である必要があります。 現在ネイティブXInput互換のゲームパッドは MacOSでサポートされていません。ゲームパッ ドの入力には従前のUnity Input の手法を使用し てください。 Yuichi Ishii,2014/2/8
  181. 181. OVRMainMenu OVRMainMenu は異なるシーンのロードを制御するために 使用します。さらにユーザが様々なOculus Rift 設定を修正 できるメニューをレンダリングして、これらの設定を後で 再度呼び出しできるように格納します。 アクセスしたいシーンを幾つも加えることが出来ます。 現在OVRMainMenu は利便性を考えてOVRPlayerController プレハブにアタッチされてますが、適切に取り外して一般 的なUnity ロジックで使用されている別のゲームオブジェ クトに追加することもできます。 Yuichi Ishii,2014/2/8
  182. 182. ヘルパー・クラス Yuichi Ishii,2014/2/8
  183. 183. OVRCrosshair OVRCrosshair ステレオスコープを通した照準を 追加するコンポーネントです。 照準は現在ビューがレンダリングされた後に描 画されるため、歪み補正は全くありません。 Yuichi Ishii,2014/2/8
  184. 184. OVRGUI OVRGUI は2D または 3D で基本的なテキストの レンダリングを隠蔽するヘルパー・クラスです。 コードの2Dバージョンでは廃止予定であり、3D 要素のレンダリングに移行予定です(現在 OVRMainMenuで使用されます。) VRGUIパッケージを用いるとより使いやすくなり ます。 Yuichi Ishii,2014/2/8
  185. 185. OVRMagCalibration OVRMagCalibrationは、ヨー・ドリフト(Yaw-drif) 補正のために磁気センサーを校正するヘル パー・クラスです。 Yuichi Ishii,2014/2/8
  186. 186. OVRMessenger OVRMessengerは直接クラス間で高度なメッセー ジのためのクラスです。 これはUnity Community WikiのGeneral Conceptsに ある"Advanced CSharp Messenger"のコピーです。 訳注:Scripts/Generalの「Messaging Systems」 の中にありました。 Yuichi Ishii,2014/2/8
  187. 187. OVRPresetManager OVRPresetManagerは、UnityのPlayerPrefsクラス を使用して変数の値を保存、再読み込みを可能 にするためのヘルパークラスです。 現在OVRMainMenuコンポーネントによって使用 されています。 Yuichi Ishii,2014/2/8
  188. 188. OVRUtils OVRUtilsは、再利用可能なstatic関数の集まりで す。 Yuichi Ishii,2014/2/8
  189. 189. 本資料に関する問い合わせ 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

×