[Unity] Oculus Questで3Dキャラクターを眺めよう

Oculus Questちょっと良すぎましたよ!!!

Oculus Goはヘッドの回転移動+片手だけでしたが、Oculus Questは、自身の移動と両手が使えます
移動有りのケーブルレスがここまで快適で遊びやすいということを知りました!

購入は公式サイトがよいです。
https://www.oculus.com/quest/

ページ上から「アクセサリ」へ行くと、専用の携帯用ケースもあります。
こちらも買ってしまいましたが、収納にもよいですね。

充電ケーブルなども全部入ります。

あとは、Oculus Rift用に使っていたVR Cover。これも使えます。


すでにこのカバーをつけて遊んでますが、上部のセンサーが敏感でひっかかりやすくて、ヘッドを置いても画面付きっぱなしということがすでに多発してるので、使うときはそのあたり注意です。センサー前の布を上方へ持ち上げてあげないといけない。持っているカバーのタイプが旧型のようなので、今販売されている新しいものはどうかわかりません。

取って洗濯できるのがいいのですよね、とりあえず。


集まって遊ぶときは、使い捨てなのもとても便利。普段使いでもありですね。

最初から入っているデモだけでもすごい体験ができましたが、すでにリリースされているゲームもいくつか遊んでみましたよ。
動きたかったので、フィットネス枠の卓球とダンスを買ってみましたが、どちらもいい運動になり、どちらもリアルに上達してる感じがかなりあります。

ごくごく稀に、処理が追いつかなかったのか、視界が止まる場合がありましたが、気にならない程度です。

今までは強いパソコンが必須だったけど、これは単体で動くので、Oculus Go同様、スマホだけあれば遊べます。パソコン電源いれなくても、パソコンの前にいなくても、いい!

今回もクエリちゃんを眺めてみましょう!

アプリを作る作らないは置いておいて、開発面はRiftやGoのようにアプリ転送できるかな?と、前回のように試してみました。

Oculus Goの記事
[Unity] Oculus Goで3Dキャラクターを眺めよう

Go記事を書いていたので、今回も書いておこうかなぁと。

結論から書くと、今まで同様、UnityからAndroidビルドをするだけで、転送されて遊ぶことができる!
結論くらいしか書くことがないということでもありますが。それだけ簡単に転送ができました。

ただ一点、付属の充電ケーブルがUSB-C(小さめの丸ばったタイプ)なので、PCとの接続には、PC側にUSB-Cの挿し口が無いと、四角いUSBへ変換する何かが必要です。


こういうのかな?

2年前のマザーボードには1つ付いていたので、最近のWindowsPCであればあるのかもしれない。Macでやってみようかと考えていたら、その有無でWindows側に決定してしまいました。最近のMacならほぼほぼ付いてそうな端子(*)です。

* Thunderbolt3のことですが、USB Type-Cの形状で、USBやDisplayportのデータも扱えたりという便利な刺し口なので、単にUSBという括りではなく。主にAppleで使われている感じですが、WindowsPCにもあったりします。単なるUSB-CなのかThunderbolt3なのかは、見た目は同じなので仕様書確認しないとであります。
Thunderbolt – Apple

以下のOculus Goの記事にあるような、端末に接続してadb tcpipコマンドを発行し、TCPモードにすることで、その後にケーブルを抜いても、無線でインストールを可能にするような方法もあるようです。

[Oculus Go] リモートでadb接続する

試してはいませんが、これはandroid自体の機能を利用するものですね。
『PCとケーブル接続>ビルド>ケーブルを外してプレイ』というデバッグ行為を、頻繁に行うようなら、最初に無線化しておくと楽そうです。

開発ガイドは公開されています。
Oculus Quest Development Guide
https://developer.oculus.com/documentation/quest/latest/

Questを開発用とするには、スマホアプリで、開発者モードをオンにしておきます。

接続中のOculus Quest、その他の設定から、

開発者設定>開発者モードをオンに。

オンにすると、PC接続時、Quest内のフォルダへアクセスでき、スクリーンショットや撮影した動画も取り出せます。

このフォルダが見えなくなったり、とりだした動画や画像が再生できない場合もありましたが、接続しなおしたりするとうまく取れました。


歩いて移動ができるということは、キャラクターに普通に歩いて近寄れるんです。すごくないですかそれって。。。そして両手が動かせるということはですよ。それ以上は何も言いません。

PCとの接続は、ドライバが必須かもしれない。
うちの環境はすでに入っていたため、よく見てなかったです。

Oculus Go ADB Drivers
https://developer.oculus.com/downloads/package/oculus-go-adb-drivers/

oculus-go-adb-driver-2.0.zipを解凍し、android_winusb.infを右クリック、メニューからインストールを選択し、インストールします。

Adbコマンドの詳細
https://developer.oculus.com/documentation/mobilesdk/latest/concepts/mobile-adb/#mobile-android-debug-intro

現在の、推奨されているUnityバージョンで試します。
Compatibility and Version Requirements
https://developer.oculus.com/documentation/unity/latest/concepts/unity-req/

現時点では、以下のバージョンが記載されているので、UnityHUBからダウンロードできた2018.4.0f1を使ってみました。

2017.4 LTS
2018.4 LTS
2019.1.2f1

Unityインストール時は、標準+Androidビルドサポートの追加くらいです。

Oculus Quest向けにビルド

プロジェクト作成後、AssetStoreから、Oculus Integrationをインポートします。
Oculus Integration for Unity

Oculus Integration、以前はダウンロードする形式でしたが、今はAssetStoreからのインポートだけですね。

ProjectのAseets一覧
Oculus->VR->PrefabsにあるOVRCameraRigを、Hierarchyにドラッグして配置します。


シーンに最初からあるMain Cameraを削除します。

最近触っていなかったですが、Prefab構成は少し以前と異なってます。

OVRControllerPrefabをLeftControllerAnchor、RightControllerAnchorにドラッグして配置します。


LeftControllerAnchor側のControllerをL Tracked Remoteに。

手元のコントローラーが表示されるようになります。

OVRCameraRigを選択して、OVR ManagerのTarget DeviecesのところでQuestを選択する必要があります。

この選択は、最初表示されておらず、Build Settingsで、AndroidにSwitch Platformしたあとに表示されました。

Tracking項目は、標準のEye Levelよりは、Floor Levelにするほうが、転送直後の動作はうまくいきそうです。

このあたりの設定概要はこちらにあります。
Oculus Utilities for Unity
https://developer.oculus.com/documentation/unity/latest/concepts/unity-utilities-overview/

AndroidのPlayerSettingsを開いて、Other Settingsで、アプリのPackageNameを適当に変更。

Minimum APIは、マニュアルから見当たらなかったですが、Goと同じにしてみてます。

System and Hardware Requirements
https://developer.oculus.com/documentation/unity/latest/concepts/unity-mobile-performance-intro/
API Level 21 (Android 5.0) or later

Questだけで動けばよいので、一般的アプリと比べるとそこまで気にするところではないですかね。

このあたりは、Oculus全般の操作ですね。

Oculus Questを接続し、Android向けにビルドアンドランすると、インストールされます。

シーンの追加は忘れないように。

Oculus QuestとPCの最初の接続時、Quest側で表示されるダイアログで許可が必要です。


コントローラーを振り回せるだけのアプリが動いた!!やったあ。


インストールされたアプリは、Quest内の提供元不明のアプリに表示されます。こういった操作でインストールしたアプリの場合は、ここから実行ができます。

あとはクエリちゃんを配置するだけ!!

クエリちゃんモデル

Assetをインポートし、PQAssets->Query-Chan->PrefabsにあるQuery-ChanをHierarchyにドラッグ配置します。ついでにHierarchy右クリック->3D Objectsからいくつかなんとなく作成して配置。

Planeは全部0の位置です。

クエリちゃんはカメラと同じ方向を向いているので、180度回転させておきます。
浮かんでるモーションを使いたいので、ポジションのYを1に。立っている足元の位置が浮いてる中心になる感じなので。

QueryActionなC#スクリプトを作成して、空のGameObjectにくっつけます。
以下をコピペ。

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

public class QueryAction : MonoBehaviour
{
    // クエリちゃん設定
    public QueryAnimationController queryAnim = null;
    public QueryEmotionalController queryEmo = null;
    public QuerySoundController querySound = null;

    // Start is called before the first frame update
    void Start()
    {
        // 浮いてるアニメーション再生
        queryAnim.ChangeAnimation(QueryAnimationController.QueryChanAnimationType.FLY_IDLE);

        // フェイスの変更
        queryEmo.ChangeEmotion(QueryEmotionalController.QueryChanEmotionalType.FUN_EYEOPEN_MOUTHOPEN);
    }

}

HierarchyのQuery-Chanをドラッグして変数に設定。

カメラの位置は、ポジションY1.5、Z-0.4くらいにして、Unity上で実行すると目の前くらい。
自身が移動できるので、Zが0でもよいくらいです。

これで、Androidビルドアンドランです!Oculus Questで歩き回って見てみましょう(^¬^)

基本的なところ

開発上の操作、動作は、Goと同じです。
同じということは、Unity上で、ヘッドの動きやtouchコントローラーの動作は拾ってくれません。

Quest向けの開発という点では、Riftも持っていると、開発のしやすさは格段にあがりそうです。
Riftは、ヘッドトラッキングとtouchコントローラーの動きも、Unity上の実行に反映されるので。

Oculus Goの時に、結構ひとつのアプリを作り込みかけてましたが、途中で別のゲームアプリを作り出し、そちらをリリースまで作ってしまいました。まだVR向けのゲームアプリは作れていません。何か出したい!そのうち。

途中で止まってるもの
LostMikan作ってました(マスコットアプリのサイト)

リリースしたもの(普通のゲームアプリ)
Catch! for マスコットアプリ文化祭2018

Unity製ということで、とりあえずダウンロードしてくださいね!

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォロミー

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください