夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

Unity C#でString型の文字を解析してfloat型で返す。

本日はUnity C#の勉強わくです。

C#にはデータを扱う様々な型があります。

docs.microsoft.com

今回は

string  _number = "1234";

をfloat型で返すような処理をおこないます。

〇やりたかったこと

・HoloLens 2ように作っているテンキーで入力した数字をそのままfloat型のデータで扱いたい。

・1+1のような演算子込みの文字式の結果を(いずれ)2としてfloat(もしくはint)で扱いたい

redhologerbera.hatenablog.com

〇Single.Parse メソッド

通常string型をそのままfloat型として扱うことはできません。

f:id:Holomoto-Sumire:20200708094210j:plain

今回はSingle.Parseを使用しました。

docs.microsoft.com

    void Start()
    {
        string _sample = "1234";
        float _number = float.Parse(_sample);
    }

Unityで適当なスクリプトを作成してStart(){}に上のように記述しました。

float.Parse()でstring型をfloatとして返してくれます。

f:id:Holomoto-Sumire:20200708100444j:plain

これを応用して簡単な文字式を計算してみます。

   [SerializeField] List<string> _samplelist;

    // Start is called before the first frame update
    void Start()
    {
        string phrase = "123+456";
        string[] words = phrase.Split('+');

        foreach (var word in words)
        {
            _samplelist.Add(word);
        }
        float _number 1= float.Parse(_samplelist[0]);
        float _number2 = float.Parse(_samplelist[1]);
        float result = _number1 + _number2;
        Debug.Log(result);
    }

ここでは123+456というstring型の式を計算します。

一度123,456という二つのfloat型の変数に分け、それらを合成しています。

ここでは

string[] words = phrase.Split('+');

という一文で+という区切りで分けています。

Pharese.Split()は()内の条件で文字列を区切り部分配列を作成します。

docs.microsoft.com

       foreach (var word in words)
        {
            _samplelist.Add(word);
        }

foreach文で分離した文字式を配列の要素に追加しています。 これは123+456の場合[0]、[1]が、123+456+789の場合[0]、[1]、[2]の要素が入れられます。

        float _number1 = float.Parse(_samplelist[0]);
        float _number2 = float.Parse(_samplelist[1]);

number1,number2はそれぞれの123,456でぐぎった数字の文字列をfloat型に変換します。

        float result = _number1 + _number2;
        Debug.Log(result);

最後にこれらを加算しています。

これを実行すると次のようにLogがでます。

f:id:Holomoto-Sumire:20200708101506j:plain

2つの数の加算なので簡単にできましたが、3つの数やほかの加減積商がかかわってくるとさらに解析する仕組みが必要になりそうです。

HoloLens 2を電車内で使ってみた!

本日は実験枠です。

Microsoft HoloLensは外部機材を必要としないスタンドアローンHMDです。

スタンドアローンHMDにはVRではOculus Quest、MRではHoloLensのほかにMagic Leap One などがありますが、これらの特徴はHMDさえあればどこでも使用できることです。

そこで今回は電車内でHoloLens 2を使用してみました。

6Dof(six degrees of freedom=顔の傾きだけでなく移動も検知できる)のHMDの多くはIMU(慣性計測装置)が内蔵されており、ユーザーの移動を検知しています。

乗り物内でのHMDの使用ではIMUが誤作動を起こすため満足に使用できないことがほとんどですが、将来運転時の危険予測などで乗り物内でのHMDの使用構想もあります。

今回はそういった背景もありますが、単に『HoloLens 2を電車内で使用できるのか?』という興味で実験を行いました。

〇HoloLens 1stの場合

HoloLens 1st時代からもHoloRangerが山手線や新幹線内HoloLensを行っていました。

私自身も新幹線、山手線内で行ったことがあります。

簡単にHoloLens 1stでの車内HoloLensをまとめると

・発車、停車時の加減速時にホログラムが流れていく

・電車特有の揺れはある程度耐えられる。

・駅ー駅間の定速運転時は何一つ問題なく使用できる。

といった感じです。

〇HoloLens 2

本題のHoloLens 2での電車内HoloLens です。

・日時 2020/7/4(土曜日) 午前11時頃

・場所 山手線先頭車両 西日暮里ー日暮里間

動画がこちらです。

www.youtube.com

最初発車時に一度Lostしましたが、その後安定してアプリを起動できました。

しかしAirTapでオブジェクトを移動させた際バグったように小刻みに揺れ動く動作を見せます。どうやらIMUよりVisualが優先されているようです。

アイトラッキングも問題なく使用できました。

最初の一回以外はオブジェクトが流れることがなく、IMUより周囲の空間認識が優先されることがわかりました。

〇結論

HoloLens 2は電車内でHoloLens 1stより格段と使用できる可能性を秘めている。

HoloLens 2アプリを遊んでみる MRTK ExampleHub その1 MRTKExampleHubのインストール

本日はHoloLens 2のアプリレビューです。

〇MRTKExample Hubとは?

HoloLensのアプリケーションを作成するための便利なツールとしてMicrosoftが提供しているpackageのMxiedRealityToolkitのデモシーンを一つのアプリケーションとしてまとめたものです。

そのため開発者やHoloLens 2を初めて触るユーザー向けのアプリで、HoloLens 2でどのようなことができるのか? どのように開発を行うべきなのかを確認するのにとても有用なアプリです。

〇ダウンロード

 MRTKExample HubはMRTKのGitHubのリリースページから入手できます。

github.com

f:id:Holomoto-Sumire:20200706180800j:plain

[MRTK.Examples.Hub_2.4.2.0_ARM_HoloLens2.zip]を選択してダウンロードします。

解凍したファイルの中には[MRTK Examples Hub_2.4.2.0_arm_Master.appxbundle]があります。 これがアプリケーションファイルになります。

 f:id:Holomoto-Sumire:20200706181019j:plain

〇デバイスポータル経由でデプロイ

 HoloLens 2をデバイスポータルに接続します。

・USBでの接続

 PCとUSBでつながっている場合ブラウザを開いて[127.0.0.1:10080]と検索します。

 f:id:Holomoto-Sumire:20200706181330j:plain

・ネットワーク経由の接続

 HoloLens 2で[Settings]を開いて[Netwark & Internet]を開き自分が接続しているネットワークの[Advanced Options]を選択します。

f:id:Holomoto-Sumire:20200706184427j:plain

画面中部にある[IPv4 address]に記載されているIPアドレスをUSB接続時と同じようにブラウザの検索で入力します。

f:id:Holomoto-Sumire:20200706184643j:plain


ユーザー名とパスワードが聞かれるので入力することでデバイスポータルが開きます。

f:id:Holomoto-Sumire:20200706184933j:plain

左サイドの[View]から[Apps]を開きます。 ここでは起動しているアプリケーションなどの状態をみれるほかアプリのインストールが行えます。

左上部の[Deploy Apps]の[参照]を選択します。

f:id:Holomoto-Sumire:20200706185415j:plain

ウィンドウが開きフォルダが選択できるので最初に解凍した[MRTK Examples Hub_2.4.2.0_arm_Master.appxbundle]を選択します。

f:id:Holomoto-Sumire:20200706185631j:plain

最後に[Install]を選択することでインストールが始まり成功することでHoloLens 2にMRTK ExampleHubがインストールされます。

f:id:Holomoto-Sumire:20200706185858j:plain

f:id:Holomoto-Sumire:20200706190006j:plain

これでHoloLens 2にMRTK ExampleHubがインストールできました。

バイスポータルを使用したデプロイはHoloLens 2の接続しているネットワークとユーザー名、パスワードがわかれば自分以外の所有するHoloLens 2にもUSBで接続することなく遠隔で行えるため、非常に便利な機能です。

HoloLens 2 ×Unity2019.3.9f1でアプリが正常に起動しない問題と解消法

HoloLens 2が届いて早速アプリケーションをデプロイしています。

Unity2019.3.9f1でデプロイ時に問題は発生したため今回はその現象と回避法をまとめます。

〇環境

・HoloLens 2

・MixedRealityToolkit v2.4.0

・Unity2019.3.9f1

〇発生した問題

www.youtube.com

applicationをビルド、デプロイして実機で起動したとき、アプリが正常に起動せず落ちる。

一見するとうまくデプロイできているようにも見えるので空プロジェクトにMRTKだけ入れたものをデプロイしても同様に動かない。

〇回避

Twitterで問題をつぶやいたところMRTKチームのSean Ongさんがリプライをくれました。

どうやらARMではなくARM64でビルドするとうまくいくようです。

また日本で活躍されているHoloRangerの先輩のDecocさんからイシューに上がっていると教えていただきました。

MRTKのリリースノートに既知の問題として挙がっていました。

microsoft.github.io

Unity 2019.3: ARM build architecture There is a known issue in Unity 2019.3 that causes errors when selecting ARM as the build architecture in Visual Studio. The recommended work around is to build for ARM64. If that is not an option, please disable Graphics Jobs in Edit > Project Settings > Player > Other Settings. For more information see Building and Deploying.

Project SettingsからPlayerの[OtherSettings]を選択します。

f:id:Holomoto-Sumire:20200705181205j:plain

OtherSettingsの中の[Graphics Jobs]のチェックを外し無効化します。

f:id:Holomoto-Sumire:20200705181330j:plain

以上が解消策のようにです。

この状態でビルド、デプロイします。

learn.unity.com

Graphics jobsはレンダリングに関する影響を最適化する設定のようです。

APIによって使用できるデバイスが決まっており、デフォルトでオフになっている場合が多いようですが、Unity2019.3.9f1では有効化されてしまっていることにより発生するようです。

これで問題が解決し正常にアプリが起動できるようになりました。

www.youtube.com

HoloLens 2 アプリを遊んでみる。 Surfaces

本日はHoloLens 2のアプリ紹介です。

〇どんなアプリ

www.youtube.com

SurfacesはMixedRealityToolkitを用いた実践的なプロジェクトであるMixedRealityDeginLabのアプリです。

音とアニメーションを用いたHandTrackingでのユーザーのフィードバックを体感することができるアプリです。

 HoloLens 2ではHandTrackingによってユーザーの手を認識して、『押す』『触れる』『つかむ』『投げる』『弾く』といった動作が行えますが、ユーザーは実際に何かに触れているわけではないため、本来得られるはずの触覚のフィードバックを得ることはできません。

 HoloLens 1st時代のHandTrackingが存在しないときからも触覚フィードバックは課題の一つとしてとらえられており、日本の南国ソフトでは『触覚複合現実ほろふれる』というデバイスが開発されています。

https://japanese.engadget.com/2018/04/10/mr/

Surfaceでは9つのHandTrackingによる体験を行えます。

アプリを起動して手のひらを自分自身に向けることによってHand_Menu  

〇Lightning

f:id:Holomoto-Sumire:20200704223511g:plain

 電撃という名前の通り、機械的なボールからびりびりと電撃が走っています。

  指先には金属のパーツが表示されます。ユーザーが手を近づけると指先に対して電気が伸びます。

 びりびりという音でかなりリアルな体験ができます。

Flock

f:id:Holomoto-Sumire:20200704223643g:plain

隕石の惑星に多数の小さな住人がいます。

ユーザーの指先には両手合わせて10つの隕石が表示され惑星に隕石を落とすことができます。

住人は逃げまどうという神視点の体験ができます。

〇Cubes

f:id:Holomoto-Sumire:20200704223802g:plain

氷のようなm数のCubeが集まってボールになっています。

ユーザーの手にはクリスタルのような結晶が現れます。この手でCubeを触ることでキンキンという甲高い音を立てながらCubeがはじけます。

優しく触ることもできますが、デコピンで吹き飛ばす飛ばすこともできます。

〇Goop

f:id:Holomoto-Sumire:20200704223933g:plain

何とも言えない気持ち悪さを感じる球体が現れます。

ユーザーの手で触れるとぐちゃぐちゃと気持ちの悪い音を立て、ユーザーの手にねばついた何かがへばりつきます。

とても気持ち悪い体験です。

〇Cloud

Goopとは対照的にとても神秘的な体験を行えます。

指先にはカラフルなマーカーが付き、移動時に残光が残ります。

球体は無数のほわほわした物体で構成されており、手で触れることでCubeのようにはじけながら音を立て色が変化します。

f:id:Holomoto-Sumire:20200704224112g:plain

〇Bubble

f:id:Holomoto-Sumire:20200704224309g:plain

その名の通りバブルです(しゃぼん)。手で触れるとバブルがはじけるような音とともにシャボンが揺れ動きます。

〇Lava

f:id:Holomoto-Sumire:20200704224427g:plain

溶岩でできた惑星のような球体です。 手で触れることで焼けるような音が響き、手を抜いてもしばらく指先が赤く、煙が上ることで熱さを感じます。

Growth

f:id:Holomoto-Sumire:20200704224530g:plain

右手と左手で別々のアクションを行えるデモです。

落ち葉の球体に右手で触れることで落ち葉が凍り付きます。 逆に左手で触れることで氷が解け花が咲き、鳥のさえずりが響きます。

〇Xylophone

f:id:Holomoto-Sumire:20200704224643g:plain

無数のベルで作られたボールです。手で触れることで対応する音が鳴り響きます。

SurfacesはGitHubでプロジェクトが公開されています。

redhologerbera.hatenablog.com

初めてHoloLens 2を触るユーザーにとってとても良いでもとなるとともに開発者にとってはこれらの感じ方などのフィードバックをアプリ内で引き出せる仕組みを学ぶ上でとても良いアプリです。

こんにちはHoloLens 2 !開封の儀

昨日7月3日注文したMicrosoft HoloLens 2が手元に届きました。

〇注文=発送

 2020年7月2日の朝に前回の記事で紹介した手順で注文をしました。

redhologerbera.hatenablog.com

配達予定日は7月6日となっていましたが、同日の16時には発送が行われたようで、とても素早い発送が行われました。

 

開封の儀

f:id:Holomoto-Sumire:20200703225537j:plain

HoloLens 2はダンボールの外装に化粧品のような高級感のあるデザインの箱があり、その中にキャリーケースにまとまった状態で入っています。

f:id:Holomoto-Sumire:20200703225708j:plain

HoloLens1stではその大きさと形から湯たんぽと呼ばれることもありました。

HoloLens 2では球状ではなくやや四角のケースになっています。

f:id:Holomoto-Sumire:20200703225857j:plain

ワンポイントとしてHoloLens 2のマークがはいっていることも特徴です。 また、上部には持ち手が取り付けられており、持ち運びも考えられたデザインになっています。

f:id:Holomoto-Sumire:20200703233705j:plain

ちなみにHoloLens 1stでは持ち手と呼べるものはなく、独特の湯たんぽボディーから滑りやすいケースでした。

f:id:Holomoto-Sumire:20200703234202j:plain
HoloLens 1stのケース

f:id:Holomoto-Sumire:20200703225957j:plain

ケースを開けるとHoloLens 2本体とご対面です。

f:id:Holomoto-Sumire:20200703230056j:plain

前世代機のHoloLens 1stよりも内部はゆとりがある造りになっており、頭の来るところにUSB類、取扱説明書などが格納されています。

f:id:Holomoto-Sumire:20200703231149j:plain

前部、後部をバンドでつないだデザインで、全部には描画を行うディスプレイが、後部には電源ユニットがあります。

〇アクセサリ

同梱されているアクセサリは次のようになります。

・USB-Type C 両端オス

・USBプラグ

・クリーナークロス

・スタートガイド

・安全に関するガイド

f:id:Holomoto-Sumire:20200703234158j:plain

キャリーケースに磁石の蓋で格納するスペースがあり、コンパクトにまとめることができます。

またこのケースには[Hellow from Seattle]という文字が刻まれており、HoloLensが生まれた地であるSeattleの名前が入っています。

redhologerbera.hatenablog.com

redhologerbera.hatenablog.com

redhologerbera.hatenablog.com

redhologerbera.hatenablog.com

redhologerbera.hatenablog.com

〇装着

本体はスペック上はHoloLens 1stよりもわずかに重いです。

ですが、重心が後ろにあることで非常に軽く感じます。

またHoloLens 1stと比べ鼻パッドがなくなっています。

f:id:Holomoto-Sumire:20200703235040j:plain

フリップアップでレンズ部分を上げることが可能になっています。

以上開封の儀でした。

次回以降HoloLens 2実機での情報も記事にしていきます。

HoloLens 2が日本で購入できるようになりました。 HoloLens2を購入した手順

本日2020年7月2日ついに日本国内でHoloLens 2が購入できるようになりました。

本ブログではHoloLensを中心にMixedRealityに関してのアクションを記事にしていますが、本日は技術や表現ではなくHoloLens 2そのものに関してまとめたいと思います。

まずは本題の注文手順

〇HoloLens 2購入手順

HoloLens 2はMicrosoftのstoreから購入できます。

www.microsoft.com

f:id:Holomoto-Sumire:20200702085415j:plain

上部のカテゴリーから[デバイス]>[VR & mixed reality]を選択します。

f:id:Holomoto-Sumire:20200702085508j:plain

2020年7月2日現在トップにHoloLens2に関するバナーが表示されます。

f:id:Holomoto-Sumire:20200702085844j:plain

今すぐ購入」を選択することで専用のページへ飛びます。

f:id:Holomoto-Sumire:20200702090027j:plain

[カートに追加]を選択することで購入するための準備が完了します。

HoloLens 2は取消および返金の対象とならず。 購入後に製品を再販しないことが条件のようです。つまりHoloLens2の転売はダメ!ということですね。

前世代機のHoloLens1stでは2018年後半から公式storeで在庫切れ状態が続き購入できなくなりました。ネット通販などで転売などもあったため、問題になっていたようです。

[よく一緒に購入されている]としてHoloLens2のアクセサリーも単品販売されています。

f:id:Holomoto-Sumire:20200702090555j:plain

Microsoft HoloLens 2 Carrying Case (ケース)

Microsoft HoloLens 2 Overhead Strap (ヘッドバンド)

Microsoft HoloLens 2 USB-C Charger & Cable (USBコンセント)

Microsoft HoloLens 2 Brow Pad (ブロウパッド)

Microsoft HoloLens 2 Brow Pad 10-Pack (ブロウパッド10個セット)

が現在購入できるようです。

HoloLensシリーズはユーザーの頭に直接デバイスを付けるため衛生面からも個別で購入できることは嬉しく感じます。特にブロウパッドは汗などで汚れることもあり得るので、快適なHoloLensライフに適時の交換は必須と感じます。

[購入手続きに進む]ことで購入の確認画面へ飛びます。

f:id:Holomoto-Sumire:20200702092031j:plain

ここでは値段と数を指定します。

7月2日現在1台42万2180円(税込み)になるようです。

前世代機HoloLens 1stが33万3800円なので8万8380円値段が上がっています

f:id:Holomoto-Sumire:20200702091427j:plain

再度[購入手続きに進む]を選択することで最終画面に進みます。

ここでは画像は載せられませんが、発送先、支払方法等の購入のための情報を入力します。

以上で注文が完了します。

f:id:Holomoto-Sumire:20200702092459j:plain

以上がHoloLens2の購入方法です。

7月2日現在6日に配達されるようです。

楽しみです。

〇HoloLensの販売形式

HoloLens2 では主に3種の販売形式でリリースされるようです。(一部まだ始まっていないものも含まれます。)

www.microsoft.com

●HoloLens 2 with Remote Assist

 企業などの法人向けの形式です。Dynamics 365 Remote Assistが使用できることから想定されているユーザーとして、業務でHoloLens2を導入したいエンドユーザーになるようです。

●HoloLens 2 (デバイスのみ)

 HoloLensの基本セットです。 今回storeに並んだ形式でもあります。 想定されているユーザーとして私のような開発者やDynamics 365 Remote Assistを使用しないエンドユーザーになるようです。 HoloLens2 with Remote Assist同様商用利用が可能です。

●HoloLens 2 Development Edition

 HoloLensの開発者むけの形式です。 ほかの二つと比べ商用利用はできないもののAzureのクレジットが付いてきたりUnityProがお試しで使えたりします。

 また、99ドル/月という支払方法も用意しているようですが、現在準備中でHoloLens 2 Development Edition を購入することはできません。