memomem

備忘録・メモ置き場

OpenXRでViveTrackerをつかう

zenn.dev

このページよりHTCViveTrackerProfile.csをダウンロード

Unityのプロジェクトに入れ、

Edit > Project Settings > XR Plug-in Management > OpenXR > Interaction Profiles の「+」を押し HTC Vive Tracker Profile をInteraction Profilesに追加。

SteamVRのトラッカーの管理で役割を設定

Input Actions AssetにActionをバインド

Tracked Pose Driver (Input System)のReferenceに上記アクションを設定

Input Actions Assetはスクリプトから有効にする必要必要があるので、

inputActionAsset.Enable();

をどこかで呼び出す。

Quest LinkでViveTrackerを使う

steamvr.vrsettingsの中の

"steamvr" : {}の中に以下を追加

"activateMultipleDrivers" : true,
"forcedDriver" : "null",

参考

tech.framesynthesis.co.jp

↓ InputActionについて nekojara.city

Meta Quest メモ

Quest本体の

「設定」>「システム」>「開発者」>「カスタム設定を有効にする」

開発者設定

境界線 を「オフ」

  • ホーム画面ではパススルーが無効になる。
  • アプリでパススルー有効であれば、パススルーは表示される。
  • エリア外に出ても警告などない。
  • 視点の高さはおよそ170cm位置で始まる?

LED Stripで1番目のLEDの色が正常に表示されない

GROVE - WS2813搭載防水RGB LEDテープ1m(60LED)www.switch-science.com

WS2813搭載RGB LEDをAdafruit_NeoPixelを使用して制御しようとすると、1番目のLEDの色が正常に表示されない。

github.com

上記に、
WiFi.disconnect();wifiをオフにする。
pixels.show();を2回使用する。
など解決策が記載されているが、自分の環境では治らず。

FastLEDでの制御では問題なく制御できるが、RGBのみの対応となる。

FastLED_NeoPixelでも問題なく制御できる。こちらはRGBWにも対応し、Adafruit_NeoPixelに近い使用感で使える。

github.com

Addressableで別プロジェクトからシーンをロードする

マップ側でAddressableをビルドし、作成したものを

読み込む側の

.exeと同一ディレクトリに

Projectでは、

Assetsと同一ディレクトリに

ServerData/StandaloneWindows64

を配置

読み込む側に、ビルドしたプロジェクトのLibrary/Addressable/com.unity.addressablesをコピーする

buildしたデータでは、XXX_Data/StreamingAsset/aa を同一のものにする?

上記は必要無し  

エラー

Player content must be built before entering play mode with packed data.
This can be done from the Addressables window in the Build->Build Player Content menu command.

上記エラーがでるときは、

読み込む側のAddressables Groups ウィンドウの「Build > New Build > Default Build Script」を押してアセットバンドルをビルドする。

【Unity プロジェクト】\Library\com.unity.addressables\StreamingAssetsCopy\aa\【プラットフォーム名】\

settings.jsonが存在しない場合にエラーが発生する。

シーンの読み込み

最初にcatalogを読み込む必要あり。

AddressableAssetsData/AddressableAssetSettings.asset(またはWindow>Asset Management > Addressables > Settings)

にcatalogの設定の記述はある。

// カタログの読み込み
string path = "XXXXX/catalog_0.1.json";
await Addressables.LoadContentCatalogAsync(path).Task;

// アセット(シーン)の読み込み
var o = Addressables.LoadSceneAsync("Map", LoadSceneMode.Additive);

VRで読み込んだときに片目だけしかレンダリングされない

Shader Variant Collection を作成し、Addressableにしbundleに含める

Custom/SurfaceShade(デフォルトのSurfaceShader)を作成し、Shader Variant Collectionに追加

bundleを再作成することで解決。

参考

tsubakit1.hateblo.jp

kingmo.jp

synamon.hatenablog.com

synamon.hatenablog.com

zenn.dev

blog.nekoteam.com

unity.com

docs.unity3d.com

qiita.com

note.com

blog.applibot.co.jp

tech.sumzap.co.jp

AssetBundle

qiita.com

qiita.com

async Taskのキャンセルについて

async Taskは便利だけど、cancel処理を書いておかないと色々とハマることがおおいから書くべき

※編集中

cts = new CancellationTokenSource();

cts.Token.Register(() =>
{
    Debug.WriteLine("キャンセルされました");
});

try, catchは必ず書くようにする。

catchした場合は再throwする。

async/awaitとCancellationTokenはセットで取り扱う。 asyncメソッドを定義するときは必ずCancellationTokenを引数にする。

参考

qiita.com

tera1707.com

qiita.com

zenn.dev

blog.neno.dev

qiita.com

tachis.hatenablog.com

blog.yucchiy.com

neue.cc