アウトドアとかゲーム開発とか

ロードバイクやキャンプなどアウトドアとUnityでの開発とか

【VR】Oculus Quest+Unity開発

Oculus Questが発売され到着したので開発についてまとめてみた

f:id:vrcycling:20190525105151p:plain

公式ドキュメント

・Oculus Quest Development Guide
https://developer.oculus.com/documentation/quest/latest/

開発者モード

Oculusアプリから接続済みのQuestを選択し、その他の設定内から開発者モードをONに切り替えます。

f:id:vrcycling:20190525111759p:plain

Unityのバージョン

以下のいずれかのバージョンを推奨
2017.4 LTS
2018.4 LTS
2019.1.2f1
https://developer.oculus.com/documentation/quest/latest/concepts/unity-req/
※最低は2017.4.11f1とのこと

 Unityのダウンロードは以下から
https://unity3d.com/jp/get-unity/download

インストール時にAndroid Builde Supportに要チェック

 Oculus Integration for Unity

Oculus開発用のOculus Integrationのインポート

Asset Store
https://assetstore.unity.com/packages/tools/integration/oculus-integration-82022
https://developer.oculus.com/downloads/package/unity-integration/

 Android SDKJDKのインストール

Mirage Soloの開発と同じですので以下を参考に
http://cycling.hateblo.jp/entry/2018/05/13/183657

Build Settings - Switch Platform

プラットフォームをAndroidに変更

f:id:vrcycling:20190525110734p:plain

Player Settings

XR SettingsのVirtual Reality SupportedにチェックをしてOculusを選択
f:id:vrcycling:20190525111540p:plain

Other SettingsのMinimum API Levelを「Android 4.4」に変更
f:id:vrcycling:20190525112151p:plain

ターゲットデバイスをQuestに変更

Oculusフォルダ内のOculus Project Configを選択
f:id:vrcycling:20190525114545p:plain

InspectorからTarget Device TypesをQuestに変更

f:id:vrcycling:20190525114700p:plain

ビルドしてみる

 適当にキューブなど配置してテストビルド

f:id:vrcycling:20190525114823p:plain

Android SDKのToolsバージョンを上げろ、などのメッセージが出る場合はAndroid Studioを起動して、SDK Managerからバージョンアップ

Buide And Runする場合は有線接続が必要。付属のケーブルはType C - Type CなのでPC側がAの場合は別途ケーブルを用意しておく。
下記ケーブルは問題なく使えた

・Snowkids【2本】USB Type Cケーブル 2m USB-A to USB-C充電ケーブル
https://amzn.to/2W2zE6x

コントローラを表示する

シーンにOculus > VR > Prefabs内のOVRCameraRigを追加
※MainCameraは消すか無効にする

f:id:vrcycling:20190525115610p:plain

左右のControllerAnchorの下にOVRControllerPrefabを追加
f:id:vrcycling:20190525115724p:plain

左手用のOVRControllerPrefabのInspectorからControllerを「L Tracked Remote」に変更

f:id:vrcycling:20190525115852p:plain

ビルドする

ビルドしてコントローラが表示されればOK

入力関連

OVRInput
https://developer.oculus.com/documentation/unity/latest/concepts/unity-ovrinput/

Unity Input
https://docs.unity3d.com/ja/current/Manual/OculusControllers.html

参考

・数分で完了 Oculus Questの開封からセットアップまで詳細
https://www.moguravr.com/oculus-quest-setup/

・Oculus Quest向けアプリの個人開発は可能か? 実機で確かめてみた
https://www.moguravr.com/oculus-quest-personal-develop-try/

・UnityアプリをRiftからGo/Questへ移植する人向けのTips集
https://synamon.hatenablog.com/entry/2019/05/21/202417

 ・Oculus Quest向けのビルドとコントローラの表示メモ
http://jackmasaki.hatenablog.com/entry/2019/05/05/134811

・UnityでOculus Quest向けのビルドを試してみる。
https://note.mu/kirin_zzzzz/n/n11795eb4243f

 

【VR】SteamVR×モノビットエンジン【Unity】

SteamVRでモノビットエンジンを使う方法について
※SteamVR 1.0当時の内容です。2.0では若干変更があります

1.MUN(モノビット公式)とSteamVR Plugin(アセットストア)をインポートします
f:id:vrcycling:20181026144803p:plain

※一旦再生ボタンを押しておきます
 SteamVRの初期設定についてはここでは省略します

2.[CameraRig]プレハブをシーンに入れ、「MainCamera」を非アクティブにします
f:id:vrcycling:20181026145950p:plain

3.ルーム入室用のスクリプトを用意します
空のGameObjectをシーンに作り、「MonobitAutoLoginTemplate」をAddComponentの「Monobit Networking Support」からアタッチします
f:id:vrcycling:20181026150303p:plain

4.プレイヤーを用意します
シーンに空のGameObjectを作り、「Player」という名前に変更します。
Assetsフォルダに「Resources」フォルダを作成し、先ほど作ったPlayerをD&Dしプレハブ化します。
シーン内のPlayerは削除します。
f:id:vrcycling:20181026150545p:plain

5.プレイヤープレハブをマルチ対応します
プレイヤープレハブに「MonobitView」コンポーネントをアタッチします
f:id:vrcycling:20181026150833p:plain

6.シーン上の「Monobit Auto Login Template」のPrefabにPlayerプレハブを指定します
f:id:vrcycling:20181026151026p:plain

7.「Monobit Auto Login Template」のスクリプトを変更します
プレハブにメインカメラを設定している個所の122~134行目をコメントアウトします。
f:id:vrcycling:20181026151317p:plain

8.マルチ確認用にPlayerプレハブにオブジェクトを追加します
プレイヤープレハブの子にCubeを追加し、Scaleを0.3くらいにします
f:id:vrcycling:20181026153004p:plain

9.プレイヤーブレハブに位置の同期をとるため「Monobit Transform View」をアタッチします
その後、プレイヤープレハブのMonobit Viewの監視リストに追加したMonobit Transform Viewを指定します
f:id:vrcycling:20181026153149p:plain

10.プレイヤープレハブにCameraの位置を取得するスクリプトを追加します
Playerスクリプトを作成し下記のようにします

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MonobitEngine;

public class Player : MonobitEngine.MonoBehaviour {

	GameObject camera;
	
	void Start () 
	{
		camera = GameObject.Find("Camera");
	}
	
	void Update () 
	{
		if(!monobitView.isMine)
			return;
		
		transform.position = camera.transform.position;
		transform.rotation = camera.transform.rotation;
	}
}

11.複数クライアントで実行してみましょう
相手の頭の位置にキューブが表示され、動きが同期されていればOKです

手の位置を取得する場合は「Controller (left)」「Controller (right)」のtransformを取得すればOKです

【VR】MirageSolo+Unity開発 基本編

MirageSoloアプリをUnityで作っていく際の覚書。

カメラのトラッキング

他のVRバイス同様、PlayerSettings内の『Virtual Reality Supported』のチェックをオンにするだけです。

顔モデルを配置したい場合はカメラの子にするか、メインカメラのTransformの値を取得して反映させます。

コントローラを使う

『GvrControllerMain』プレハブをシーンに配置します。
これでボタン入力など取得できるようになります。
f:id:vrcycling:20180907233407p:plain

コントローラのモデルを表示する

『GvrControllerPointer』プレハブをシーンに配置します。
f:id:vrcycling:20180907233615p:plain

カメラと同じ位置に配置するといい感じの位置に表示されます。
カメラのClipping PlanesのNearの値を小さくしておかないとカメラのモデルが正しく表示されないので注意しましょう。

コントローラのガイド表示を変更する

先ほどシーンに追加したコントローラのプレハブの子にある、『ControllerVisual』オブジェクトの『Gvr Controller Visual』のInspectorにある『Attachment Prefabs』を変更します。
f:id:vrcycling:20180907234446p:plain
なくす場合はSizeを0にし、変更する場合はElement 0を変更します。
GvrControllerTooltipsTemplateをカスタマイズしてアタッチすることで好きな内容に変更できます。

ボタン入力を取得する

GvrControllerInput.~~で取得します。以下一部抜粋

AppButtonDownアプリケーションボタンを押したとき
HomeButtonDownホームボタンを押したとき
ClickButtonDownタッチパッドボタンを押したとき
TouchDownタッチパッドに触れたとき
TouchPosタッチパッドに触れている位置(Vector2)
GvrControllerInput Class Reference  |  Google VR  |  Google Developers

サンプル

if(GvrControllerInput.ClickButtonDown)
{
    Debug.Log("タッチパッドを押したよ!");
}

基本編はひとまずここまでです。
魅力的なMirage Soloのアプリをどんどん作っていきましょう。

【VR】MirageSoloあれこれ①

MirageSoloが届いて約1週間の間に触って気づいたことなどをメモ。

・持ち運びケース
https://amzn.to/2kcO7qR
微妙に持ち運びにくいSolo。こちらのPSVRのケースを使用。
中のスポンジの形状が異なるのでフィットするようにくりぬく必要あり。
小さい小物入れもついてたのが◎。リモコンとケーブル収納にぴったり。

・キャスト
プレイ中の画面をモニタに表示。Chromecastが必要。
Anycastという似たようなものは使用できなかった。

・アプリケーションの終了
起動したアプリを簡単に終了させる方法がよくわからない。
設定から「強制停止」を行なって止めているので再起動が面倒。
Unityで実装するなら「Application.Quit();」でOK。

・一覧にないアプリのインストール
Solo内部にないAndroidアプリのインストールはPCからPlayストアへ行き、インストール端末にSoloを選択する。
Solo側でログインしてから1時間くらいしないと所持端末一覧に追加されないので注意。

・Unityでコントローラを使用する
「GvrControllerMain」プレハブをシーンに追加。
GvrControllerInput.~~でコントローラの入力を取得

GvrControllerInput Class Reference  |  Google VR  |  Google Developers

 

【VR】MirageSolo+Unity開発

ポジショントラッキング可能なスタンドアロン型VRHMD『MirageSolo』をUnityで動作確認するまでの流れ

Unity、JDK、AndroidSDKのインストール

主に下記ページを参考にしました。

・インストールしたバージョン
Unity:2017.3.1f1
JDKjdk-8u172-windows-x64.exe
AndroidSDK:Android 7.0、8.1
※7.0はAndroid Studioインストール後、下部ConfigureのSDK Managerを選択し、
「Andorid 7.0」にチェックを入れインスールします
Google VR SDK:GoogleVRForUnity_1.130.1.unitypackage

インスト-ル後、Unity側のSDKJDKのパス設定を行います。
[Edit] - [Preferences]から下記ウインドウを開き、SDKJDKの欄にインストールしたパスを入力します。
※下記は参考で各自インストール先になります

f:id:vrcycling:20180513180913p:plain

Mirage Solo側の設定

Mirage Soloを開発者モードにします。
[設定]-[全ての設定]-[システム]-[端末情報]に入り、[ビルド番号]を7回クリックします。
※通常のAndorid端末と同様です。途中でカウントダウンメッセージが表示されます

開発者モードになると[システム]に[開発者オプション]が追加されるので、そこから「USBデバッグ」をONにします。

ビルド&実機確認

実機をPCにUSB接続し、UnityのBuild&Runより実行します。

途中で「Unable to list target platforms」というエラーが出た場合は下記を参考にします。

※toolsを「上書き」とありますが自分の場合はそれで治らず、一度toolsフォルダを削除し追加しました。

また、途中で止まってしまった場合はMirage Solo側で接続PCからのUSB接続の許可を求めるウインドウが出ている場合がありますのでMirage Soloを被って確認しましょう。

無事実行できればOKです。
※抜け漏れがあるかもしれないので次回開発環境を整える際に再度確認します

その他参考記事

Configure On-Device Developer Options  |  Android Developers

Android Debug Bridge (adb)  |  Android Developers

Unity + Daydream開発はじめの一歩(2017.6月最新版) - WonderPlanet DEVELOPER BLOG

Quickstart for Google VR SDK for Unity with Android  |  Google VR  |  Google Developers

【Unity2018対応】Androidビルドでエラーが出る場合の対処法 - おもちゃラボ

ソロキャン持ち物リスト

ちょいちょい忘れ物をするので備忘録としてリスト化

・テント
シュラフ(&シュラフインナー)
・チェア
・テーブル
・ペグ、ペグハンマー
・グランドシート(レジャーシート)
・ランタン
・ヘッドライト
・マット(コット)

・コンパクトバーナー
・ガスボンベ
・トーチバーナー
・BBQコンロ
・着火材
・火吹き棒
・トング(炭用、肉用)
・クッカーセット
・マグ
・カトラリーセット
・ナイフ(キッチンバサミ)
ウインドスクリーン

・タープ
・ランタンハンガー
・ランタンスタンド

・スポンジ
・洗剤

・着替え
・タオル
・サンダル

・アルミホイル
・トイレットペーパー
・ゴミ袋
・ウェットティッシュ

・耳栓

・折り畳みバッグ(買い物、温泉用)

随時更新

冬キャンまとめ

冬キャンしてきた。

昨年9月にバイクを購入し、キャンプでもしようと思ってキャンプ道具を揃え始めていた矢先に『ゆるキャン△』のアニメが始まった。

当初冬のクソ寒い時期にキャンプする予定なんか全く無く、春になったら行こう、と思っていたのが原作全巻読むほどドハマりした影響でキャンプ欲が高まり、1月に冬キャンプを決行した。

1回目 極寒のソロキャン

f:id:vrcycling:20180411215443j:plain

当然冬装備など持っていない状態だったが意外と行けるかもしれないし、一度体験してから買い揃えたい、という思いから自転車旅用に購入していた3シーズン用のテント・シュラフでチャレンジしてみた。
結果は惨敗。スキマ風は入るは暖かさが無いわで凍え死ぬかと思った。
何重にも衣服を着込んで毛布まで被っていたのに寒いと本当にやばかった。所持していたカイロをすべて身体に貼り付けて無事朝を迎えることが出来た。

BUNDOK(バンドック) ソロ ドーム 1

リーズナブルなテントなんだけど狭いのとインナーが下までフルメッシュのためスキマ風がハンパない。
2kgくらいと軽いのはメリット。
設営もインターテントを2本のポールで吊るしてフライシートを被せるだけなので非常に簡単。

モンベル(mont-bell) UL.スーパースパイラル ダウンハガー 800 #3

自転車旅用に買った軽量シュラフだけどコンフォート温度3度は真冬にはキツかった。

このキャンプの教訓としては冬を舐めてはいけない。

2回目 安定のソロキャン

f:id:vrcycling:20180411215532j:plain

テントとシュラフを冬用に変えて再チャレンジ。ペグハンマーなど小道具も揃えた。
ペグハンマーの有無でペグの打ち込みは段違い。小さめのでいいので持っておきたい。

Coleman(コールマン) テント エクスカーションティピ/210

1~2人用のワンポールテント。インナーもフルメッシュではないので冷気をかなりシャットアウトしてくれる。ただしメッシュにも切り替えられるのでオールシーズン使えそう。
ポールが少しジャマなのと重いのがデメリット。
あとはペグを挿さなければ設営できないのでペグがさせる場所でしか使用できない。ペグの数も多く必要なので重めのペグを使う場合は重量もさらにアップ。

モンベル(mont-bell) アルパイン ダウンハガー800 #2 

コンフォート温度0度の寝袋。きちんとモンベルショップへ行って店員に相談して購入。使用した感想としてはあったかいを通り越して暑いくらいに頼もしい寝袋。冬はコレを買っておけば間違いなさそう。

f:id:vrcycling:20180411215632j:plain
B6のBBQコンロ。焚き火台としても使えるのでありがたい。
外で食べる肉はうまいし醍醐味。しかし肉を切るための道具は必須!

ようやくキャンプ道具はひととおりそろった感。

3回目 小豆島キャンプツーリング

f:id:vrcycling:20180411215715j:plain
3度目は3月末にバイク仲間と小豆島へ。
日中は暖かかったが夜はやっぱりまだ寒い。
小豆島の北側は静かで景色もいいのでオススメ。

オートビレッジYOSHIDA | 道の駅 小豆島オリーブ公園 公式サイト

温泉つきのキャンプ場。海岸からも近く景色がいい。
田舎ならではなのか早朝に町内放送が流れるのが欠点?

4回目 潮騒の琵琶湖キャンプ

f:id:vrcycling:20180411215807j:plainそして4度目は6人ほどで電車で琵琶湖岸のキャンプ場へ。
6人中5人はゆるキャン視聴済みメンバー。みんなキャンプ初挑戦で装備も様々。
4月なので完全に暖かいと思いきや寒の戻りで完全に冬。初回の自分と同様装備不足で寒い思いをしたメンバーも。生きててよかった。

ニュー白浜オートキャンプ場

サイトは完全に10数年前のデザインだけどウォシュレットも完備されており設備はまずまず。
琵琶湖が目の前で景色は最高・・・なのだが岸に近すぎて夜中の波の音がうるさくて寝不足。。。
近所に日帰り温泉もあるのでさっぱりできる。

f:id:vrcycling:20180411215921j:plain複数人でのキャンプのいいところはそれぞれがキャンプ道具を持ち寄れること。
鍋とカセットコンロを持ってきてもらえたのでめっちゃ旨い鍋が食べれた。少し食べ過ぎたくらいだったけど。

次回に向けて

ワンポールテントもよかったけどやはり重い、ということでテントを新調。

Weanas テント 2-3人用

届いて自室で設営してみたけど、やはり軽くて広くてよさげ。
軽い分かなり薄いのが少し心配。

THERMAREST ラグジュアリーライト ウルトラライトコット

もうひとつ注文しているのが、しまりんの爺ちゃんも使っていたこちらのコット。
キャンプは快適に眠れるかが非常に重要。マットだけだと少し眠りにくいので新たにこれを導入する。
1.2kgと非常に軽い分かなりお高い。その分の効果があるといいけど。

 

ということで試したいのでまた近々行く予定。
次は山にするか海にするか。