Unityを使ったVRアプリ作成入門

589 Views

November 22, 15

スライド概要

日本Androidの会 ABCD2015ハンズオン
2015.11.22

profile-image

とりあえず登録。 数年後、Slideshareからデータ移行。 ただし、一部ファイルは移行できず。無念。

シェア

埋め込む »CMSなどでJSが使えない場合

各ページのテキスト
1.

Unityを使ったVRアプリ作成入門 2015.11.22 kinneko@gmail.com 日本Androidの会 ABCD2015 ハンズオン

2.

ハンズオン形式で行います ビルの林立する街で、定位置でピョンピョン飛び跳ねる アプリを3DVR対応にします。

3.

こんな感じ 360度動画:https://youtu.be/zizYL3QrxG0

4.

注意点など ・ターゲット端末はAndroidです。iOSでも同様に使えると思います。 ・Cardboardやタオバイザー、FakeRiftなどの3DVRゴーグルを使って 体験します。 ・3DVRコンテンツ作成時の注意点については、ここでは触れません。 ・Unityは多少使ったことがある人を前提にしています。 ・使用するアセットの条件で、Unity5.0.1以降が対象です。5.2.2f1推奨 ・Androidアプリケーションがビルドできる設定は事前に行っておいて ください。 ・作業に必要なアセットは会場にてUSBメモリで配布します。

5.

事前準備の参考リンク ・Unityのインストール Unity5 for windows インストール https://akira-watson.com/unity/install-windows.html Unity5!インストールしてから起動までの流れ!~アカウント登録~ http://hiromart.com/blog/from̲installation̲to̲start/ ・Android SDKのインストール Android Studio セットアップガイド https://keiji.github.io/the-androidstudio-book/archives/book.pdf

6.

本日の内容 ・アセットを使って、簡単なプログラムを作成 Unityの基本については理解済みという前提で、さらっと流して説明します。 3DVR化する前のプログラムは、会場で配布しますので解説だけです。 ・作成したプログラムを3DVR化する:Dive編 Durovis Dive SDKを使って、作成したプログラムを3DVR化します。 ・作成したプログラムを3DVR化する:Cardboard編 Cardboard SDK for Unityで、作成したプログラムを3DVR化します。 ・カスタマイズ・タイム サンプルのカスタマイズや、自作アプリの3DVR化を行ってください。

7.

・アセットを使って、簡単なプログラムを作成 ・作成したプログラムを3DVR化する:Dive編 ・作成したプログラムを3DVR化する:Cardboard編 ・カスタマイズ・タイム

8.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他 ・景色があると相対的にジャンプ感が出るので、 ビル街を自動生成するアセットを使う ・自動生成なので、毎回違った景色が楽しめる。 (大差ないけど...)

9.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他 ・TekitouCityGenerator / 適当な街並みジェネレータ Unity5で適当な街並みを自動で作るサンプル http://many.chu.jp/Unity/TekitouCityGenerator/ https://github.com/Maruchu/TekitouCityGenerator ・ライセンス TekitouCityGenerator の著作権は作者の Maruchu が所持しますが、 ソースやプレハブの改造、アセットを使用して作ったゲームや映像、書籍、イラスト、 unitypackage、zip などの配布、頒布、販売などは自由に行ってもらって構いません。 このアセットを使用して作成されたデータや印刷物などに アセットの名前やMaruchuの著作権表記、配布しているURLなどは書かなくても OKです。 ・アセットをダウンロードする

10.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他 ・Unityで新規プロジェクトを作成 TekitouCityGenerator̲ForUnity5.0.1. unitypackageをロードする ・Sample1を読み込む (2夕方,3夜も試す) ・動かしてみる -> 動きが早い(=酔う)のを確認

11.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他

12.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他

13.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他

14.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他

15.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他

16.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他

17.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他

18.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他 ・使用したアセットのサンプルでは、街なかの 空中をぐるぐる高速で回るので、3DVRアプリ にすると酔います。 ・回転処理しているスクリプトを無効にして、 回転を止めます。 ・設定されたAddRotationスクリプトを無効に カメラを開いてスクリプトのチェックを外す ・動かしてみる -> 回らなくなったが何も起きない

19.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他

20.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他

21.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他 ・カメラにRidgebodyコンポーネントを設定し、 重力をオンにする ・カメラにスフィアコライダーを設定する ・マテリアルを作成して、Bouncenessを1に 設定する ・スフィアコライダーにマテリアルを設定する ・動かしてみる -> 床を突き破って無限に落ちる (床にコライダが設定されていない)

22.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他

23.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他

24.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他

25.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他

26.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他

27.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他 ・Cubeを作成して薄くして床に貼る Scale y0.1に。Position y-15にしておく ・Boxコライダーに マテリアルを設定する(バウンス) ・動かしてみる -> まだ早くて酔いそう

28.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他

29.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他

30.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他 ・重力加速度を変更する ・Edit -> Project Settings -> Physics Gravityで値を変更 デフォルト:x: 0 y: -9.81 z:0 水星 3.70、金星 8.87、地球 9.80、 火星 3.71、木星 24.79、土星 10.44、 天王星 8.87、海王星 11.15、冥王星 0.58、 月 1.62 m/s^2 ・変更して動かしてみる -> 月面くらいがいい感じ

31.

アセットを使って、 簡単なプログラムを作成 ・街を読み込む ・回転を止める ・カメラに重力を 作用させる ・床でバウンスさせる ・重力を月面にする ・その他

32.

・アセットを使って、簡単なプログラムを作成 ・作成したプログラムを3DVR化する:Dive編 ・作成したプログラムを3DVR化する:Cardboard編 ・カスタマイズ・タイム

33.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド ・老舗VRヘッドセットメーカー Drovis社が提供しているUnity用のSDK https://www.durovis.com/ ・ライセンス文書 ・3Dカメラ・プレハブ ・マウス操作スクリプト ・加速度センサPlugin ・ロゴ画面 ・Cardboardより早く提供されていたので 多くのアプリケーションで使用されている

34.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド ・https://www.durovis.com/sdk.html ・Dive̲Plugin̲2.1.5.unitypackageをダウンロード ・サンプルにアセットをロードする

35.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド

36.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド ・3Dカメラを組み込む ・単眼カメラを無効にする ・カメラの位置を高く設定する Position y+15 ・先ほどのアセットで使った リッジボディとスフィアコライダを設定する ・実行してみる -> ・Mouse Lookスクリプトが 有効なのでカメラをマウスで操作できる ・センサがないのでGYRO警告が出る

37.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド

38.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド

39.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド

40.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド

41.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド

42.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド

43.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド

44.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド ・Cubeの位置をy-15からy0に変更 ・重力の設定を月面相当に

45.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド

46.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド

47.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド ・ライセンスで、ロゴ表示が義務付けられている ・デフォルトのロゴはSDKに含まれている 3Dカメラを設定すると3D Splashも可能 ・Unity Free版のロゴも出るので ロゴが2つ出るのは、起動時に煩わしい ・Unityロゴがステレオ対応じゃないのが残念 ・今回は再配布しないので、ロゴ表示はパスする

48.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド

49.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド

50.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド ・Android SDKのパスを設定 ・アプリケーション名の設定 ・ビルド後、実機に転送して実行

51.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド

52.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド

53.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド

54.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド

55.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド

56.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド Unity5系から、プラグインの動作プラットホームの指定が必要に

57.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド ARM EABIでの設定を行う

58.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド Intel x86での設定を行う

59.

作成したプログラムを 3DVR化する:Dive編 ・Dive SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・その他の設定 ・Diveロゴを表示する ・apkのビルド

60.

・アセットを使って、簡単なプログラムを作成 ・作成したプログラムを3DVR化する:Dive編 ・作成したプログラムを3DVR化する:Cardboard編 ・カスタマイズ・タイム

61.

作成したプログラムを 3DVR化する: Cardboard編 ・Cardboard SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・apkのビルド ・GoogleがCardboard向けに提供している SDKのうち、Unity用の部分 (Nativeもあり) Google Cardboard SDK for Unity https://developers.google.com/cardboard/unity/ ・コードはGitHubで公開されている https://github.com/googlesamples/cardboard-unity/ ・リリースノート https://developers.google.com/cardboard/unity/release-notes

62.

作成したプログラムを 3DVR化する: Cardboard編 ・Cardboard SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・apkのビルド ・SDKのダウンロード https://github.com/googlesamples/cardboard-unity/ blob/master/CardboardSDKForUnity.unitypackage? raw=true ・サンプルを開き、SDKを読み込む

63.

作成したプログラムを 3DVR化する: Cardboard編 ・Cardboard SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・apkのビルド

64.

作成したプログラムを 3DVR化する: Cardboard編 ・Cardboard SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・apkのビルド ・機能はプレハブにまとめられているので、 メインカメラにプレハブを追加するだけ ・CardboardHeadプレハブをカメラにドラッグ ・専用のシェーダーが使われ、樽状に変形 ・Unity上の実行では樽変形されない

65.

作成したプログラムを 3DVR化する: Cardboard編 ・Cardboard SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・apkのビルド

66.

作成したプログラムを 3DVR化する: Cardboard編 ・Cardboard SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・apkのビルド

67.

作成したプログラムを 3DVR化する: Cardboard編 ・Cardboard SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・apkのビルド

68.

作成したプログラムを 3DVR化する: Cardboard編 ・Cardboard SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・apkのビルド

69.

作成したプログラムを 3DVR化する: Cardboard編 ・Cardboard SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・apkのビルド ・Android SDKのパスを設定 ・File->Build Settingsでターゲットを切り替える ・シーンの追加とテクスチャ圧縮の設定 ・画面を横方向に固定、アプリ名を入れる ・ビルドして、実機にて動作確認

70.

作成したプログラムを 3DVR化する: Cardboard編 ・Cardboard SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・apkのビルド

71.

作成したプログラムを 3DVR化する: Cardboard編 ・Cardboard SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・apkのビルド

72.

作成したプログラムを 3DVR化する: Cardboard編 ・Cardboard SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・apkのビルド

73.

作成したプログラムを 3DVR化する: Cardboard編 ・Cardboard SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・apkのビルド

74.

作成したプログラムを 3DVR化する: Cardboard編 ・Cardboard SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・apkのビルド

75.

作成したプログラムを 3DVR化する: Cardboard編 ・Cardboard SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・apkのビルド

76.

作成したプログラムを 3DVR化する: Cardboard編 ・Cardboard SDKとは ・SDKのダウンロード ・3Dカメラを設定 ・apkのビルド

77.

・アセットを使って、簡単なプログラムを作成 ・作成したプログラムを3DVR化する:Dive編 ・作成したプログラムを3DVR化する:Cardboard編 ・カスタマイズ・タイム

78.

カスタマイズ・タイム カスタマイズ・タイム ・取り組んできたサンプルの ・他のサンプルも試してみる (夕暮れ、夜) カスタマイズや、お手持ちの ・ビルのロゴをABCDのアイコンと差し替え 自作アプリの3DVR化を行っ てみてください。 ・ここからはフリータイムに なりますので、お時間まで自 由にプログラムを行ってくだ さい。 ・重力はスクリプトでも変更可能 Physics.gravity = new Vector3(0f, 0f, -9.81f); 範囲を決めて、ランダムに変更してみる。 ・加速度センサの値によってジャンプ開始と、 最初の加速度を変化させる ・カメラ位置の建物との衝突判定 ・初回バウンドでカメラに回転がかかるのを抑制