littlewing

人間とコンピューターとメディアの接点をデザインするために考えたこと

HoloLens+Arucoを触ってみた

こちらのリポジトリの「HoloLensArucoTracking」を触ってみた https://github.com/KeyMaster-/HoloLensArucoTracking/

  • Editor用とHoloLens用のSceneがある。
  • 使い方はReadme見れば大体わかる
  • Unity 5.6.3とUnity 2017.3.b10でHoloLens実機ビルドできた。

youtu.be

注意点

特定のIDに反応させたい

  • MainCameraについている、MarkerObjectPlacer.csがONの状態だと、どのマーカーにも 反応してCubeが表示される。
  • 特定のIDを利用したい場合は、TrackedObjectExampleを利用する。

マーカーIDを指定しても反応してくれない

  • READMEにも書いてあるが、ArucoのマーカーIDがOpenCVのものと、本家(このコードはこっち)で異なる。 そのためAruco Marker Generatorなどで、マーカーを作成した場合はIDが異なるので注意。 どのIDが反応しているかを調べるには、先ほど書いたメインカメラについている、MarkerObjectPlacer.csのonDetectionRun()部分で
        for (int i = 0; i < ArucoTracking.marker_count; i++) {
            PoseData pose = trackingRunner.poseDict[ArucoTracking.ids[i]];
            Debug.Log("ID is " + ArucoTracking.ids[i]);  //★この行を追加

            quadInstances[i].transform.localPosition = pose.pos;
            quadInstances[i].transform.localRotation = pose.rot;
        }

などとしてやれば調べることができる。 OpenCVのMarkerID:1はこのコードではID:256として反応した。

マーカーの位置がずれる

MainCameraについているArucoRunner.csに、マーカーの実寸サイズをちゃんと指定してやる必要がある。

一辺、36mmのマーカーなら、Inspector上でMarker Size 0.036と指定してやる。


その他のAruco関連ライブラリ

MarkerBased AR Example

ちなみに、Arucoを動かすことができるAssetがAssetStoreにもある。

こちらも試していましたが、カメラキャリブレーションがそのままでは、ガバガバなので、 ちゃんと使うには自前で調整が必要そうです。

aruco-unity

Unity上でのカメラキャリブレーションに関しては、こちらのプロジェクトにはキャリブレーション用のシーンがありました。

github.com


参考ドキュメント

Unity EventをInspector上で登録できるようにする

説明用にメモ

public なUnityEventを作成すると、Inspector上で、イベント内容を登録できるようになる

using UnityEngine;
using UnityEngine.Events;

public class Hoge: MonoBehaviour{

        public UnityEvent onInitialized;

}

f:id:pigshape:20171215164816p:plain

このイベントはどこかで初期化しておく必要がある。

void Start(){
            if (onInitialized == null)
                onInitialized = new UnityEvent ();
}

イベントの呼び出しはInvokeを利用する

//イベントを発火する
if (onInitialized != null)
    onInitialized.Invoke ();

Hologram Stability (ホログラムの安定性) の日本語訳

1年ぶりとなりますが、HoloLens / Windows Mixed Realityのドキュメントの中から「Hologram Stability」を自分の勉強のために翻訳(意訳)しました。

win10-HoloLens_front

元のドキュメントはこちらです。

以前からあったドキュメントですが、Immersive HMDに関する記述もあるので、内容は最近更新されているかもしれません。 2017/11/11現在の内容を基に作成しています。

コードとかUnityの知識に関しては記述されておらず、アプリ設計段階で必読の基本的な動作原理とFPSの維持がなぜ重要か?の話となります。

注意事項として、 Color sequential displayのハードウェアの仕組みと、輻輳角などの眼に関する前提知識がそれほど無いため、 そのあたりの翻訳の正確性が低い可能性があります。是非、原文も参照してください。

あと、ホログラム警察の方、ごめんなさい。多少変えていますが、原文を尊重して記述しています。 ホログラムは3Dオブジェクトと読み替えてください。


目次

ホログラムの安定性

  1. ホログラム安定性にかかわる用語
    • Accuracy (正確性)
    • Jitter (ジッター/ゆらぎ)
    • Judder (ジャダー /振動)
    • Drift(ドリフト/ずれ)
    • Jumpness (ジャンプ)
    • Swim (およぐ) 
    • Color separation(色分離)
  2. フレームレート
  3. ホログラムを配置する距離
  4. 安定化平面
  5. 色分離
  6. 関連ドキュメント
続きを読む

HoloLens のDevicePortal API(REST)にPHPでアクセスする

8/20追記 後で気づいたのですが、以下の記事はDevicePortalのSSLをOffにした状態で試したものです。デフォルトのSSL ONの状態ではそのまま動かないのでご注意ください。Tokenの管理が別途必要です。時間が出来たら記事にします。

録画機能の実行のためにDevicePortal APIを使ってみました。

APIの公式ドキュメント(英語版)はこちら

はまったのは、ドキュメントをみると、POSTメソッドのAPIでもパラメータはGETで渡す必要があります。

あと、日本語版の公式ドキュメントと英語版で若干違ったので、英語版を見た方が良いかも。

続きを読む

HoloToolKitのMicStreamSelector.dllをVS2017で再ビルドする

HoloToolKitのMicStreamSelector.dllをVS2017で再ビルドする際に、

  • platform.winmd

にパスが通っていないと怒られた。 たぶんHoloToolKit自体は2015で作られていたからかと。

続きを読む

HoloLensでXbox One用のゲームパッドを使う

f:id:pigshape:20170607110155j:plain

UnityでのHoloLensアプリ開発にXboxOne用のゲームパッド(コントローラー)を利用してみました。利用までの手順などをまとめます。

ちなみにある程度動作したのですが、一部うまく動いていない状況です。 調査と試行錯誤の記録としてメモしておきます。

続きを読む