MagicLeapOne始めました!

こんにちは。HoloLensチームの老田です。

日頃からHoloLens開発を行っておりますがこの度弊社にもMagicLeapOneがやってきました!

HoloLensとの大きな違いはコントローラが付いていること、本体とHMDがケーブルでつながれているところです。

性能面などの違いが知りたい方やMagicLeapOneが何かをご存知ない方はこちらをご覧ください。

引き続きHoloLens開発も行っては行きますがMagicLeapOneの検証や開発も行っていきたいと思います!

また後日MagicLeapOneの記事をアップ予定ですのでお楽しみに!

 

2019国際ロボット展出展(Holo-Teach)

こんにちは。HoloLensチームの佐藤(良)です。

2019年12月18日(水)~12月21日(土)東京ビックサイト(東京国際展示場)青海・西・南ホールにて開催されます『2019国際ロボット展(iRex)』に株式会社豆蔵が出展いたします。

国際ロボット展公式サイト

株式会社豆蔵の告知ページはこちら

今回、出展内容として私たちも共同で開発をし、CEATEC2019にてお披露目いたしました『Holo-Teach(ホロティーチ)~ホログラフィック ロボット遠隔操作~』が展示されます。私たちも会場でデモいたします。

 

今回の出展にあわせCEATEC2019に出展した際のデモ動画を公開いたします。

こちらも是非ご覧になってください。

ご来場の皆様は是非お立ち寄りください!

MRTKを使ってHoloLensの空間メッシュを取得する

こんにちは。HoloLensチームの野元です。
先日、待ちに待ったHoloLens2が発売されましたね!手元にHoloLens2が来るのを今か今かと待ち望んでいる今日この頃です。(笑)

HoloLensを使用すると空間をスキャンしてメッシュデータを取得することが出来ます。
HoloLens1ではHTK(HoloToolKit)のSpatialMappingを使ってメッシュデータを取得していましたが、HoloLens2ではMRTK(MixedRealityToolkit)のSpatialAwarenessを使用しメッシュデータの取得する必要があります。(HoloLens1でもMRTKは使えます。)
HoloLens2がいつ手に入ってもいいように、MRTKを使用したメッシュデータの取得方法を見ていくことにします。

MRTK is 何?

MRTKは、Mixed Reality Toolkitの略称であり、Virtual Reality (VR) 及び Augmented Reality (AR) の Mixed Reality エクスペリエンスを構築するためのクロスプラットフォームツールキットのことです。
HoloLensアプリケーションを作る際には、MRTKがないと始まらないレベルで重要です。
詳しく知りたい方は、MRTK公式ドキュメントをご覧ください。

検証環境

  • Windows 10 SDK (10.0.18362.0)
  • Unity 2018.4.2.f1
  • Visual Studio 2019
  • Microsoft Mixed Reality Toolkit v2.1.0

方法その1. メッシュデータを全件取得する

下記の通りにすると、HoloLensがスキャンしたメッシュデータを一括で取得することできます。

// SpatialAwarenessSystemをIMixedRealityDataProviderAccessにキャストしてオブザーバーを取得します
var access = CoreServices.SpatialAwarenessSystem as IMixedRealityDataProviderAccess;

// 利用可能な最初のメッシュオブザーバーを取得します。通常、登録されているのは1つだけです。
var observer = access.GetDataProvider< IMixedRealitySpatialAwarenessMeshObserver>();

// 既知のすべてのメッシュをループします
foreach (SpatialAwarenessMeshObject meshObject in observer.Meshes.Values)
{
  // ここでメッシュが取れます
    Mesh mesh = meshObject.Filter.mesh;
  // 以降はお好みの処理をどうぞ!
}

方法その2. メッシュデータの差分を取得する

下記の通りにすると、HoloLensがスキャンしたメッシュデータを逐一差分で取得することができます。

// タイプを簡素化します
using SpatialAwarenessHandler = IMixedRealitySpatialAwarenessObservationHandler< SpatialAwarenessMeshObject>;

public class MeshObservationExample : MonoBehaviour, SpatialAwarenessHandler
{
    private bool isRegistered = false;

    private void OnEnable()
    {
        RegisterEventHandlers();
    }

    private void OnDisable()
    {
        UnregisterEventHandlers();
    }

    /// SpatialAwarenessSystemイベントを登録します
    private void RegisterEventHandlers()
    {
        if (!isRegistered && (CoreServices.SpatialAwarenessSystem != null))
        {
            CoreServices.SpatialAwarenessSystem.RegisterHandler< SpatialAwarenessHandler>(this);
            isRegistered = true;
        }
    }

    /// SpatialAwarenessSystemイベントを登録解除します
    private void UnregisterEventHandlers()
    {
        if (isRegistered && (CoreServices.SpatialAwarenessSystem != null))
        {
            CoreServices.SpatialAwarenessSystem.UnregisterHandler< SpatialAwarenessHandler>(this);
            isRegistered = false;
        }
    }

    /// メッシュが追加されたときに呼ばれます
    public void OnObservationAdded(MixedRealitySpatialAwarenessEventData< SpatialAwarenessMeshObject> eventData)
    {
        // メッシュ追加時の処理を記述します
    }

    /// メッシュが更新されたときに呼ばれます
    public void OnObservationUpdated(MixedRealitySpatialAwarenessEventData< SpatialAwarenessMeshObject> eventData)
    {
        // メッシュ更新時の処理を記述します
    }

    /// メッシュが削除されたときに呼ばれます
    public void OnObservationRemoved(MixedRealitySpatialAwarenessEventData< SpatialAwarenessMeshObject> eventData)
    {
        // メッシュ削除時の処理を記述します
    }
}

まとめ

周辺環境は常に変化していくと思うので、HoloLensの空間スキャンデータの差分をハンドリングする方がベターがと思います。
さらに詳しく知りたい方は、SpatialAwarenessの項目をご覧ください。

CEATEC 2019出展

こんにちは。HoloLensチームの佐藤良です。

2019年10月15日 (火)~10月18日(金)の4日間、幕張メッセ(千葉市美浜区)にて開催されるCEATEC2019に豆蔵ホールディングスグループとして出展いたします。

豆蔵ホールディングス(News):
「CEATEC 2019」 に豆蔵ホールディングス共同出展
https://www.mamezou-hd.com/pdf/20190930mzhd2.pdf

◎ 展示概要:
豆蔵が自社開発した7軸協働ロボット及びネクストスケープが開発したアプリケーションの展示です。

Microsoft HoloLensを装着し、目の前に現れるホログラムを操作する事で、実体のロボットに指示をする体験ができます。(特許出願中)

あなたがロボットに教えるのはゴミの分別方法です。
ロボットは、あなたから教えてもらったとおりに、種類が混在しているリサイクルゴミから必要な物を拾い、分別して、くずかごに捨てます。

さぁ、ロボットと一緒に未来のおうちを綺麗にしましょう!

皆様、是非お立ち寄りください。

Azure DevOpsでHoloLensアプリをビルドする(MS-hosted編)


こんにちは。酒井(@saka_it)です。

突然ですが、皆さん、CI(継続的インテグレーション)してますか?
今どきの開発に CI 環境の構築は欠かせませんが、CI環境構築やメンテナンスは、面倒なことも多いと思います。

そこで今回は Azure DevOps の一部である Azure Pipelines の Microsoft-hosted agents を使って、ビルドマシンの用意が不要なCI環境を作ってみます。

※この記事では HoloLens(Unity)アプリのビルドを説明します。WebApps の CI/CD 環境を構築したい方はネスケラボの記事もどうぞ。

続きを読む Azure DevOpsでHoloLensアプリをビルドする(MS-hosted編)

Microsoft Dynamics 365 Guides を始めてみる

Guidesイメージ

こんにちは。酒井(@saka_it)です。

2019年02月にスペインバルセロナで開催された MWC(ワールドモバイルコングレス)で Microsoft HoloLens 2 と共に Microsoft Dynamics 365 Guides が発表されました。ノンプログラミングで HoloLens 上での操作ガイドを作成できるということで、注目されている方も多いかと思います。

公開されているデモ動画などでは HoloLens 2 で利用されているのですが、今までの HoloLens 1 でも動作させることができます。今回は HoloLens 1 の方で導入して、ガイドを作成する手順を紹介します。

続きを読む Microsoft Dynamics 365 Guides を始めてみる

HoloLensのSpatialMappingデータをブラウザで表示する

こんにちわ。HoloLensチームの佐藤です。
今回はアドベントカレンダーの記事ということで、日頃やらないようなお試し的なことをやってみようかとおもいました。
HoloLensは空間情報(Spatial Mapping)を取得する機能が端末に備わっております。
そしてこの空間情報のデータは、HoloLensのDevicePortalからダウンロードすることができます。
このデータは.objという形式なのですが、そもそも.objとは何なのかいう方はwikipedia に詳しく乗っているのでそちらを参照いただければと思います。(ちなみに私もそこで学びました)
以前からこのデータをHoloLens上だけでなく、自分が作ったwebアプリに表示して活用できないかを考えていまして、
調べていくとThree.jsが.obj形式の表示にも対応していることが判明し、今回はThree.jsを使ってブラウザに表示するところまでをやってみようと思います。

 

 

HoloLensで見えている画面を共有する方法まとめ

HoloLens Share

こんにちは。HoloLensチームの酒井(@saka_it)です。

HoloLensからの(未来あふれる)視界は周りの人からは見えないため、不審者扱いされるというのはよくあることかと思います。また、展示などでデモをするときもHoloLens分の人しか同時に楽しめないため、待っている人が楽しめないといった問題もあります。

今回はそんなときに使えるHoloLensで見えている画面をPCなどで共有する方法について、まとめてみました。

この記事は NEXTSCAPE クラウドインテグレーション事業本部 Advent Calendar 2018の19日目の記事です。

続きを読む HoloLensで見えている画面を共有する方法まとめ

iOSで動作するSpectatorViewを試してみる(MRKT 2017.4.3版)

動作イメージ

こんにちは。HoloLensチームの酒井(@saka_it)です。

MRTK 2017.4.0で新たにiOS端末で動作するSpectatorViewが追加されました。動作させたときの動画はこちらです。

以前、導入記事を書きましたが、その後、MRTK 2017.4.3へのアップデートに伴って不具合が解消される一方、新たなトラブルポイントも出てきていますので、今回はUpdate版を作成しました。

この記事ではMRTK 2017.4.3のSpectatorViewを動作させるための手順を説明します。

続きを読む iOSで動作するSpectatorViewを試してみる(MRKT 2017.4.3版)