776 Views
March 01, 18
スライド概要
2018年2月28日にパナソニックシステムデザイン株式会社主催にて、Panasonicグループ社内向けに行われたセミナー「Unity道場XRスペシャル in Panasonic」の講演資料です。
Unityを用いたVR/ARの開発をデモを交えながら作成過程を説明していきます。Unityとは、どのようなソフトウェアなのか?どうやってVR/ARコンテンツを作成していくのかを解説していきます。
こんな人におすすめ
・Unityを知らない方
・Unityを触り始めた方
得られる知見
・Unityとは一体何なのか?
・Unityを用いたVR開発の流れについて
リアルタイム3Dコンテンツを制作・運用するための世界的にリードするプラットフォームである「Unity」の日本国内における販売、サポート、コミュニティ活動、研究開発、教育支援を行っています。ゲーム開発者からアーティスト、建築家、自動車デザイナー、映画製作者など、さまざまなクリエイターがUnityを使い想像力を発揮しています。
初めての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#スクリプトで独自に追 加することが出来るようになっています。 例:「マウスがクリックされたら、消滅する」等
Component 物理挙動をする 音が出る 絵が切り替わる Component テレビ GameObject Scene Component Component Component Component GameObject GameObject 自宅の部屋の中 学校 屋外の街並み
Component 物理挙動をする 音が出る 絵が切り替わる Unityの基本的な考え 空間(Scene)を作り 物(GameObject)を配置し 振る舞い(Component)を与える Component テレビ GameObject Scene Component Component Component Component GameObject GameObject 自宅の部屋の中 学校 屋外の街並み
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では質感を定義します
MaterialとMeshについて Mesh Material 表示
Material違いで見た目が変わります
Material とは… • MaterialはShaderとShader側で定義されたパラメーターのデータを持 ちます Shader データ Material
作りたい絵作りのために Materialの作りこみは大事です。
LightMapのBakeについて • ライティング計算をキチンと行おうとすると、非常に重くリアルタイム での表示が出来なくなってしまいます。 • 光が直接照らす直接光以外にも、物体に反射して生まれる間接光はリ アルタイムでは計算しきれません • 事前に計算を行い、その結果を焼き付けておくことでリアルタイムでも きれいな絵が出るようにする方法です
LightMapのBakeについて Before After
LightMapのBakeについて 赤・緑 それぞれの壁からの間接光を受けているため、 左側は緑色を帯び、右側は赤色を帯びています。
LightMapのBakeにより間接光をいれて、 より綺麗に
まとめ • Unityは Scene – GameObject – Componentで構成 • 「ProjectにAssetをImport・シーンの構築・C#スクリプトで新た な振る舞いの作成」を繰り返してアプリケーションを作成 • 切り替え 一発で別のプラットフォームへ対応 • Prefab便利 • MaterialやLightingをキチンと設定してより綺麗な絵に
ご清聴ありがとうございました