Magic Leap/mldbコマンドのヘルプ
Magic Leap Oneを起動する
- Light Packのボタンを三秒長押し(ピポッと音がする) ※マニュアルでは3秒だが、実際は押すだけでOK?
- Light PackのLEDがついたら、コントローラのホームボタン(小さいポッチ)を3秒長押し(バイブレーションとLEDが動作する)
- 起動に30秒くらいかかる。その間は無反応。起動すると起動サウンドが流れ、Welcome画面が表示される
- welcome画面にTap to Contiue.と表示されるので、コントローラのトリガーを押す
Magic Leap Oneを終了する
Case 1: ソフトウェア上での操作方法
- 画面内のメニューからは、ホームボタンを押して、バッテリーアイコンを選択 -> PowerOffを選択 -> 画面の指示に従って、コントローラーのタッチパッドを円状にタッチする
Case 2: ハードウェアでの操作方法
- ハードウェアでの電源OFF操作の場合は、Light Packのボタンを8秒長押し後、コントローラーのトリガーとホームボタンを3秒長押し。
- マニュアルは上記記載だが、コントローラは勝手に電源切れる気がする
基本的な操作や、FAQ
やりたいこと | 操作方法 |
---|---|
音量の変更 | Light Pack横の音量+-ボタンで操作 / ホーム画面からも可能 |
電池残量の確認 | Light Packのホームボタンに触れる(触るだけで押さない) →LEDの表示で電池残量がわかる。コントローラも |
Light WearへのCG表示のOn/Off | Light Pack横の Reality ボタンを押す。 復帰時は長押し。 表示OFFの状態の時はLight PackのLEDが白色になっている |
アプリのインストール | 独自のアプリはThe Labを使う。もしくは、mldbコマンド(後述)。 ストアアプリは [World] というアプリからインストール。 |
アプリのアインストール | 独自のアプリはThe Labを使う。もしくは、mldbコマンド(後述) もしくは、ホーム画面でアプリを選択して、 タッチパッドを押下 > サブメニューからアインストール |
起動中のアプリを閉じる | ホーム画面でアプリを選択して、タッチパッドを押下 > サブメニューからClose |
画面に何も出てない | Light Wearを外していると、自動的にSleepに入る。 再び装着すると復帰するが、眼鏡の上からなど、 軽く覗いているだけだと、近接センサーが働かない場合がある。 しっかりと装着すると復帰する |
眼鏡使えるの? | 眼鏡の上から正しく装着するのはほぼ無理。ノギスで計ったら、横幅114mm以内(できれば112mm)の眼鏡なら入りそうだけど、そんな眼鏡はほぼ、存在しない |
専用眼鏡(レンズ)が欲しい! | このブログ参照 |
IPアドレスが知りたい | Homeボタン > Wifiアイコン > 接続中のWifiを選択 > [ i ]Advanced をクリック USBでつないで、mldb ifconfig でもok |
ネットワーク経由でデバッグしたい | MLDB Over WiFi を読む。 |
充電しながら開発したい | mldb をネットワークでつなげれば可能 ↑参照 |
録画したい | 後述 |
リアルタイムで外部ディスプレイにストリーミングしたい | (19/9/18更新)Device StreamでUSBもしくはWifi経由でストリーミング可能 |
Homeボタンを押すと音はするけど、何も表示されない | PCのディスプレイが目の前にあると、オクルージョンでディスプレイの後ろ側にCGが表示され、見えない事が多い。広い所をみて、再度Homeボタンを押してみる |
キーボードが壁に埋まって入力できない | キーボードもオクルージョンがかかるので、広い場所で操作するしかない |
デバイスをリセットする | デバイス上で Settings.> ID選択 >下の方にある"Take me to Factory Reset"を選択 |
Creator Modeが表示されない | Magic Leap ID作成後、 Webサイト 上で、規約に同意する必要がある。この操作はDevice上ではできないのでPCやスマホでやる。詳しくはこちら->How To: Enable Creator Mode 規約に同意すると、端末にCreator Modeのメニューが表示されるようになる。 |
Webサイトにアクセスできない、通信ができない | Settings > Set Time & Date Automatically > Offにすると、時刻が大幅にずれて、外部通信に失敗する場合がある。(SSL証明書がエラーになる) |
mldb コマンドの説明
Magic Leapでアプリのインストール操作にはmldb.exe というコマンドをコマンドプロンプトなどから利用します。場所は
{Magic Leap SDKのインストールパス}\mlsdk\v0.19.0\tools\mldb
となります。 {Magic Leap SDKのインストールパス}はデフォルトだと、
C:\Users\{ユーザ名}\MagicLeap\
となります。
このパスをWindowsの環境変数のPath に登録しておくと、後の操作が楽になります。
MagicLeapの録画方法
- コントローラーで、ホームボタンを押しながら、バンプボタンを3秒ほど長押ししてください。録画が開始されます。 録画の停止も同じ操作方法です。
録画データの取り出し
※2020/4/9追記 今はThe Lab からGUIでできます。
# Cドライブ直下に移動(必須ではありません) cd C:\ # 端末内のビデオをすべて取得 C:\videos\にmp4の動画がダウンロードされます。 mldb pull -D /C1/videos # 端末内の C1/videos/ フォルダ内の一覧を取得 mldb ls -D C1/videos # 端末内の C1/videos/xxxx.mp4 だけをPCにコピー mldb pull -D /C1/videos/xxxx.mp4 # Videosフォルダの動画を全部消す $ mldb rm -D C1/videos/*.mp4 # 自分用メモ MINGW64でやると、Userフォルダにしか書き出せなかった。 mldb pull -D C1/videos/ML_20190920_11.52.33.mp4 "C:\\Users\\mynage\\rec.mp4"
Magic Leap/mldbコマンドのヘルプ
gistにもアップした。
HoloLensとMagicLeapの用語の対比
機能 | HoloLens | MagicLeap |
---|---|---|
空間への座標固定 | World Anchor (空間アンカー) | Persistent Coordinate Frames (PCF) |
HoloLens のUnityアプリで、カメラアクセスの許可がされているか確認する。
Vuforiaなどでカメラ機能を利用する際に、ユーザーが許可を与えなかったり、 OSバージョンアップ時に許可設定が吹っ飛んでしまった場合、そのまま続行すると例外でアプリがクラッシュしてしまいます。
そこで、カメラアクセスの許可が無いときに分岐する方法。
Application.HasUserAuthorizationは、WebPlayerだけみたいで、UWPではゴミ。
カメラアクセスの許可は、設定アプリを利用して Settings > Privacy > Camera > アプリ一覧から ON/OFF できます。
参考
HoloLens のUnityアプリで、UWP AppPackageビルド後のバージョンを取得する
UnityのApplication.versionだと、PlayerSettingsのバージョンになってしまう。
AppPackage作成時のインクリメントに対応するには別の方法で取得しないといけない。
そう、こんな感じで
#if !UNITY_EDITOR && UNITY_WSA using Windows.ApplicationModel; #endif private static string GetVersionInfo() { #if !UNITY_EDITOR && UNITY_WSA Package package = Package.Current; PackageId packageId = package.Id; PackageVersion version = packageId.Version; return string.Format("{0}.{1}.{2}.{3}", version.Major, version.Minor, version.Build, version.Revision); #else return Application.version; #endif }
Unityで4つの点から球の中心と半径を求める(内包or面する場合)
空間上で複数の座標から球の中心と半径を求める必要があったので調べてみた。
球を特定するには最低4つの点が必要。
その1.全ての点が球の表面(外接)となる球を求める
センサー値から回転軸を求める場合に使えるかも。(というかその為に考えた)
その2.すべての点を内包する最小の球を求める
内包する場合は、一部の点は球の内側に存在する場合がある。
両方とも自力では難しかったので、元ネタのコードをUnity/C#に移植しただけですが。
Oculus GO アプリで、マイクのパーミッションが出ないようにする
UnityでOculus Go アプリを開発していたら、マイクを利用していないのに起動時にマイク利用許可のパーミッションが表示される。
そのままでOculusの審査に出したら、リジェクトされてしまった。
OverView: The app must request the minimum number of permissions required to function.
Result: Your app is asking for excessive user permissions or using user permissions inappropriately. -Access Microphone Please remove all unnecessary permissions.
microphoneを利用する処理は書いていないし、 Assets/Plugins/Android/AndroidManifest.xml に
<uses-feature android:name="android.hardware.microphone" android:required="false" />
を追記しても変化無し。
apk内のManifestがどうなっているか調べてみる。
Unityで作成したAndroidアプリにおいて、最終的なmanifestの内容は、ソースコードの中身などから生成されるらしいので、 apk内のManifestがどうなっているのか調べてみる。
Android SDKに含まれている aaptというコマンドで調べられるらしい。
aapt.exe は
C/Users/{Username}/AppData/Local/Android/Sdk/build-tools/28.0.1/
にあった。
実行してみると
$ ./aapt.exe d permissions hogehoge.apk AndroidManifest.xml package: jp.hoge.hoge uses-permission: name='android.permission.INTERNET' uses-permission: name='android.permission.WAKE_LOCK' uses-permission: name='android.permission.RECORD_AUDIO'
となり、RECORD_AUDIOが付与されてしまっている。
調べてみると、フォーラムにも同様の症状が。
結果的に、以下の対応をして解決。
- 以下6個のファイルを削除
- Assets/Oculus/Platform/Scripts/IMicrophone.cs
- Assets/Oculus/Platform/Scripts/LivestreamingMicrophoneStatus.cs
- Assets/Oculus/Platform/Scripts/MicrophoneInput.cs
- Assets/Oculus/Platform/Scripts/MicrophoneInputNative.cs
- Assets/Oculus/LipSync/Scripts/OVRLipSyncMicInput.cs
- Assets/Oculus/VoiceMod/Scripts/Helpers/OVRMicInput.cs
- CAPI.csでエラーが出るので、該当箇所(Livestreamingなんちゃら) をコメントアウト
- 再ビルド
Oculus Goのストア申請に役に立ったリンク集
Oculus Storeに申請頂くさまざまなコンテンツの中で、要修正として指摘されやすい事項
Checking Entitlement in Production について
Oculus Goアプリ配信ガイド
Unreal Engine関連リンク
自分メモ。 いかん。全部忘れてる。
Japanese - UE4 AnswerHub|UnrealEngine AnswerHub
GitHub - alwei/MultiplayerGame: Unreal Engine 4でネットワークマルチプレイヤーゲームを作るための最低限のサンプル
Unity開発者向けUnrealEngineガイド
Hololens Template for Unreal Engine 4
HoloLensでXbox One用のゲームパッド2-その後
以前、HoloLensでXbox One S のゲームパッドを使う方法を書きましたが、 その時の課題の解決方法のがひとまずわかりました。
元記事はこちら
この記事ではUnityのInputManagerを利用してキーを取得する方法を試したのですが、 XboxコントローラーのDPadと右スティックの入力が取得できませんでした。
その後の調べで、Windows.Gaming.Inputを利用してコードを書いた場合は、両方とも取得できました。ただし、Editor上では動きません。 まとめると
取得方法 | HoloLens(UWP)で DPad・右スティックが 使えるか? |
Unity Editor上で 取得できるか? |
---|---|---|
UnityのInputManager | 使えない | 動く |
Windows.Gaming.Input | 使える | 動かない |
こんな感じ
調べた範囲での話です。