パソコンのメモ

パソコンのメモ

初心者がUnityとVIVE(+オキュラスクエスト)で何かしようとした記録
自己めも的ナ何か

Amebaでブログを始めよう!

音の設定はココを参考にした。

 

 

一部だけ抜粋して使ってたら、音なんねー!とか3D音響なんねー!とかになった。

ちゃんと全部使ったらできました。

面倒くさがらずにちゃんと読まないとダメね(´・ω・`)

 

コントローラーの入力はココ

 

とか

 

とか。

 

でも二つ目のサンプルは動かなかったわぁ。

 

というか入力受け付けてるのかすら判断できない。

 

OVRCameraRig > TrackingSpace > RightHandAnchor > RightControllerAnchorにスクリプトアタッチしてたけど、

 

OVRCameraRigのみ配置してたのを、OVRPlayerControllerに変更してそっちにアタッチしたら入力は確認できた。上のサンプルは試してないけどねw

 

ソースを引用して切り貼りした結果、

 

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

public class PlaySound2 : MonoBehaviour
{
    // Start is called before the first frame update
    [SerializeField] AudioClip[] clips;
    [SerializeField] bool randomizePitch = true;
    [SerializeField] float pitchRange = 0.1f;

    protected AudioSource source;

    private void Awake()
    {
        // アタッチしたオーディオソースのうち1番目を使用する
        source = GetComponents<AudioSource>()[0];
    }
    void Update()
    {
        if (randomizePitch)
            source.pitch = 1.0f + Random.Range(-pitchRange, pitchRange);
        if (Input.GetMouseButtonUp(0))
        {
 //             source.PlayOneShot(clips[0]);
        }
        if (OVRInput.GetDown(OVRInput.Button.PrimaryThumbstickUp, OVRInput.Controller.LTouch))
        {
            source.PlayOneShot(clips[0]);
        }
        if (OVRInput.GetDown(OVRInput.Button.PrimaryThumbstickRight, OVRInput.Controller.LTouch))
        {
            source.PlayOneShot(clips[1]);
        }
        if (OVRInput.GetDown(OVRInput.Button.PrimaryThumbstickDown, OVRInput.Controller.LTouch))
        {
            source.PlayOneShot(clips[2]);
        }
        if (OVRInput.GetDown(OVRInput.Button.PrimaryThumbstickLeft, OVRInput.Controller.LTouch))
        {
            source.PlayOneShot(clips[3]);
        }
    }

}

こんな感じになった。使ってないのとかそのままだけど、とりあえず動いてるからこれでいいやw

 

いうことで、また最初からw

基本的にココ

 

 

を参考にした。

せっかくなので作業をメモ

 

①UnityHUbを起動。

新規作成で2020.1.0f1版で3Dプロジェクトを作る。

 

②Oculus Integrationをインポート。

https://framesynthesis.jp/tech/unity/oculusquest/の記載のとおり、全部入れるとクソ遅かったので、Oculus/VR以下のみにしてみる。

とかでてきたので「Yes」

すると

ときたので、「Restart」で、エディタ(勝手に)再起動。

 

③MMD4Mecanim(MMD4Mecanim.unitypackage)をプロジェクトに追加。20200105版。

Go Ahead!( ゚д゚)

バックアップは作ってないけどね。

 

④モデル紺野純子投入

基本的なやり方はMMD4Mecanimの取説通り。

D&Dのあと、紺野純子.MMD4Mecanimのインスペクターから規約同意をして、VMDにダンスを設定。

と思ったら、まだダンスを入れてなかったので、プロジェクトにvmdファイルと曲wavをD&D。

で、改めてVMDに今追加したvmdファイルを指定して、Processボタン。

DOS窓が動いてるけど結構時間かかる(´・ω・`)

おわった( ゚∀゚)

 

⑤ビルド設定。

先にやった方が良かったかもだけどw

プラットフォームをアンドロイドにして、「Switch Platform」。

SDK関係のモジュールは先に導入したのがそのまま生きてるので、オキュラスを繋いで電源を入れるとRunDevice(日本語にしたので「デバイスを実行します」になってる)に表示されるので選択。(1,2回ケーブル挿しなおしたけど。)

テクスチャ圧縮もASTCがいいとのことだったので上書きなしから変更。

この変更も前のプロジェクトでは30分くらいかかってたのが1-2分で終わったので、②のインポートの絞り込みはやったほうがいいね。

 

⑥プレイヤー設定。

ビルドセッティングの左下のボタンから。

>Player Settings… でGraphics APIsのVulkanを削除する

これ消してよかったのね。書かなかったけどこれ動かすためにえらく苦労したんだけどw

ということで削除。

>Player Settings… で、Minimum API Levelを「Android 6.0 ‘Marshmallow’ (API level 23)」に変更する

さっき失敗したところ。指示通り「API level 23」に。

>XR Settingsにある「Virtual Reality Supported」をチェックして、右下の+ボタンを押してOculusを追加する。もしくはUnity 2019.3以降のXR Plug-in Managementを使用する(追記予定)

2020.1版なので、XR Plug-in Managementをインストール。

 

これで準備は一通りおわり。

次はシーンの作成関係。

 

⑦シーン作成&実行

>Projectビューの Oculus/VR/Scenes/Room シーンを開いて、Build Settingsを開き、プロジェクト初期状態のSample Sceneを削除してAdd Open Scenesで入れ替えてください

Roomシーンを開いたら、サンプルシーンはなくなってた。プロジェクトにはあるので一応削除。

 

>Oculus Questを接続して、Build SettingsウィンドウでBuild and Runボタンを押し、適当な.apkファイル名を指定してビルド・実機に転送します。初回ビルド時にCompiling shader variantsでOVR Avatar関連の多数のシェーダーのビルドが走りますが、2度目以降はキャッシュされます。成功するとアプリが起動し、コントローラーのサムスティックで移動や回転ができます。

ここで気づいたんだけど、ビルドし実行で実機への転送もされるのね。SideQuestいらんかったわw

まだ、モデル配置してないけどとりあえずテストで指示通りやってみたところ、やはり闇の世界になっている。

むむ、なんだこれ。

前回の闇落ちのときにこういう記事

 

は見つけてたんだけど、Oculus Androidってのがパッケージマネージャーにもうないのよね。
どうもOculus XR Pluginに統合されたぽいんだけど・・、ということで色々みてみたら、
Oculusにチェックが入ってなかったのでチェック。これでいけるんじゃない?

と、思ったけど症状かわらず。

 

適当な音を付けたキューブを配置したけど、音の方向が感じられない。

 

原因はわからないけど、とりあえずシーンを作ってみることに。

純子とOVRCameRigを配置。初期のカメラは削除。

新規にAnimatorControllerを作成して、純子につける、と思ったらつけるとこなくなってるやん( ゚д゚)

どうすんだ?と思ったけど、純子のプレハブを選んでインスペークターにAnimatorControllerをD&Dでいけた。

で、AnimatorControllerを開いて、純子の中のvmdファイルをD&D。この辺りはVIVEのころと同じ。

あとはヒエラルキーを右クリでオーディオソースを設置して曲を設定。

これでUnity上では動作完了。何故かモーションの開始がえらく遅いので少し開始フレームを変更。

ここでOVRSeeneQuickPreviewなるものの存在に気づく。

APKの作成、転送や破棄が簡単にできるぽい。

これはテスト捗るわぁ。

でも、結局症状は変わらず。

 

⑧今までの知見を活かして、古いバージョンを引っ張り出してくる。2019.2版

Vulkanを削除して、XRセッティングからVRサポートをチェックして、オキュラスを追加。更にV2Signing(quest)もチェック。

テクスチャ圧縮もASTCに変更。

 

おー。片目しか映らないし、服についたラメみたいなのしか見えないけど、少しは何か動いている感じになったw

開始直後の一瞬はは普通に見えてる感じなんだけど。

 

そういえば、このバージョンは自分で入れたSDKを使ってたので、Unityから入れ直し。

症状は変わらない。

次はシーンを例のRoomシーンにしてビルドしてみる。

 

見えたよ( ゚д゚)

 

ビルド時の最後の方にUntitledっていうシーンが何故か処理されていたから、これがおかしいんじゃない?と疑ってたけど、関係なかったみたいwちなみにゲーム画面のアスペクト比も縦長に変えてたけど問題なかった。

 

ROOMに関して言えばやったことは同じだからシステム上の問題か?

純子がおかしいのはなんだろう?Roomシーンがちゃんと見えてる以上はシーンに問題があるということだと思うけど。

 

当初作ったシーンの方には、終了ボタン付けようと思ってCanvasとボタンをつけてたのでCanvasごと削除。

ライトの位置も真正面に変更。

やっぱり、変わらない。最初の一瞬だけは両眼にも映ってるんだけどなぁ。

 

そういえば、RoomシーンのカメラはOVRCameraRigじゃなくて、OVRPlayerControllerだった。

どこの解説見てもOVRCameraRig使ってたからそのまま使ってたけど。

一旦OVRCameraRigを不可視にしてOVRPlayerControllerを設置してビルド。

見えたー。

ちゃんと両目に表示されてるし、画面も明るくなってる。参考にモデルの横に置いた箱も表示されてる。

ゴルビーみたくなったのは当初表示されないときにシェーダーいじったせいかな?これもあとで調べよう。

元のOVRCameraRigは削除して、新規にOVRCameraRigを設置。OVRPlayerControllerを削除してビルド。

元に戻った( ゚д゚)

OVRPlayerControllerを設置して、初期位置のまま不可視に設定。

結果、

・視界はOVRPlayerControllerの位置と方向で開始。

(ビルド後確認したら不可視は消えてた。)

・後ろを向くと、モデルの踊っている方向が途中から真っ暗になってる。

CameraRigの視界の範囲が真っ暗なのかと思ったけれど、位置的にCameraRig少し手前から既に暗いように見える。

位置的にライトのせいかと思ってライトを削除したけど、夕暮れぽくなっただけで、暗いエリアは変わらず。

今度は純子のプレハブを削除してビルド。オーディオソースは純子につけてたので、箱の方につけなおし。でビルド。

いけたわ( ゚д゚)

どうもMMDモデルに問題があったらしい。ならOVRPlayerController削除してもいけるかも、ということで削除&ビルド。

うん、いけた。

純子を再配置すると同じ症状になる。なんとなく想像がついてきたけど、MMD4Mecanimで純子を変換しなおし。

時間がかかるので今回はVMDモーションはなし。

出来上がった純子をシーンに配置して、ビルド。

片目暗闇モード。

MMD4Mecanim(20200105)を入れなおす。で、純子も削除して入れ直しして、fbxに変換。今回もVMDなし。

よしきたー( ゚∀゚)

MMD4Mecanimが古いやつ(20160904)が入ってたらしい。PC以外の出力に対応してないのが原因だと思う。多分ねw

改めて、VMDをつけて再変換。アニメータコントローラーを付けて、再度ビルド。

ヽ(´▽`)ノ

なんとか無事踊ってくれたけど、リップシンクができてない。ココに良さげな記事があったのでそのうち試してみよう。

 

結局、Unity 2020.1.0f1版がダメだった理由は全く不明。

こちらの暗い理由はMMD4Mecanimみたいだけど、向こうはRoomシーンも真っ暗だったしなぁ。


おわり

うやく、APKができたので、SIDEQUESTから、オキュラスへインストールしようとするも、

A task failed. Check the tasks screen for more info. OculusMmdJunko.armeabi-v7a.apk: : INSTALL_FAILED_OLDER_SDK: Failed parse during installPackageLI: /data/app/vmdl1115272604.tmp/base.apk (at Binary XML file line #9): Requires newer sdk version #26 (current version is #25)
むむ、SDKのバージョンが古いのか?

最低APIレベルを適当にAndroid8.0に設定したのが良くなかったらしい。

Android7.0(API level 24)にしたらインストールできた。

よく見たら参考にしたこのサイトにも書いてあった。

https://framesynthesis.jp/tech/unity/oculusquest/

「Android 6.0 ‘Marshmallow’ (API level 23)」の方がいいらしいけど。

 

で、いよいよ起動。

曲はながれるものの、画面は真っ暗。

境界外の識別はされているもののやはり真っ暗。

つか、踊る以外の機能ないからメニューもでないし終了もできないw

しかたないので電源ボタンで強制終了w

 

もう一度、サイトの情報をよく読む。

 

>Build SettingsのTexture Compression(テクスチャの圧縮方式)をASTCに変更する

した。

 

>Projectビューの Oculus/VR/Scenes/Room シーンを開いて、Build Settingsを開き、プロジェクト初期状態のSample Sceneを削除してAdd Open Scenesで入れ替えてください。

 

む!これじゃない?

つかもうこれ最初から作った方が速そうだわ。

 

つづく

キュラスクエストを買ったので早速踊らせてみる。

 

といっても前回VIVEでやったのは既に数年前。

色々と変わっていてえらく苦労したのでメモ記録。

 

まず、必須のMMD4Mecanimだけど、少し仕様が変わったらしい。

 

ドキュメントによると

>公開バージョンでは、Unity から apk をビルドした際に接続していた端末でのみ動作するようにロックをしています。

 

やべぇ、何言ってるかわかんね。よく考えたらアンドロイド用でビルドしたことなかったわ。

とりあえず、やってみることに。

 

まずは普通のスマホ用に作ってみる。やり方はほぼVIVEのときと同じなんだけど、問題がいくつか発生。

まず、モデルが灰色のままになってる。フィギュアのサーフェイサーだけ塗ったみたいな感じ。

よくあるトラブルだと思うんだけどもう覚えてないw

 

手持ちのモデルも古いしなぁ(´・ω・`)

調べてたらゾンサガの純子モデルが売ってた。ISAO氏製ということなので即買ったw

ちょうどいいのでこれを使ってみたら普通にいけた。

 

で、とりあえず、エディターでの動作は確認できたのでスマホを繋いでビルド。

確かに、MMDモデルのみ表示されない。

 

>apk をビルドした際に接続していた端末

ってのが何をさしてるのかわからない。Windowsではスマホ認識してるけどなぁ。

よく見たら。、ビルドのところにRun Deviceってのがある。

デフォルトのままでやってたんだけど、選択してみるとここにスマホが表示されてた。

 

再度ビルドして、スマホにインストール。

お、でたでた。

 

今度はいよいよオキュラスクエスト用にビルド。

このサイトを参考に↓

https://framesynthesis.jp/tech/unity/oculusquest/

 

とりあえず、Unity Integrationが必要らしいので、ストアからダウンロードしていれる。

で、ビルドしようとしたらうまく動かない。

(あとで分かったことだけどVulkanがらみの問題だったらしい。)

仕方ないので、Unityのバージョンを2020.1にする。

 

うわー、アイコンとかえらく変わってない?( ゚д゚)

MMD4Mecanimとかは普通に動いたので、とりあえず同じ感じで進める。

RunDeviceの設定が選べなかったんだけど、SDK類をセットしろとPOPアップででてきた。

既に導入済みのSDK類のディレクトリを設定。何か△マークのままだけどそのまま進める。

で、ビルドしようとしたら、エラー音。やはりSDKまわりがおかしいらしい。

SDKとJDKは何とかしたけど、NDKが特定のバージョンが必要らしいんだけど、既にネットにない(´・ω・`)

で、調べたところ、

https://matome.naver.jp/odai/2155401041241132801

2020.1では、アンドロイドスタジオとか入れなくてもUnity側で入れられるらしい。

で、ここ↓の方法

https://qiita.com/matchyy/items/6bf39780d4e993247697

で、SDK類を追加。「モジュールを加える」メニューを見つけるのに苦労したけど。

 

RunDeviceも選べるようになったのでオキュラス用でビルド。

ようやくAPKができました。

 

つづく