- 投稿日:2021-06-15T21:36:17+09:00
(Unity3D)パーティクルをUIの前に表示する方法
パーティクルを表示する際にUIの前面に表示するための方法をメモ version 2020.3.5f1 使用したアセット Cartoon FX Free FREE Stylized PBR Textures Pack 手順 1. Canvasを新規作成し、レイヤーが「UI」になっていることを確認 2. レンダーモードを「スクリーンスペース・カメラ」に変更 3. UI表示用カメラを新規作成し、1で作成したCanvasのレンダーカメラに設定 今回はメインカメラをコピーして作成 4. 3で作成したカメラからAudio Listenerを削除 5. UI表示用カメラのレイヤーを「UI」に変更 6. UI表示用カメラのクリアフラグを「深度のみ」に変更 7. UI表示用カメラのカリングマスクを「UI」に変更 8. UI表示用カメラの深度を元々あったカメラの深度より大きくする 9. UI要素をCanvas直下に作成し、UI用カメラにUI要素のみ映っていることを確認 10. パーティクルをUI表示用のCanvas直下に作成し、レイヤーを「UI」に変更 分かりやすさのためにスケールを100倍にしておく 11. パーティクルのレイヤー順序をUI要素より大きい値にする 色を調整して完成
- 投稿日:2021-06-15T16:01:47+09:00
$1-1「Ovrvision Pro(ステレオカメラ)のセットアップをして実際に動かしてみる」【ヘッドマウントディスプレイとUnityでVRとかARとかMRの開発をやってみる.】
はじめに VRの開発をしていく中で折角ならARも並行して開発しようと思い,高画質なステレオカメラであるOvrvision Proを触りながらメモしていきます.2021年6月現在の最新版を手探りで開発しているので間違い等があるかもしれませんが解説というよりメモ書きを読む感じでお願いします. 環境一覧 SteamVR 1.16.10 Unity 2020.1.17f1 SteamVR Plugin 2.7.3 Vive SRanipalRuntime Plugin 1.3.2.0 Ovrvision Pro SDK for Unity 2.0 追加アクセサリー VIVEトラッカー2018 Ovrvision Pro(ステレオカメラ) Leap Motion 使用PCスペック インテル® Core™ i7-7700K NVIDIA GeForce GTX 1070 環境作成編 #1 Unityのセットアップをする 2021年 1月更新 #2 プロジェクトを作ってみる 2021年 1月更新 #3 UnityでVR開発のための環境を整える(SteamVR Plugin2.7.Xをインストールする):推奨 2021年 5月更新 #3-おまけ UnityでVR開発のための環境を整える(SteamVR Pluginの最新版をインストールする):非推奨 2021年 2月更新 #4 SteamVRのダウングレードと自動アップデートの停止(上級者向け) 2021年 5月更新 コントローラの入力やトラッカー,HMDの位置座標,回転座標を得る+α #5 VIVEコントローラのボタン入力を取得する 2021年 2月更新 #6 トリガーの押し具合やトラックパッドの位置情報の入力を取得する 2021年 2月更新 #6-おまけ VIVEコントローラを使った開発をする時のおすすめ設定(独断と偏見) 2021年 5月更新 #7 ヘッドマウントディスプレイとコントローラの位置座標と回転を取得する 2021年 2月更新 #8 VIVEトラッカー2018を有効化してUnity上で位置座標と回転を取得 2021年 5月更新 #9 VIVEコントローラの振動機能を開発してみる 2021年 4月更新 VIVE Pro Eyeのアイトラッキングを使ってみる #10 VIVE Pro Eyeの視線トラッキングを有効化(セットアップ)する 2021年 4月更新 #11 VIVE Pro Eyeのアイトラッキングを使ってUnity上で瞬きや視線のデータを取得する 2021年 4月更新 #11-おまけ VIVE Pro Eyeのアイトラッキングで計測できるデータについて(適宜更新) 2021年 4月更新 VIVE Pro Eyeのカメラを使ってみる #12 VIVE Pro Eyeのフロントカメラの解像度(性能)とAR機能を有効化について 2021年 5月更新 小技 プレイエリアの境界線(シャペロン境界)が表示されないように設定を変更する 2021年 6月更新 Ovrvision Pro(ステレオカメラ)を使ってAR開発してみる $1-1 Ovrvision Pro(ステレオカメラ)のセットアップをして実際に動かしてみる(この記事)2021年 6月更新 今回の記事では, 1.Ovrvision Proの動作確認をしてみる. 2.キャリブレーションを行う. 3.Unity上で実際に動かしてみる. 3.ARマーカーを使ったサンプルプログラムを動かしてみる. という流れ. 1.Ovrvision Proの動作確認をしてみる. まずはヘッドマウントディスプレイ(VIVE pro eye)にOvrvision Proを貼り付けます.付属の両面テープは粘着力が強すぎて剥がす時に汚くなりそうなので養生テープで貼り付けました. まずはカメラの動作確認をするためにSDKをダウンロードしてきます. 公式ページにアクセスして"DEVELOPERS&SETUP"ページにアクセスします. 今回はUnityでの開発ですが,まずは"for Windows"をダウンロードします. とりあえずダウンロードしてきたものを解凍します. 解凍したovrvisionprosdk_windowsフォルダ内にある "\ovrvisionprosdk_windows\ovrvisionprosdk_windows\bin\x86"フォルダ内のovrvision_app_csharp.exeを起動します. こういう画面が開きます. 左上に画質選択画面があります. 画質を選択したら横の"Open Ovrvision Pro"を押すと画面が映り,"Close Ovrvision Pro"で画面が閉じます. 画質のいい映像を送る関係上挿す場所や延長ケーブルによっては動かないこともあるので一応最高画質が動くようなケーブルを使いましょう.自分の環境では2mの延長ケーブルなら問題なく動きましたが5mだとダメでした. 2.キャリブレーションを行う. 動作確認ができたら "\ovrvisionprosdk_windows\ovrvisionprosdk_windows\tool"フォルダ内のovrvision_calibration.exeを起動します. キャリブレーション用のアプリが起動するので"Open Ovrvision"を押します. 右上のモニターに映像が映っていれば問題なくカメラが動いています. カメラが問題なく動いていれば"Start Calibration"を押します. 定規で黒マスのサイズを測るように言われるのでモニタに定規を当ててサイズを測って入力します(モニタに傷がつきそうで怖い). サイズを入力したらキャリブレーションのやり方が説明されます. 説明通りマス目がすべてカメラに収まるように少しづつ動かしながら"Find Chessboard"を押して合計25枚の写真を撮ります. 25枚撮り終わると自動的に調整され"Setup in the ... OK!"と表示が出れば大丈夫です. 画面の反射等で結構キャリブレーションは失敗するので次の工程で変に映像が歪んでいたらキャリブレーションし直しましょう. 3.Unity上で実際に動かしてみる. ふただび公式ページのDEVELOPERS&SETUPにアクセスして""for Unity"をダウンロードします. ダウンロードしたSDKは解凍して分かりやすいとこに置いておきます. あらかじめSteamVR Plugin 2.7.3 を入れたUnityを開きます.この辺のやり方については #3 UnityでVR開発のための環境を整える(SteamVR Plugin2.7.Xをインストールする)を読んでください. Assets→Import Package→Custom Packageを押します. 先ほど解凍した"\ovrvision\ovrvisionprosdk_unity\ovrvisionprosdk_unity/unity2019_ovrvision.unitypackage"を開きます. 何を入れるのか聞かれるのでデフォルト設定のまま"Import"を押します. サンプルとして,インポートした"Ovrvision Pro/Demos"内のar_demoというサンプルシーンを開きます. シーン内にあるOvrvisionProCameraを選択すると,パラメータが色々割り振られています. 今回はとりあえず画質を900*900にしておきます. プログラムを動かすとこんな感じで動きます.もし片目しか映らない場合には次の$2-2の記事を試してみてください. 4.ARマーカーを使ったサンプルプログラムを動かしてみる. UnityのSDKの"\ovrvisionprosdk_unity2.0\marker_samples"フォルダにマーカーのサンプル画像があるのでこれを印刷します. こんな感じで印刷されます. さきほど開いた"Ovrvision Pro/Demos"内のar_demoというサンプルシーンにあるOvrvisionProCamera内のパラメーター内に Use the OvervisionAR:AR機能を有効 AR Maker size(meter):ARマーカのサイズ(m単位) というパラメータがあります.デフォルトでUse the OvervisionARにはチェックマークが入っており,AR Maker size(meter)にはサンプルで印刷したマーカーの0.15m(15cm)という値が入っています. また,マーカーを表示させるためのオブジェクトであるOvervisionTrackerを選択すると, Maker ID:何番のマーカーに反応するか Time To Disappear:マーカーを見つけてから何秒間表示するか のパラメーターが入っていますので適宜変更してください. さきほど印刷した64番のARマーカをOvervisionでみるとOvervisionTracker内にあるCubeが表示されます. こんな感じで実際にサンプルを動かしてみました. しかし,このままだと映像と現実にズレがあったり,VIVEコントローラーやUnity上のオブジェクトが自由に使えない状態なので,次回の記事ではもっとインタラクティブなMR空間を作れるようにOvervisionとSteamVR Pluginを組み合わせながら0からアプリを作っていきます.
- 投稿日:2021-06-15T11:49:45+09:00
Could not locate VRChat data directory for exception watcher. とかいうエラーがなんもわからん
初めまして、Mouleです。自分用メモとしてQitaはじめます。 VRChatやってたら「Could not locate VRChat data directory for exception watcher」とかいうエラーがマイフレームコンソールに出続けるようになってしまったのでそれについての記事です。 詳細は記事の後半に書きます。 なおGitを使ってる方は解決策3をおすすめします。 解決策1 これは根本的な解決にはならないので根本的に解決したい方は解決策2か3を使ってください。 エラーログを出している該当箇所、UdonSharpRuntimeLogWathcer.csの75行目 Debug.LogError("[UdonSharp] Could not locate VRChat data directory for exception watcher"); を、コメントアウトしてください。(コメントアウトって何って方は、上の行を削除して代わりに下のコードを貼り付けてください。) //Debug.LogError("[UdonSharp] Could not locate VRChat data directory for exception watcher"); これで、エラーを無視するようになります() 解決策2 プロジェクトを新しく作り直して、必要なものを全部移行しましょう。 めんどくさいので、可能なら解決策3を使いましょう。 またGitがわからないという方はこちらの記事をおすすめします。 【Git】【Unity】VRChatterのためのGit入門 解決策3 クローンし直しましょう。 (詳細にも書きますが、自分も原因を完全に理解しているわけではないので、治らなかったらすみません。) 詳細 この部分は、新しいことがわかり次第更新される予定です。 環境 MacBook Pro (15-inch, 2019) Unity2018.4.20f1 VRCSDK 2021.5.21.12.23 UdonSharp v0.19.11 エラーが出るようになったきっかけ デバッグのためにEditorでシーンを再生し、処理が重かったのかUnityがフリーズしてしまったので、Unityを強制的に落としたところこのエラーが出るようになりました。 余談ですが、Unityって結構シーン再生中に落としたりするとやばいエラーが発生することが多いです。 Gitで前後の状態を確認しても特に変更はないので、Editorとかのレベルで何かが変わってしまうみたいです。 つまり普段Gitで管理してる部分には何も異常がないので、クローンしなおせば大方治ります。(諸説あります) エラーの内容と検証 Could not locate VRChat data directory for exception watcher. 何かのディレクトリが無いって怒ってますね。 ログエラー周りのコードを見てみます。 ``` if (logDirectoryWatcher == null && ShouldListenForVRC()) { AssemblyReloadEvents.beforeAssemblyReload += CleanupLogWatcher; // Now setup the filesystem watcher string[] splitPath = Application.persistentDataPath.Split('/', '\\'); string VRCDataPath = string.Join("\\", splitPath.Take(splitPath.Length - 2)) + "\\VRChat\\VRChat"; if (Directory.Exists(VRCDataPath)) { logDirectoryWatcher = new FileSystemWatcher(VRCDataPath, "output_log_*.txt"); logDirectoryWatcher.IncludeSubdirectories = false; logDirectoryWatcher.NotifyFilter = NotifyFilters.LastWrite; logDirectoryWatcher.Changed += OnLogFileChanged; logDirectoryWatcher.InternalBufferSize = 1024; logDirectoryWatcher.EnableRaisingEvents = false; } else { //Debug.LogError("[UdonSharp] Could not locate VRChat data directory for exception watcher"); } } なにやら、VRCDataPathとやらにあるディレクトリを探してますね。 試しにこれを出力したら以下のパスが見れました。 \Users[ユーザー名]\Library\Application Support\VRChat\VRChat なので、その通りのパスのディレクトリを作ってみたのですが、エラーは変わらず表示され続けました。 わっかんね わかんなかったのと、別にエラーのままでいっかなって思ったのでコメントアウトしました、本当にすみません。 Gitで差分を見ても特に異常はなく、過去のコミットに戻ってもエラーは出続けてたので、クローンしなおせば流石に治ると思います(気が向いたら試します) あとがき このエラー文でググっても何も情報が出てこなかったので、将来の自分のために何もわからないまま記事を書きました。 わかる方がいたらぜひ教えてください。 情報が増えたら都度追記します。 読んで頂きありがとうございました。
- 投稿日:2021-06-15T11:39:39+09:00
unityで作成したVR空間をoculusに実装する方法-レーザーポインターでオブジェクトを選択する方法-
OculusとUnityの接続が無茶苦茶ハマる OculusとUnityの接続に関して、ネット上に数多くの屍が散見します。 その屍を乗り越えて、下のような実装を行ったので、今後の自分のためにもナレッジを残そうと思います。 完成したVR空間がこちら↓ Unityメモ24Oculus上にUnityで作成した空間を表現し、右手のコントローラーからボタンを操作する設定の実装。これはかなりハマった。成功してよかった〜。、ナレッジをQiitaにまとめよう。#protoout#もいせん pic.twitter.com/6aqwe4q8NT— Unity勉強中の整形外科医:北城雅照|医療者向けプログラミングスクール「もいせん」開校! (@teru3_kitashiro) June 15, 2021 一応公式ドキュメントも貼っておきますが、このドキュメントを乗り越えるのがムチャクチャ大変です。 どMの方は、どうぞ読みといてください。 開発環境 Oculusの初期設定 公式ドキュメントはこちら 1 Oculusアプリをスマホに入れ、Oculusの初期設定を行う この際に、facebookアカウントとリンクさせると、その後の設定がスムーズになります。 2 アプリからデバイスを選択し、その他の設定から開発者モードをオンにする これをオンにすることで、自分が作ったアプリをOculus上に上げることができます。 3 PCとOculusを接続し、PCとのデータのやりとりをOculu上で許可する この設定により、PCから作成したVR環境のデータをOculusに送信することができます。 Unityの初期設定 公式ドキュメントはこちら 1 プロジェクトの立ち上げ 2 ビルド設定を修正 「テクスチャ圧縮」をASTCに変更 「デバイスを実行」を一度refreshを押した後に、自分のデバイスが選択できるようになるので、自分のデバイスを選択 その後「Switch Platform」を選択 終了後、左下の「Player設定」を選択 3 Player設定を修正 企業名とプロダクト名を固有のものに設定 最低APIレベルを「Android 6.0」に設定 4 XRPlugin Managementのインストール インストールが完了すると下図のような設定になっていればOK 5 Oculus Integration(Oculus統合パッケージ)のインストルール *必ず上記の設定が終了してからOculus Integrationをインポートしてください!!! もう一度書きます! 必ず上記の設定を終了させてからOculus Integrationをインポートしてください。まじでハマります。 公式ドキュメントはこちら アセットストアで「Oculus Integration」と検索し、左下のOculusのマークのパッケージをUnityにインストール&インポート。 インポートを軽くするために、Avatar,LipSync,SampleFrameworkのチェックを外しておく。 インポート中にアップグレードを勧められるの、全て「yes」を選択。UnityがRestartされる。 VR環境の構築 1 OVRGazaPointerをprehab化する。 Sceneの中のUIを選択 Hierarchyの中のOVRGazaPointerをPrefabsの中にドラック&ドロップする。 2 OVRCameraRigの設定 1) 新しくSceneを作成し、Hierarchyの中に、prefabsからOVRCameraRigをドラック&ドロップする。 2) 元々あったMian Cameraは削除する。 3) OVRCameraRig/TrackingSpace/RightHandAnchor/RightControllerAnchorの下にPrefabsからOVRControllerPrefabをアタッチする。自動的にコントローラーとしてR Tracked Remoteが設定される。 3 uGUIを構成する 1 Canvasを作成 Canvasのインスペクターを以下のように設定する。 1)CanvasのRender Modeをスクリーンスペース・カメラに変更。 2)CanvasのEventCameraをOVRCameraRig/TrackingSpace/CenterEyeAnchorに設定。1)と2)よって常に正面にCanvasが設定されるようになる。 3)CanvasのGraphicRaycasterコンポーネントを削除。 4)CanvasにOculus/VR/Scripts/UtilのOVRRaycasterを追加。 5)OVRRaycasterのBlocking Objects欄を"すべて"に変更。 以下のようになればOK 2 OVRGazaPointerの設定 1)PrefabsからOVRGazaPointerをHierarchyにドラック&ドロップする。 作成したOVRGazePointerのRay Transform欄は、OVRCameraRig/TrackingSpace/RightHandAnchorを設定する。 3 EventSystemの設定 1)EventSystemからStandaloneInputModuleコンポーネントを削除 2)EventSystemのOculus/VR/Scripts/UtilのOVRInputModuleを追加 3)OVRInputModuleのRay TransformにOVRCameraRig/TrackingSpace/RightHandAnchorを設定 4)カーソルにOVRGazaPointerを設定 5)Joy Pad Click Keyにone(Aボタン),Two(Bボタン),Secondary Index Trigger(Triggerボタン)を設定し、作動するボタンを設定する。 以下のようになっていればOK 4 UI部品を設置 試しにボタンを設置する設定を記載します。 1)CanvasにButtonを設置。 2)AssetsにButtonAction.csを作成し、以下のスクリプトを追加。 ButtonAction.cs using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ButtonAction : MonoBehaviour { [SerializeField] Image image; public void OnClick() { image.color = Color.red; } } 3)Button ObjectにButtonAction.csを設定 4)クリック時のイベントにButtonAction.OnClickを設定 Build & Run 作成したVR空間をOculus上に表見するために、Build & Runを行います。 「デバイスを実行」は自身のデバイを選択してください。 完成したVR空間がこちら(再掲)↓ Unityメモ24Oculus上にUnityで作成した空間を表現し、右手のコントローラーからボタンを操作する設定の実装。これはかなりハマった。成功してよかった〜。、ナレッジをQiitaにまとめよう。#protoout#もいせん pic.twitter.com/6aqwe4q8NT— Unity勉強中の整形外科医:北城雅照|医療者向けプログラミングスクール「もいせん」開校! (@teru3_kitashiro) June 15, 2021
- 投稿日:2021-06-15T00:03:28+09:00
【小ネタ】DeleteTrack()した際のTimelineEditorの描画崩れを防ぐ方法
UnityでスクリプトからTimelineAssetのDeleteTrack()を行った際に、TimelineEditorの描画が崩れてしまう現象を防ぐ方法を記載します。 Timelineのエディタ拡張.csの一部 timelineAsset.DeleteTrack(track); TimelineEditor.Refresh(RefreshReason.ContentsAddedOrRemoved);//←これが無いとエディタ表示が崩れる ググったけど資料が少ないので書き留めておきます。 というかDeleteTrack()のページに書いておいてほしいなぁ。。 参考資料 Timeline.TimelineAsset-DeleteTrack - Unity スクリプトリファレンス Unable to use DeleteTrack properly - Unity Forum