1. ホーム
  2. Web プログラミング
  3. 関連情報

Unity開発VRプロジェクト問題概要分析

2022-01-17 06:05:06

I. StreamVRの問題点。

1. プロジェクト実行時にハンドルコントローラーが表示されない。

このとき、ヘッドセットで「ボタンプロファイルをロードできません」と表示されるので、このときはスチームを直接開いてください(steamVRではありませんよ)。

2. キーストロークの動きを重複して検出する問題。

この問題は、キーリフトやキー押下の検出がしばしば2回トリガーされるなど、プラグイン自体の問題であるべきで、現在の解決策は、押されたときに真、持ち上げられたときに偽となるBool値を設定することです

If (TrigerAction.GetStateDown(SteamVR_Input_Sources.RightHand))
        {
            if (!rightTriger)
            {
                rightTriger = true;
            }
        }
 
        if (TrigerAction.GetStateUp(SteamVR_Input_Sources.RightHand))
        {
            if (rightTriger)
            {
               rightTriger = false;
            }
        }

3. OpenVR Init時のエラー。Init_InterfaceNotFound.

この問題はSteamVRとOpenCV(バージョン1.0.0)の互換性の問題のはずで、Steam経由で直接SteamVRをアップデートすれば(私のほうは1.15.19にアップデート)それ以降は問題ないです〜。

4.[SteamVR]インターフェイスが見つかりません(105)。

この問題はやはりSteamVRのバージョンの問題で、少なくともSteamVR 1.15.19では、この問題が発生するとジョイスティックが表示されなくなります

http://steamcommunity.com/app/250820/discussions/0/133259227526422836/

この問題は、以下のようにベータ版にアップデートすることで解決します。現在、この問題を修正したバージョン1.16.4にアップデートしています。

5. 以前にSteamVRのローカルファイルを誤って削除した場合、SteamVRをアップデートする

以下の手順で、SteamVRを再インストールすることができます。

II. ユニティの問題

1. レイがUIの上にあるかどうかを検出する(モデルとUIが干渉するのを避けるために使用する)

このメソッドはFixedUpdateで使用すると信頼性が高く、Updateで検出すると、webglプラットフォームがある時間には検出できないことに注意してください。

void FixedUpdate()
{
    //The ray is on top of the UI
#if ! (UNITY_EDITOR||UNITY_STANDALONE )
        if (Input.touchCount <= 0)
            return;
#endif
#endif ! (UNITY_EDITOR||UNITY_STANDALONE )
        if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
#else
        if (EventSystem.current.IsPointerOverGameObject())
#endif
            return;
    // Trigger the following function when the ray is not on the UI
    ---
}

2. VS2019 デバッグunityプロジェクト。

上部メニューバーの "Debug" -> "Attach to Unity Debugger" を選択します。

3. Unity がプロジェクトを読み込むと、"package manager error" が表示されます。

  • 1ファイアウォールをオフにして(ホワイトリストの設定は無意味です)パソコンを再起動すれば解決し、unityプロジェクトを開いた後に再度ファイアウォールをオンにすればよいでしょう。
  • ネットワークから切断し、コンピュータを再起動してオフラインモードでunityを開き、再度ネットワークに接続することができます。

4. ライトベーキングの問題

①指向性直射光も焼成に使用できますが、グローバルな光であり、屋内の焼成に使用すると、部屋の壁に遮られ、焼成した部屋はある程度明るくなりますが、ライブライトを消すと部屋の中の可動物は全て黒(無光)になってしまいます。

ポイントライトやスポットライトで部屋をできるだけ明るく焼き、マッピングの明るさで光の明るさを調整します。

5. オブジェクトの回転の問題。

eulerAnglesによるオブジェクトの回転はジンバルロックになりますが、Quaternionで直接座標を計算するのは面倒なので、QuaternionでeulerAnglesをQuaternionに変換すれば解決します。

Quaternion _angle = Quaternion.Euler(new Vector3(0,45,0));
transform.rotation = _angle;

6. UGUI でイベント(例:ボタンクリック)をトリガーできない。

UIコントロールが配置されているCanvasのEventCameraが空であるかどうかに注意してください。なぜなら、イベントはカメラからの光線に基づいてトリガーされ、それが空でない場合、このCanvas下のすべてのUIコントロールはこのカメラに基づいてイベントをトリガーするからです。