Post on 16-Apr-2017
Copyright©Up-frontier,Inc.Allrightsreserved.
Unity+iOS/Android VRことはじめ#1
Gaprot
Copyright©Up-frontier,Inc.Allrightsreserved.
注意事項
Copyright©Up-frontier,Inc.Allrightsreserved.
• 本スライドは「2017/03」時点の情報を元に作成されています
• 古い情報になっている場合もありますのでご了承ください
• 記載のバージョン以外の組み合わせでの動作保証はしておりませんのでご注意ください
Copyright©Up-frontier,Inc.Allrightsreserved.
作成環境
Copyright©Up-frontier,Inc.Allrightsreserved.
Unity5.6が出ていますが…
• Unity
• 5.5.2f
• GVRSDK
• 1.30
Copyright©Up-frontier,Inc.Allrightsreserved.
Unity
• 5.6にUnity謹製のVRSDKが同梱されている
• まだ出たばかりなので安定版を
• そういう理由で今回は5.5を使います
Copyright©Up-frontier,Inc.Allrightsreserved.
GoogleVRSDK
• ダウンロードはここから
• https://developers.google.com/vr/unity/download
Copyright©Up-frontier,Inc.Allrightsreserved.
使うモデルの読み込み
Copyright©Up-frontier,Inc.Allrightsreserved.
Unityちゃん
• と思ってたのですが…
Copyright©Up-frontier,Inc.Allrightsreserved.
AmaneKisora-chan
• こっちのほうがモダンと聞いたので
• https://www.assetstore.unity3d.com/jp/#!/content/70581
• AssetStoreにて無料で配布されています
Copyright©Up-frontier,Inc.Allrightsreserved.
AssetStore• Unityを立ち上げるとこんな画面
Copyright©Up-frontier,Inc.Allrightsreserved.
AssetStore• ここのタブを押すとAssetStoreが出て来る
Copyright©Up-frontier,Inc.Allrightsreserved.
AssetStore• こんな感じです
Copyright©Up-frontier,Inc.Allrightsreserved.
AssetStore• ここで検索しましょう
Copyright©Up-frontier,Inc.Allrightsreserved.
AssetStore• 検索結果です
Copyright©Up-frontier,Inc.Allrightsreserved.
AssetStore• インポートを押すとデータを取得できます
Copyright©Up-frontier,Inc.Allrightsreserved.
AssetStore• こんな感じの確認画面が出ます
Copyright©Up-frontier,Inc.Allrightsreserved.
AssetStore• 右下のImportを押しましょう
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを配置
• Importを押してしばらく待つとAssetsにSapphiArtというデータが追加されます
• この中を見てみると色んなデータが入ってるのがわかると思います。
• 配置するべき物は大概prefabかmodelというフォルダに入ってることが多いです
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを配置• 今回はこれを使います
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを配置• OBJフォルダに入ってましたね
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを配置
• 使うモデルをドラッグアンドドロップで直接sceneかHierarchyと書かれた部分へ配置します
• そうするとモデルがシーン上に表示されます
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを配置
直接持っていく
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを配置
こっちに持っていく
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを配置
無事配置完了!
Copyright©Up-frontier,Inc.Allrightsreserved.
シーンの作成
Copyright©Up-frontier,Inc.Allrightsreserved.
シーンを整える
• 見ての通りまだシーン上にはモデルがぽつんと佇んでいるだけになってます
• なので地面とかそういうのを置いてシーンを整えましょう
Copyright©Up-frontier,Inc.Allrightsreserved.
その前に…
Copyright©Up-frontier,Inc.Allrightsreserved.
Unityでの操作
• シーンでのUnityの操作を覚えましょう。
Copyright©Up-frontier,Inc.Allrightsreserved.
視点移動
• 基本的にマウス+キーボードで視点を移動します
• マウスホイールでズームイン・アウト
• オプションキー+ドラッグで視点移動
• オプション+コマンド+ドラッグで水平移動
Copyright©Up-frontier,Inc.Allrightsreserved.
視点移動
• とりあえずグリグリしてみましょう
• ちなみにHierarchyのところにあるモデルをダブルクリックすると視点がそこに移動します
Copyright©Up-frontier,Inc.Allrightsreserved.
地面の作成
• 地面を作るにはメニューにあるGameObjectから3DObject>Planeを選択します
• Terrainというのもあるのですが、スマホでは重いのでPlaneを地面にします。
Copyright©Up-frontier,Inc.Allrightsreserved.
地面の作成
Copyright©Up-frontier,Inc.Allrightsreserved.
地面の作成
地面ができました
Copyright©Up-frontier,Inc.Allrightsreserved.
地面の作成
これでは地面とはいえませんね…
Copyright©Up-frontier,Inc.Allrightsreserved.
地面の作成
ここの値をいじって調整しましょう
Copyright©Up-frontier,Inc.Allrightsreserved.
地面の作成
Positionのyを0Scaleのxとzを200にしました
Copyright©Up-frontier,Inc.Allrightsreserved.
地面の作成
真っ白だと味気ないのでテクスチャを張りましょう
Copyright©Up-frontier,Inc.Allrightsreserved.
地面の作成
とりあえずこれを使いましょう
Copyright©Up-frontier,Inc.Allrightsreserved.
地面の作成
ここにドラッグアンドドロップで
Copyright©Up-frontier,Inc.Allrightsreserved.
地面の作成
無事(?)地面ができました!
Copyright©Up-frontier,Inc.Allrightsreserved.
地面の作成
• 今回はたまたまアセットに入っていた地面に使っても問題無さそうなテクスチャーを張りました
• 本当はもっと地面っぽいものを張ったほうがいいです
Copyright©Up-frontier,Inc.Allrightsreserved.
配置とVRモード設定
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを配置
• 今モデルと地面それからカメラがデフォルトの位置に置いたままになっています
• これでは配置したといえる状況ではないのでいい感じの場所に置きましょう。
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを配置
配置後のものがこちらになります
Copyright©Up-frontier,Inc.Allrightsreserved.
GVRSDK
• 初に紹介したGVRSDKをインポートしましょう
• Unityを開いている状態でダウンロードしてきたGoogleVRForUnity.unitypackageをダブルクリックするとインポートされます。
Copyright©Up-frontier,Inc.Allrightsreserved.
GVRSDK
Importをクリック!
Copyright©Up-frontier,Inc.Allrightsreserved.
GVRSDK
無事インポートされました
Copyright©Up-frontier,Inc.Allrightsreserved.
VR化
• SDKのインポートもできたのでいよいよVRにします!
Copyright©Up-frontier,Inc.Allrightsreserved.
VR化
GoogleVR>Prefabsのこれを…
Copyright©Up-frontier,Inc.Allrightsreserved.
VR化
ここに持っていきます
Copyright©Up-frontier,Inc.Allrightsreserved.
すると…
Copyright©Up-frontier,Inc.Allrightsreserved.
VR化
Copyright©Up-frontier,Inc.Allrightsreserved.
できちゃいました!
Copyright©Up-frontier,Inc.Allrightsreserved.
VR化
• このようにGoogleVRSDKを使用するとVR化することは非常に簡単です
• ゲーム画面でオプションキーを押しながらマウスを動かすと視点をぐるぐる動かすことができます
Copyright©Up-frontier,Inc.Allrightsreserved.
アニメーションを追加
Copyright©Up-frontier,Inc.Allrightsreserved.
アニメーション
• 今回使用したモデルではデフォルトで色々と用意されています
• これを理解していくのもいいのですが今回は簡単なものを作ってみたいと思います
Copyright©Up-frontier,Inc.Allrightsreserved.
mecanim
• Unityでアニメーションを簡単にコントロールすることが出来るツールがmecanimです
• これを利用することで簡単にアニメーションどうしの遷移などを簡単に制御することができます
Copyright©Up-frontier,Inc.Allrightsreserved.
作ってみよう!
• まずはじめにAnimatorControllerを作成します
• メニューのAssets>Create>AnimatorControllerを選択すると今いるフォルダに作成されます。
Copyright©Up-frontier,Inc.Allrightsreserved.
作ってみよう!• 作ったアニメーションコントローラはこんな感じ
Copyright©Up-frontier,Inc.Allrightsreserved.
作ってみよう!• その上で右クリック
Copyright©Up-frontier,Inc.Allrightsreserved.
作ってみよう!• 出てきたメニューのCreateState>Empty
Copyright©Up-frontier,Inc.Allrightsreserved.
作ってみよう!• 新しいステートができました
Copyright©Up-frontier,Inc.Allrightsreserved.
作ってみよう!• Waitという名前をつけておきました
Copyright©Up-frontier,Inc.Allrightsreserved.
作ってみよう!• もう一つ作成しておきましょう
Copyright©Up-frontier,Inc.Allrightsreserved.
作ってみよう!• こっちはWalkにしておきました
Copyright©Up-frontier,Inc.Allrightsreserved.
作ってみよう!• アニメーションアタッチのためにここをクリック
Copyright©Up-frontier,Inc.Allrightsreserved.
作ってみよう!• 左上の方にメニューが出てきます
Copyright©Up-frontier,Inc.Allrightsreserved.
作ってみよう!• 今回はidleを選択しましょう
Copyright©Up-frontier,Inc.Allrightsreserved.
作ってみよう!• 今回はidleを選択しましょう
Copyright©Up-frontier,Inc.Allrightsreserved.
作ってみよう!• もう一つの方はwalkを設定しておきます
Copyright©Up-frontier,Inc.Allrightsreserved.
ステートマシン
• これら一つ一つをステートとして扱い、それによりアニメーションの状態を管理します
• あくまでアニメーションの状態の管理をするものであり、モデルの状態を管理するものではありません
Copyright©Up-frontier,Inc.Allrightsreserved.
ステートマシン
• ステートが切り替わる条件などをこのアニメーションコントローラへ書いておきます
• それによりスクリプトから簡単に制御することができます
Copyright©Up-frontier,Inc.Allrightsreserved.
ステート遷移• 関係性を作るために右クリック
Copyright©Up-frontier,Inc.Allrightsreserved.
ステート遷移• 出てきたMakeTransitionをクリック
Copyright©Up-frontier,Inc.Allrightsreserved.
ステート遷移• それを上のステートにつなげるとこうなります
Copyright©Up-frontier,Inc.Allrightsreserved.
ステート遷移• 反対方向もやっておきましょう
Copyright©Up-frontier,Inc.Allrightsreserved.
アニメーションの適用
作成したコントローラをモデルへ適用します
Copyright©Up-frontier,Inc.Allrightsreserved.
アニメーションの適用
これを
Copyright©Up-frontier,Inc.Allrightsreserved.
アニメーションの適用
ここに
Copyright©Up-frontier,Inc.Allrightsreserved.
アニメーションの適用
適用できました
Copyright©Up-frontier,Inc.Allrightsreserved.
アニメーションの適用
Copyright©Up-frontier,Inc.Allrightsreserved.
ステート制御
• ステートが勝手に切り替わってくれるようになりました
• 次はこのステートの切り替わりを制御しましょう
Copyright©Up-frontier,Inc.Allrightsreserved.
パラメータ作成• 制御するためのパラメータを作成しましょう
Copyright©Up-frontier,Inc.Allrightsreserved.
パラメータ作成• ここをクリックします
Copyright©Up-frontier,Inc.Allrightsreserved.
パラメータ作成• こうなるので+ボタンを押します
Copyright©Up-frontier,Inc.Allrightsreserved.
パラメータ作成• 今回は時間をトリガーにしたいのでfloatにします
Copyright©Up-frontier,Inc.Allrightsreserved.
パラメータ作成• 作ったパラメータには適当に名前をつけましょう
Copyright©Up-frontier,Inc.Allrightsreserved.
パラメータ作成• ついでにパラメータを設定するとこうなります
Copyright©Up-frontier,Inc.Allrightsreserved.
パラメータ適用• 作成したパラメータを設定しましょう
Copyright©Up-frontier,Inc.Allrightsreserved.
パラメータ適用• 矢印をクリックするとこうなります
Copyright©Up-frontier,Inc.Allrightsreserved.
パラメータ適用• 右側のinspectorというところに情報が出ます
Copyright©Up-frontier,Inc.Allrightsreserved.
パラメータ適用• ここが遷移条件になります
Copyright©Up-frontier,Inc.Allrightsreserved.
パラメータ適用• +ボタンを押すとさっき作ったものが適用されます
Copyright©Up-frontier,Inc.Allrightsreserved.
パラメータ適用• ここで以上、以下、等しい、等しくないを選び
Copyright©Up-frontier,Inc.Allrightsreserved.
パラメータ適用• ここに条件となる数値を入れます
Copyright©Up-frontier,Inc.Allrightsreserved.
パラメータ適用• 今回は2より大きいという値を設定します
Copyright©Up-frontier,Inc.Allrightsreserved.
パラメータ適用• 反対の矢印も似たように設定します
Copyright©Up-frontier,Inc.Allrightsreserved.
ステート制御
• これでとりあえずステート制御の準備が整いました
• 後はスクリプトを作成し、作成したパラメータを変更してあげるとアニメーションがそのパラメータに従い動作します
Copyright©Up-frontier,Inc.Allrightsreserved.
スクリプト作成
適当なフォルダで右クリック
Copyright©Up-frontier,Inc.Allrightsreserved.
スクリプト作成
適当な名前をつけておきましょう
Copyright©Up-frontier,Inc.Allrightsreserved.
スクリプト作成
ダブルクリック
Copyright©Up-frontier,Inc.Allrightsreserved.
スクリプト作成
MonoDevelopが開きます
Copyright©Up-frontier,Inc.Allrightsreserved.
スクリプト作成
とりあえずこういう感じになります
Copyright©Up-frontier,Inc.Allrightsreserved.
スクリプト作成
作ったパラメータを指定
Copyright©Up-frontier,Inc.Allrightsreserved.
スクリプト作成
時間を進めてパラメータへ設定
Copyright©Up-frontier,Inc.Allrightsreserved.
スクリプト適用
出来たスクリプトをアタッチします
Copyright©Up-frontier,Inc.Allrightsreserved.
スクリプト適用
これを
Copyright©Up-frontier,Inc.Allrightsreserved.
スクリプト適用
ここに
Copyright©Up-frontier,Inc.Allrightsreserved.
スクリプト適用
これでアタッチが出来ました!
Copyright©Up-frontier,Inc.Allrightsreserved.
動かしてみよう
Copyright©Up-frontier,Inc.Allrightsreserved.
アニメーションはしたけど…
• その場で足踏みしかしてくれませんね
• これではせっかくVRにしても前しか見る場所がありません
• なので自分の周りを回ってもらいましょう
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを動かす
• ターゲットとしてカメラを使用する
• その周りを歩きのアニメーションの時に移動
• 待機のアニメーションのときは止まる
• というスクリプトの作成
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを動かす
先程作ったこれを…
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを動かす
こうします!
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを動かす
publicで変数を宣言するとinspectorに表示されます
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを動かす
回転変数の初期設定
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを動かす
歩きアニメーションの間一定速度で動かす
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを動かす
周りを回る予定なのでモデルの向きを変えます
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを動かす
回転させるときはここをクリック
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを動かす
球体が出てきてモデルを回せるようになります
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを動かす
今回は進行方向に向けてy軸を回転させました
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを動かす
y軸を回転させたいときは緑の線をドラッグ!
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを動かす
先程作成したpublicな変数がこちら
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを動かす
ここにターゲット予定のカメラを持っていくと
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを動かす
こんな感じになります
Copyright©Up-frontier,Inc.Allrightsreserved.
動かしてみましょう!
Copyright©Up-frontier,Inc.Allrightsreserved.
モデルを動かす
• 今回はちょっと条件等が雑なので動きに少しおかしい部分もあります
• しかし簡単なスクリプトでここまで動かせるのがUnityの強みだと思います
Copyright©Up-frontier,Inc.Allrightsreserved.
実機で動かす
Copyright©Up-frontier,Inc.Allrightsreserved.
ビルド
• ここまで作ったけどせっかくなら実機で試してみたいですよね?
• なのでAndroidやiOSでのビルド方法について説明します。
Copyright©Up-frontier,Inc.Allrightsreserved.
Android
Copyright©Up-frontier,Inc.Allrightsreserved.
Androidフロー
• プラットフォームを切り替える(時間かかります)
• プラットフォームの設定
• ビルド
Copyright©Up-frontier,Inc.Allrightsreserved.
• File>BuildSetting
Androidプラットフォームを切り替える
Copyright©Up-frontier,Inc.Allrightsreserved.
Androidプラットフォームを切り替える• 切替時にプラットフォーム用のライブラリ導入について聞かれます
Copyright©Up-frontier,Inc.Allrightsreserved.
Androidプラットフォームの設定• File>BuildSetting
Copyright©Up-frontier,Inc.Allrightsreserved.
Androidプラットフォームの設定• 画面向きの設定をランドスケープレフトにする
Copyright©Up-frontier,Inc.Allrightsreserved.
• APILevelを19以上に設定
• BundleIdentifierを設定
Androidプラットフォームの設定
Copyright©Up-frontier,Inc.Allrightsreserved.
Androidビルド(APK出力)
• File>BuildSetting
デバッグKEYでビルドする場合ONに
Copyright©Up-frontier,Inc.Allrightsreserved.
Androidビルド(APK出力)
• 注意点
• AndroidStudio2.3
• 必要なtoolsが足りないため
• コマンドラインツールのみ入手するよりtoolsを入手
Copyright©Up-frontier,Inc.Allrightsreserved.
iOS
Copyright©Up-frontier,Inc.Allrightsreserved.
iOSフロー
• プラットフォームを切り替える(時間かかります)
• プラットフォームの設定
• XCODEプロジェクトの吐き出し
• ビルド(時間かかります)
Copyright©Up-frontier,Inc.Allrightsreserved.
iOSプラットフォームを切り替える• File>BuildSetting
Copyright©Up-frontier,Inc.Allrightsreserved.
iOSプラットフォームを切り替える• 切替時にプラットフォーム用のライブラリ導入について聞かれます
Copyright©Up-frontier,Inc.Allrightsreserved.
iOSプラットフォームの設定• File>BuildSetting
Copyright©Up-frontier,Inc.Allrightsreserved.
iOSプラットフォームの設定• 画面向きの設定をランドスケープレフトにする
Copyright©Up-frontier,Inc.Allrightsreserved.
iOSXCODEプロジェクトの吐き出し
• File>BuildSetting
Copyright©Up-frontier,Inc.Allrightsreserved.
iOSビルド
• XCODEで開いてビルドをする