Meta Quest2用のUnityのVRゲームを開発できる環境を作るまでにつまづいた点

基本的に、以下の環境を構築すると開発できるようになった。
①まずは以下のURLを参考にQuest2へapkファイルを転送できるようにする。
https://www.code-mogu.com/2020/12/11/oculus-quest2-unity/ ②次に、以下のURLを参考にUnityのVRテンプレートのプロジェクトをビルドしてapkファイルをQuest2へ転送して動くことを確認する。
https://sheltie-garage.xyz/tech/2022/05/unity-vr%E3%81%A7htc-vive%E3%80%81oculus-quest2%E4%B8%A1%E5%AF%BE%E5%BF%9C%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B/

手順通りにやればできたのだが、色々分かりにくいところがあってつまづいたので、以下にメモしておいた。
■コマンドプロンプトでADBコマンドを使えるようにできなかった
 この原因として、私の凡ミスだったのだが、環境変数をWindowsのシステム設定で変更するのだが、Pathのところに追加したはずが、なぜか消えていた。(おそらく確定できていなかったのだろう。)ちゃんとPathに入っていたら、ADBコマンドが使えるようになった。

■Oculus Quest2を開発者モードにする
 Oculusアプリをインストールして、左上の「設定」タブ→「一般」タブを選択して、「開発元不明」をONにする必要がある。ここがなかなか見つけられなかった。
開発元不明のON
■ヘッドセット側も開発者モードの設定をしなくてはいけない
 この設定は、スマホで「Meta Quest」アプリをインストールして、このアプリ内でQuest2を認識させてから、その「デバイスの管理」→「ヘッドセットの設定」→「開発者モード」を選択することでONできる。つまり、スマホで設定しないといけない。

■SideQuestは「Advanced Installer」を選択
 Easy InstallerとAdvanced Installerがあるようだが、Advanced Installerのほうがわかりやすかった。多分Easyのほうでもいいのかもしれないが、よく使い方が分からなかった。
ダウンロードページ
■Quest2用のVRのプロジェクトにはどのテンプレートやSDKを使えばいいのかわからなかった。
 以下の3種類がぱっと思いつく。
 ①SteamVR Plugin
 
SteamVR Plugin
 ②Oculus Integration
 

 ③UnityのVR テンプレート 
 
UnityのVRテンプレート
全て試したわけではないが、開発していくのであれば、③のUnityのVRテンプレートがいいのではないかと思った。
①のSteamVR PluginはWindowsPC内でVRゲームを作るのであればいいと思うが、apkファイルにしてQuest2に入れてもVRとして動かなかったので、Quest2のスタンドアロン型VRゲームができないのではないかと思う。
②は試していないのでわからない。(何となくVIVEとQuest2の両対応できそうな気がする)
③は両対応ができることを確認した。

■Window用であればプラットフォームをPCでビルド、Quest用であればAndroidでビルド
 これは当然だが念のため。

■SteamVR Pluginで開発する場合は、SteamVRを起動させないといけない。
 Unityプロジェクトを再生すると勝手に起動するかもしれないが念のため。
 
SteamVR 起動中
■UnityのVRテンプレートで開発する場合は、SteamVRは不要なようだ。
 UnityのVRテンプレートを動かしたときはSteamVRは起動していなかったので、SteamVRを経由していないようだった。

■開発中にQuest2を使って動作確認する場合
 まず、Quest2とPCをUSBケーブルで接続する。(同一LAN内ならOculus Air Linkでもいけるのかも)
 Quest2内で「Oculus Link」(もしくはOculus Air Link)を起動して、PCとQuest2をリンクしておかないといけない。

とりあえず、開発の準備はできた感じ!!
 

Unity Asset StoreでEasy Saveを買ってみたぁ!!

Unity Asset StoreでBLACK FRIDAYをやっていたので、思わず前から気になっていたEasy Saveを買ってしまった!
Easy Save

とりあえず、便利らしいのでまずは使い方を学んでいきたい!!
使い方を学ぶために備忘録的にこのブログでまとめておこうかなぁ。

ちなみにBLACK FRIDAYのセールはまだやっているみたいなので、便利なアセットを安く買えるチャンスかもしれません!
https://assetstore.unity.com/?locale=ja-JP

Unityをコマンドラインでビルドするためのバッチファイルの内容を忘れないようにメモ!!

いつも、Unityをコマンドラインでビルドする方法を忘れてしまうので、備忘録的にメモしておいた!!
つまり、バッチファイルから、エディタ拡張スクリプト内の「Build()」関数を呼び出している感じです。

ビルドのプラットフォームは「WebGL」にしています。

バッチファイル側(autobuild.batファイル)
rem このバッチファイルの相対パスへ移動
pushd "%~dp0"

"C:\Program Files\Unity\Hub\Editor\2019.4.16f1\Editor\Unity.exe" ^
-batchmode -quit -logFile log.txt ^
-buildTarget WebGL ^
-projectPath UnityProject ^
-executeMethod CommandLineFunc.Build ^
-outputPath WebBuild ^
rem -development

rem このバッチの相対パスから撤収
popd
Unityプロジェクト内のエディタ拡張のスクリプト内(CommandLineFunc.cs)
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using System.IO;
using System;

public class CommandLineFunc
{
    /// <summary>
    /// ビルド実行
    /// </summary>
    public static void Build()
    {
        var output = "";
        bool isDevelopment = false;
        var args = System.Environment.GetCommandLineArgs();
        for (int i = 0; i < args.Length; i++)
        {
            switch (args[i])
            {
                case "-outputPath":
                    output = args[i + 1];   //出力先の設定
                    break;
                case "-development":
                    isDevelopment = true;   //Developmentビルドにする
                    break;
                default:
                    break;
            }
        }

        var option = new BuildPlayerOptions();
        option.locationPathName = output;
        if(isDevelopment)
        {
            //optionsはビットフラグなので、|で追加していくことができる
            option.options = BuildOptions.Development | BuildOptions.AllowDebugging;
        }
        option.target = BuildTarget.WebGL; //ビルドターゲットを設定. 今回はWebGL
        var result = BuildPipeline.BuildPlayer(option);
        if(result.summary.result == UnityEditor.Build.Reporting.BuildResult.Succeeded)
        {
            // ビルド成功処理
        }
        else
        {
            // ビルド失敗処理
        }
    }
}

Unityの新たな利用法として、イラストに使ってみた!!

先日、邪神ちゃんドロップキックイラストコンテスト3というイベントがあり、そこへ投稿するイラストを描いてみました!

ストリートファイターVが好きなので、ゆりねのアパートの前を舞台としたストV風のバトルシーンを描きたいと思ったのですが、とても背景まで描きこむスキルもないので、今回は新たな試みとして、Unityを使って背景を3Dモデルで表現することにしました。キャラクターやストVのUI的なものは、イラストとしてUnity内で取り込み、背景を3DモデルとしてUnity内で3D空間内に配置しています。
ちなみに、3DモデルはBlenderで制作していますが、それほど複雑な形状は無かったので、イラストを描くよりは格段に速く作ることができました。

結果として、意外にイラストと自然にマッチしていてよかったです!!
今後も何かイラスト作成する機会があったら使ってみたいと思います。

以下のイラストは、キャラクター部分を除いたUnityの制作画面です。
上がシーンビューで、下が出力用のゲームビューです。
Unityでイラスト制作

UnityのStandard Assets内にあるスクリプト内で自作したスクリプトの変数が読み込めない原因がわかった!!

てゆーか今まで知らなかったのがまずかったのだが、「Standard Assets」フォルダは特別がフォルダらしく、いわゆる「Resouces」フォルダや「Editor」フォルダみたいな感じの扱いらしい。そして、「Standard Assets」フォルダ内にあるスクリプトは、自作したスクリプトよりも先にコンパイルされるらしく、そうすると、「Standard Assets」フォルダ内にあるスクリプトを編集して、自作したスクリプトの変数などを参照した場合は、コンパイル順が早いため、自作したスクリプトの変数がまだ存在しないからエラーになってしまっていたようだ。

私は、「FirstPersonCharactor」と「ThirdPersonCharactor」のプレハブを使いたかったので、これらのプレハブで使われていたスクリプトを編集したかったのだが、今までこのエラーの原因が分からずにずっと諦めていました。。。
結局、対策としては、「Standard Assets」というフォルダ名にしなければいいわけなので、何か適当な「Standard Assets Test」などのように別のフォルダに変更してあげるだけでよかった!!

アバターを一から作成してみての手順をまとめてみた!!

とりあえず、備忘録的に手順だけまとめてみました。
一つ一つの作業が重かったので、結局全て完成するまで多分500時間くらいかかった気がする(;´Д`)
モデラーの方のすごさを身に染みて感じることができたぁ!!
ちなみに、Virtual Marketに出展するように作ったので、VRChatに関する作業も中に入っています。

【手順】
⓪下絵を描く
①モデルのポリゴン作成 (左右対称ミラーで作ること!!)
  ・作成手順は以下
    頭
    体
    手
    目とまつげ
    髪
    ケモ耳としっぽ
    服
    靴と装飾
    口の中
②ボーン作成
③ウェイトペイント
④VRChatでアバター動作確認
⑤UV展開
⑥テクスチャ作成
⑦シェイプキー作成
⑧ダイナミックボーン設定(もし付ける場合)
⓽アニメーションオーバーライドで表情を割り当て(VRC Avatar Discripter)
⑩クロス設定(もし付ける場合)
⑪アバターをBOOTHで配布準備
⑫VRM対応(必要ならば)

TextMeshProで全日本語対応するとアセット容量が大きすぎて使いにくい!!

結局、全日本語を対応させると、TextMeshProのアセットにすべての日本語が梱包されるようなので、ものすごい容量になってしまう!

ほとんどの日本語は使っていないので、要らない漢字などは全部取り除いて、アセットを作り直したいのだが、そもそもどの日本語がゲーム内で使われているのかわからないので困ってしまった。

そして、色々考えた結果、「プロジェクト内で使用している文字列だけをリストアップしてくれる」エディタ拡張があったので、これを使うことにした!

自分の作っているゲームでは、テキストデータは全てJsonファイルでAssetsフォルダ内に置いていたので、このエディタ拡張でAssetsフォルダ内で使っている日本語だけ抽出してTextMeshProのアセットを作れば、かなり容量削減ができた!!

使わせていただいたエディタ拡張「UsedCharEnumerator」は以下のURLをご参照ください。
https://www.hanachiru-blog.com/entry/2021/05/27/120000

WordPressのテーマを更新したら、テーマのheader.phpに貼り付けたGoogleのコードが消えたっぽい!!

どうやら、WordPressでテーマを更新したら、各テーマのheader.phpに手動で貼り付けたGoogle AnalyticsとGoogle Adsenseのコードが消えてしまったようだ!!
まあ、テーマを更新したから当然なのかもしれない。

専門の方からしたら、「何当たり前のこと言っているんだ?」という感じなのかもしれないが、自分はWordPressもよくわからず使っているレベルなので、かなりびっくりしてしまった( ゚Д゚)

とりあえず、もう一度header.php内でコードを手動で貼り付けなおしたら、一応今までと同じように動くことが確認できた。よかった!

しかし、毎回テーマの更新が起こるたびにこの作業をやるのもちょっとめんどくさいなぁ。

Valveから税金に関する更新のお知らせが来た!!

よくわからんが、メールでValveから「TAX FORM RENEWAL」というお知らせが来た。
どうやら、SteamWorksで税務情報の更新が要るらしい。
とりあえず、ダッシュボードを表示して、右下にある「会社情報の確認と編集」をクリックすると編集できるようだ。
クリックすると、色々な情報が載っているが、一番下に、税金情報というのがあるので、ここの「税金情報の変更」をクリックすると、変更できる。

ちなみに、インタビューみたいな感じで、入力や選択をしていかないといけない。そして、これが結構長くて、すべて英語のため、10分程度で終わると書いてあったが、結局30分ぐらいかかった!
最後に、TINを入力しろとあったが、日本で言う「マイナンバー」のことらしい。なんかあまり書きたくなかったが、一応入れておいた。

GoogleアナリティクスをGA4というのに変更した!

よくわからんが、Googelアナリティクスが変更しろと言っているので変更した!
今までのをUAというらしいが、これは今後廃止されるらしいので、早めに設定変更しておいた。
やり方があっているのかわからないが、以下のサイトを参考に自分なりに設定してみた。
https://webdesign-trends.net/entry/12814

しかし、グーグルタグマネージャというのがさっぱり何をやっているのかわからなかった。
どうやら、Googleアナリティクスのタグを直接サイトのheader.phpにコピペするのではなく、このタグマネージャのタグをコピペすると、色々面倒くさいことが解消されるらしいので、使ってみた。

とりあえず、設定は全部終わったのだが、果たしてちゃんと設定できているのかすごく疑問である。
© 2024 Husky Studios, All rights reserved.