プレイ中のゲームや気になるゲームとか

【Oculus Quest】なぜかキャラが消える!PC上のUnityでは表示されるが、実機では表示されない理由が分かった!

2019.09.14(投稿日:2019.07.21)

2 comments

 
Oculus QuestでUnityをやりはじめて、ずっと気になっていることがあります。
 
それは「パソコン上のUnityではキャラクターが表示されるが、実機では表示されない場合がある」ということ。この現象は、3Dモデルのキャラだけで発生するようで、Cubeや他のアセットが消えた事はありません。
 
しかも、購入当初から一週間程度は頻発してましたが、それ以降はまったく発生していません。
起きる時は起きる、起きない時はまったく起きない、という微妙な再現度。
 
ビルドしてインストールするたびに「今回はちゃんと表示されるか?」と心配するのもイヤですので、これまでに起きた事を含めて調べて見ました。
 
確信はありませんが、なんとなく理由が分かりましたよ!
 



キャラだけが消える!

まずは、起きた現象を確認します。
 
残念?ながら、最近は起きていませんので、再現するために他の方の環境で試してもらいました。
 
その環境では運よく発生したので、キャプチャーを取って頂いたのがこれです。
キャラクターが消えてますね。
 
少し分かりにくいですが「IK操作用の半透明の球」のある位置に、別記事でも使った「アリシア・ソリッド」を配置しています。
 
この状態でいろいろ試したところ、手元から出ているレーザーポインターには反応しているようで、空中でレーザーが遮断されていました。キャラクターそのものが消えているワケではなく、描画だけがされていない?ような感じです。
 

シェーダーが表示されてない?

ちなみに先ほどの画像では、「Runtime Inspector & Hierarchy」というアセットを使ってます。
画像右側にある灰色のパネルですね。
 
実機(Oculus Quest)内のUnityのパラメータがリアルタイムで確認できるらしい。今回の調査にはちょうど良いですね。
 
このツールで確認したところ、シェーダーを管理していると思われる「skinnedMeshRenderer」にはチェックが入っていました。表示されていないので、入ってないと思ったんですが。。。
 
念のため、チェック状態をオン・オフにしても表示されません。残念。
 

どんな時に発生する?

記事の最初で「最近は起きてない」と書いてますが、購入当初は本当に頻繁に起きてました。
購入した日にも発生した記憶があります。
 
しかも、
(1) Unityをビルドして、Oculus Questにインストールする →消えた!
(2) 何も設定を変更せず、再ビルドして再インストールする →表示された!
ということもあり、わけが分かりません。
 
設定か何かがおかしいのであれば、常に消えるか・常に表示されるかのどちらかのはず。
 
 
当時、キャラクターを多く配置した時に良く発生していたので「Oculus Questでは、ポリゴン数が一定数を超えると、処理落ちではなくキャラクターが消える仕様」と思い込んでいた時もありました。けど、起きなくなった今の環境では、かなり重いモデルを配置しても、処理落ちはしますが、消えることなく表示できています。普通はそうですよね。
 
そもそも、「アリシア・ソリッド」は公式サイトから配布されていて、VRモデルのお手本となるような作りのはず。
このキャラでも消えるということは、私の環境の何かが問題なのは間違いなさそうです。
 


似ているがちょっと違う

更にネットで調べてみると、少し現象は違いますが、キャラクターの一部が消えた方がおられました。
 
念のため、キャラクターのメッシュの位置を確認してみますが、問題なさそう。
Update When Offscreenもなぜか最初からONになってました。
 
これでも無さそうです。
 

新規プロジェクトで再現した!

いま使ってるプロジェクトは、Unityをやり始めた時に作ったもの。
 
あれから、アセットやMMDモデル・ツールなどをたくさんインポートしてるので、もしかしたら環境がおかしいのかも知れません。
 
ということで、Unity Hubから新規プロジェクトを作成し、最低限必要なツールだけの状態にしてみます。「MMD4Mecanim_Beta_20180523」とかですね。
 
この状態でMMDモデル(アリシア・ソリッド)をインポートし、比較対象として床とCubeだけでビルド。
 
実機にインストールしてみると、キャラクターが消えました
やっと消えてくれました。再現すれば調査できますので。
 
 
本格的に調査しようとする前に、なんとなく何も設定変更しないでビルド→インストールしてみました。
すると、
今度は表示された!! OH…
これ以降は、何回ビルドしても消えることはありませんでした。
 
 
プロジェクトを新規作成するところからやり直してみても、やはり初回だけ同じ現象が発生します。
理由は分かりませんが、私の環境では「初回ビルドだけキャラが消える」ようです。
 
とはいえ、初回だけなら特に問題はなさそうです。
 

理由が分かった!?

諦めかけていたところ、自分の実機で試してくれた知り合いがほぼ答えが書いてあるサイトを教えてくれました。
 
現象が完全に同じ!
そういえば、Oculus QuestもAndroidでしたね。
 
そんな目で、MMD4Mecanimの「Readme_jp.txt」を読むとこんなことが書いてありました。
 
■ Android サポートについての補足
 
公開バージョンでは、Unity から apk をビルドした際に接続していた端末でのみ動作するようにロックをしています。
この制限は、著作者・権利者に無断で Google Play にビルドをアップしたり、または Dropbox などでの共有を防ぐための措置です。

また、この制限を意図的に解除したり、そのノウハウを共有しないでください。
※もし、著作者及び権利者ご本人で、何らかの事情でこの制限を解除したい場合は、ご相談ください。
 
最初に読んでいたつもりでしたが、ロックという現象が良く理解できていなかったようです。
どうやら、キャラクターが消える現象が「ロック」らしい。
 


誤作動したのかも

となると、なぜ自分の端末(Oculus Quest)でも発生したか?が疑問として残ります。
 
あまり関係無いかも知れませんが、一つ考えられるのがネットワークです。
 
Unityをやりはじめた当初、PCとOculus QuestのWi-Fiが安定しておらず、接続が勝手に切れたりすることが頻繁に起きていました。Oculus QuestへのapkファイルはWi-Fi経由でインストールしていたので、もしかしたら、ネットワークが不安定な状態でビルドやインストールなどを行ったので、ロック機能が誤作動したのかも知れません。
 
先日、Wi-Fiルータ買い替え+ネットワークドライバ更新を行ったんですが、それ以降、接続が安定してからは発生してませんので、無関係ではないかも知れませんね。
 

まとめ

パソコン上のUnityではキャラクターが表示されるが、実機上では表示されない現象が気になっていました。
 
明確な理由は不明ですが、MMD4Mecanimのロック機能が作動していたようです。
 
いまは発生していないので困ってなかったんですが、なんとなくでも理由が分かったのでスッキリしました。
これで安心して、ビルド→インストールできますよ!
 
スポンサーリンク

コメント

  • トラックバックは利用できません。

  • コメント (2)

    • hiro
    • 2019年 8月 22日

    自分も同じ悩みを抱えていたので、情報ありがとうございます!

      • だーしゅ
      • 2019年 8月 22日

      hiroさん、コメントありがとうございます。

      同じだったようですね。
      この現象が起きた時、最初はまったく原因が分からなくて困りました。。。
      不具合かと思いましたよ。
      ちゃんと理由があって良かったです。

【Oculus Quest】Unityのビルドが遅い!USB接続が面倒!な時にやったこと

【Oculus Quest】コントローラがおかしくなったのはシステムアップデートが原因でした!


最近のコメント

だーしゅ
IT関係のお仕事してます。
Oculus Quest+Unityが楽しい!

[当ブログについて]