Part3 unityを使ったvrアプリ作成入門

66
Unityを使ったVRアプリ作成入門 2015.5.9 [email protected] 日本Androidの会浜松支部 第49回ミーティング 「スマートフォンで3DVRを楽しもう!」Part3

Transcript of Part3 unityを使ったvrアプリ作成入門

Unityを使ったVRアプリ作成入門2015.5.9 [email protected]日本Androidの会浜松支部 第49回ミーティング「スマートフォンで3DVRを楽しもう!」Part3

Part3 はハンズオン形式で行います

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

こんな感じ

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

注意点など

・アセットを使って、簡単なプログラムを作成 Unityの基本については理解済みという前提で、さらっと流して説明します。 3DVR化する前のプログラムは、会場で配布しますので解説だけです。

・作成したプログラムを3DVR化する:Dive編 Durovis Dive SDKを使って、作成したプログラムを3DVR化します。

・作成したプログラムを3DVR化する:Cardboard編 Cardboard SDK for Unityで、作成したプログラムを3DVR化します。

・カスタマイズ・タイム サンプルのカスタマイズや、自作アプリの3DVR化を行ってください。

本日の内容

・アセットを使って、簡単なプログラムを作成

・作成したプログラムを3DVR化する:Dive編

・作成したプログラムを3DVR化する:Cardboard編

・カスタマイズ・タイム

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・景色があると相対的にジャンプ感が出るので、 ビル街を自動生成するアセットを使う

・自動生成なので、毎回違った景色が楽しめる。 (大差ないけど...)

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成 ・TekitouCityGenerator /

         適当な街並みジェネレータ Unity5で適当な街並みを自動で作るサンプル http://many.chu.jp/Unity/TekitouCityGenerator/ https://github.com/Maruchu/TekitouCityGenerator

・ライセンスがやや運用しにくい

・アセットをダウンロードする

やってはいけないのは、オリジナルの unitypackage をそのまま別のサイトなどで配布することだけです。各自で改造して作成された unitypackage や zip はご自由に配布してもらってOKなので是非 色んな物に使って遊んでみてください。

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・Unity5.1で新規プロジェクトを作成

 TekitouCityGenerator_ForUnity5.0.1. unitypackageをロードする

・Sample1を読み込む (2夕方,3夜も試す)

・動かしてみる -> 動きが早い(=酔う)のを確認

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・使用したアセットのサンプルでは、街なかの 空中をぐるぐる高速で回るので、3DVRアプリ にすると酔います。

・回転処理しているスクリプトを無効にして、 回転を止めます。

・設定されたAddRotationスクリプトを無効に カメラを開いてスクリプトのチェックを外す

・動かしてみる -> 回らなくなったが何も起きない

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・カメラにRidgebodyコンポーネントを設定し、 重力をオンにする

・カメラにスフィアコライダーを設定する 

・マテリアルを作成して、Bouncenessを1に 設定する

・スフィアコライダーにマテリアルを設定する 

・動かしてみる -> 床を突き破って無限に落ちる (床にコライダが設定されていない)

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・Cubeを作成して薄くして床に貼る Scale y0.1に。Position y-15にしておく

・Boxコライダーに マテリアルを設定する(バウンス)

・動かしてみる -> まだ早くて酔いそう

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・重力加速度を変更する

・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

・変更して動かしてみる -> 月面くらいがいい感じ

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・街を読み込む・回転を止める・カメラに重力を 作用させる・床でバウンスさせる・重力を月面にする・その他

アセットを使って、簡単なプログラムを作成

・他のサンプルも試してみる (夕暮れ、夜)

・ビルのロゴを浜松支部のアイコンと差し替え(済)

・重力はスクリプトでも変更可能 Physics.gravity = new Vector3(0f, 0f, -9.81f); 範囲を決めて、ランダムに変更してみる。

・加速度センサの値によってジャンプ開始と、 最初の加速度を変化させる

・カメラ位置の建物との衝突判定

・アセットを使って、簡単なプログラムを作成

・作成したプログラムを3DVR化する:Dive編

・作成したプログラムを3DVR化する:Cardboard編

・カスタマイズ・タイム

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

作成したプログラムを3DVR化する:Dive編 ・老舗VRヘッドセットメーカー

 Drovis社が提供しているUnity用のSDK https://www.durovis.com/

 ・ライセンス文書 ・3Dカメラ・プレハブ ・マウス操作スクリプト ・加速度センサPlugin ・ロゴ画面

・Cardboardより早く提供されていたので 多くのアプリケーションで使用されている

作成したプログラムを3DVR化する:Dive編

・https://www.durovis.com/sdk.html

・Dive_Plugin_2.1.unitypackageをダウンロード

・サンプルにアセットをロードする

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

作成したプログラムを3DVR化する:Dive編

作成したプログラムを3DVR化する:Dive編 ・3Dカメラをロードする

・単眼カメラを無効にする

・カメラの位置を高く設定する Position y+15

・先ほどのアセットで使った リッジボディとスフィアコライダを設定する

・実行してみる ->  ・Mouse Lookスクリプトが  有効なのでカメラをマウスで操作できる ・センサがないのでGYRO警告が出る

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

作成したプログラムを3DVR化する:Dive編

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

作成したプログラムを3DVR化する:Dive編

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

作成したプログラムを3DVR化する:Dive編

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

作成したプログラムを3DVR化する:Dive編

作成したプログラムを3DVR化する:Dive編

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

作成したプログラムを3DVR化する:Dive編

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

作成したプログラムを3DVR化する:Dive編

・Cubeの位置をy-15からy0に変更

・重力の設定を月面相当に

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

作成したプログラムを3DVR化する:Dive編

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

作成したプログラムを3DVR化する:Dive編

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

作成したプログラムを3DVR化する:Dive編

・ライセンスで、ロゴ表示が義務付けられている

・デフォルトのロゴはSDKに含まれている 3Dカメラを設定すると3D Splashも可能

・Unity Free版のロゴも出るので ロゴが2つ出るのは、起動時に煩わしい

・Unityロゴがステレオ対応じゃないのが残念

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

作成したプログラムを3DVR化する:Dive編

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

作成したプログラムを3DVR化する:Dive編

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

作成したプログラムを3DVR化する:Dive編

・Android SDKのパスを設定

・アプリケーション名の設定

・ビルド後、実機に転送して実行

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

作成したプログラムを3DVR化する:Dive編

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

作成したプログラムを3DVR化する:Dive編

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

作成したプログラムを3DVR化する:Dive編

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

横固定も入れる→

作成したプログラムを3DVR化する:Dive編

・Dive SDKとは・SDKのダウンロード・3Dカメラを設定・その他の設定・Diveロゴを表示する・apkのビルド

・アセットを使って、簡単なプログラムを作成

・作成したプログラムを3DVR化する:Dive編

・作成したプログラムを3DVR化する:Cardboard編

・カスタマイズ・タイム

・Cardboard SDKとは・SDKのダウンロード・3Dカメラを設定・apkのビルド

作成したプログラムを3DVR化する:Cardboard編 ・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

・次のGoogle I/Oで何かアップデートが?

・Cardboard SDKとは・SDKのダウンロード・3Dカメラを設定・apkのビルド

作成したプログラムを3DVR化する:Cardboard編

・Cardboard SDKとは・SDKのダウンロード・3Dカメラを設定・apkのビルド

作成したプログラムを3DVR化する:Cardboard編

・機能はプレハブにまとめられているので、 メインカメラにプレハブを追加するだけ

・CardboardHeadプレハブをカメラにドラッグ

・専用のシェーダーが使われ、樽状に変形

・Unity上の実行では樽変形されない

・Cardboard SDKとは・SDKのダウンロード・3Dカメラを設定・apkのビルド

作成したプログラムを3DVR化する:Cardboard編

作成したプログラムを3DVR化する:Cardboard編

・Cardboard SDKとは・SDKのダウンロード・3Dカメラを設定・apkのビルド

・Cardboard SDKとは・SDKのダウンロード・3Dカメラを設定・apkのビルド

作成したプログラムを3DVR化する:Cardboard編

・File->Build Settingsでターゲットを切り替える

・シーンの追加とテクスチャ圧縮の設定

・画面を横方向に固定、アプリ名を入れる

・ビルドして、実機にて動作確認

・Cardboard SDKとは・SDKのダウンロード・3Dカメラを設定・apkのビルド

作成したプログラムを3DVR化する:Cardboard編

・Cardboard SDKとは・SDKのダウンロード・3Dカメラを設定・apkのビルド

作成したプログラムを3DVR化する:Cardboard編

・Cardboard SDKとは・SDKのダウンロード・3Dカメラを設定・apkのビルド

作成したプログラムを3DVR化する:Cardboard編

・Cardboard SDKとは・SDKのダウンロード・3Dカメラを設定・apkのビルド

作成したプログラムを3DVR化する:Cardboard編

・Cardboard SDKとは・SDKのダウンロード・3Dカメラを設定・apkのビルド

作成したプログラムを3DVR化する:Cardboard編

・アセットを使って、簡単なプログラムを作成

・作成したプログラムを3DVR化する:Dive編

・作成したプログラムを3DVR化する:Cardboard編

・カスタマイズ・タイム

・取り組んできたサンプルのカスタマイズや、 お手持ちの自作アプリの3DVR化を行ってみてください。

・ここからはフリータイムになりますので、お時間まで自由に プログラムを行ってください。

カスタマイズ・タイムカスタマイズ・タイム