初めてのVR/AR開発をUnityで!
ユニティ・テクノロジーズ・ジャパン合同会社
エンタープライズコンサルティング
ディベロッパーリレーションマネージャー/エンジニア
黒河優介
本日のアジェンダ
• Unityでの基本的な考え方について
• Unityでのアプリケーション作成について
• 作成したアプリケーションのVR/AR対応
• 制作のためのTips情報
Unityでの基本的な考え方
• Unityで作成されたアプリケーションは以下の3つの
要素で構築される
• Scene 空間
• GameObject 物
• Component 振る舞い
Scene
空間
GameObject
物
Component
振る舞い
Sceneについて
• 自宅の部屋/学校の教室/屋外の街並みなど、一つの
空間毎に一つのSceneとして構築していきます
• Sceneの中には複数のGameObjectが配置されてい
ます
Scene一つで一つの空間を構築します
Scene中には複数のGameObjectが
配置されています
ドア
床
ベット
カメラ
テレビ
照明器具
棚
Scene中には複数のGameObjectが
配置されています
実際のUnityでの画面です。
右側のリストがシーン中
にあるオブジェクト一覧
です
GameObjectとComponent について
• GameObject単体では「Scene中にある何か」でし
かありません
• 「画面中に物体として映る」
「カメラとして映像を映す」というのは
Componentの振る舞いによって起こります
GameObjectとComponent について
何もComponentがついて
いないオブジェクトは、
Scene中に存在する何か
でしかありません
GameObjectとComponent について
「画面中に物体として映
る」というComponentを
つける事で画面に表示さ
れました
GameObjectとComponent について
Componentが持っている
データを書き換える事で
形状が変わりました
Component について
基本的な機能についてはUnity側で提供していますが、
アプリケーション独自の振る舞い等については、ア
プリケーション開発者が、C#スクリプトで独自に追
加することが出来るようになっています。
例:「マウスがクリックされたら、消滅する」等
Scene
GameObject GameObject GameObject
Component
物理挙動をする
音が出る
絵が切り替わる
自宅の部屋の中
学校
屋外の街並み
Component
Component
Component
Component
Component
テレビ
Scene
GameObject GameObject GameObject
Component
物理挙動をする
音が出る
絵が切り替わる
自宅の部屋の中
学校
屋外の街並み
Component
Component
Component
Component
Component
テレビ
Unityの基本的な考え
空間(Scene)を作り
物(GameObject)を配置し
振る舞い(Component)を与える
Unityでのアプリケーション作成について
Projectを作成
ProjectにAssetをImport
UnityEditor上でScene等のデータ構築
C#スクリプトで振る舞いを実装
完成!
Projectを作成
基本的に 1つのProjectで1つのアプリ
ケーションとなります。
Project内には、様々な素材データや
C#スクリプト、シーンを入れておく
ことが出来ます
ProjectにAssetをImport
Unity外で作成した3Dモデルデータ・
音声データ・画像データ(Texture)等
の素材となるAssetをProjectへ入れる
作業をImportと言います
Unityで扱える形式について
• Texture(画像データ)
• .bmp/.png/.tif/.tga/.jpg/.psd 等の一般的なフォーマットはサポート
• 音声データ
• .mp3/.ogg/.wav/.aiff/.aif/.mod/.it/.s3m/.xm
• 3D Modelデータ
• .fbx/.dae (Collada)/.3DS/.dxf/.obj/.skp
CADデータについて
• Unityの標準機能ではCADデータを扱うことが出来
ません
• ただ拡張機能として 「Unity CAD Importer」を提供
しており、この機能を使うことでCADデータも扱う
ことが出来ます。
• 詳しくは http://cadimporter.unity3d.jp/
Unity AssetStoreでデータを利用
Unity Technologies およびコミュニティのメン
バーにより作成されたバラエティに富んだデータ
を有償もしくは無償で入手することが出来ます。
多くのアセットは商用での利用も可能ですが、詳
しくはそれぞれのライセンスを確認してください。
Unity AssetStoreでデータを利用
無料のアセット「Nature Starter Kit 2」より
既に構築済みのデータを
利用することで、開発時
間の短縮につながります。
プロトタイプ開発等では
非常に有効です。
Unity起動画面
SceneView
SceneView:
シーン上に配置してあるものを編集・
確認する場所です
SceneView
GameView:
実際のゲーム画面です。
Cameraオブジェクトから映された画面
を表示します
再生停止について
画面中央上にある再生ボタンを押すと、
アプリケーションが進行状態となり、
実行結果がGameViewで確認が出来ま
す。
HierarchyView
HierarchyView:
シーン上に配置してあるものを
リスト化して出されています
ProjectView
ProjectView:
プロジェクトにあるアセットを
管理する部分です
InspectorView
InspectorView:
現在選択中のもののパラメーター等を
編集する場所です
Scene作成過程のデモ
これを繰り返していって
Sceneを構築していきます
作成したアプリケーションを書き出す
• Buildをすることで、配布用のアプリケーションを
作成できます
• windowsのexeファイルやAndroidのapkファイル等
• Unityでは数多くのプラットフォームをサポートし
ています
• Windows/MacのPCに限らず、iPhone/Androidなどのス
マートフォン、家庭用ゲーム機にも対応しています
Build方法
左側が対象となるプラットフォームの選択。
対象のプラットフォームにSwitchしてから、
右下のBuildボタンで対象プラットフォーム向
けのアプリケーション書き出しが出来ます
VR対応のプログラムにする場合
設定画面で 「Virtual Reality Supported」
でチェックボックスをONにするだけです。
対応するVRの種類を選択
対応するVRのSDKや優先度も
設定できます
両目の立体視にも自動で対応
左右の目で位置をずらし
た画面を描画することで
立体視に対応します
更に現実世界の頭の動きと同じ動きを
Scene内のCameraが勝手にしてくれます
…と夢のある話をしてきましたが。。。
現実問題として…
既存に作ったものを別プラットフォームへ
の移植やVR対応はボタン一発だけでは終わ
りません
立ちはばかる壁
対象プラットフォームが決まっているなら、
実機でのテストを定期的に行ってください
AR / MR対応について
• AR
• 標準ではないので、拡張プラグインをプロジェクトに組み
込む形になります
• https://unity3d.com/solutions/mobile-ar
• MRについて
• Microsoft様から出ている Toolkitを利用して作成する形にな
ります
• https://github.com/Microsoft/MixedRealityToolkit-Unity
AR / MRでも、デバイスの動きにあわせて
Cameraが動きます
こんな形でUnityでアプリケーションを作成
する流れを紹介してきました。
絵が出るところまでは早くたどり着けるの
で、ぜひ Unityを触ってみてください。
制作のためのTips
• Prefabについて
• MaterialとMeshについて
• LightMapのBakeについて
Prefabについて
• GameObjectの雛形のような形で Project内
にPrefabデータを作成できます
• 雛形となる Prefabだけ変更すれば、シーン
に配置されたオブジェクトを一括で変更す
ることが出来ます
Prefabについて
とりあえず、椅子のデータがまだ納品されてい
ないので、椅子のつもりで立方体を配置します
Prefabについて
椅子のデータが来たのでPrefabを更新するだけで、
シーン中の配置したGameObjectも椅子の見た目
へと一括で変換できます。
この機能により、実際のデータがある
つもりで作業が出来ます。
MaterialとMeshについて
• MeshとMaterial で一つのアウトプットを作ります
• Meshは形状等の頂点データを保持します
• Materialでは質感を定義します
Mesh Material 表示
MaterialとMeshについて
Material違いで見た目が変わります
Material とは…
• MaterialはShaderとShader側で定義されたパラメーターのデータを持
ちます
MaterialShader データ
作りたい絵作りのために
Materialの作りこみは大事です。
LightMapのBakeについて
• ライティング計算をキチンと行おうとすると、非常に重くリアルタイム
での表示が出来なくなってしまいます。
• 光が直接照らす直接光以外にも、物体に反射して生まれる間接光はリ
アルタイムでは計算しきれません
• 事前に計算を行い、その結果を焼き付けておくことでリアルタイムでも
きれいな絵が出るようにする方法です
LightMapのBakeについて
Before After
LightMapのBakeについて
赤・緑 それぞれの壁からの間接光を受けているため、
左側は緑色を帯び、右側は赤色を帯びています。
LightMapのBakeにより間接光をいれて、
より綺麗に
まとめ
• Unityは Scene – GameObject – Componentで構成
• 「ProjectにAssetをImport・シーンの構築・C#スクリプトで新た
な振る舞いの作成」を繰り返してアプリケーションを作成
• 切り替え 一発で別のプラットフォームへ対応
• Prefab便利
• MaterialやLightingをキチンと設定してより綺麗な絵に
ご清聴ありがとうございました

初めてのVR/AR開発をUnityで