MRが楽しい

MRやVRについて学習したことを書き残す

USB接続でHoloLensのDevicePortalを参照する

2021/11/19追記

2021/11/19 現在、最新のWebブラウザでは https://127.0.0.1:10443 にアクセスする必要があります。
以下の記事が最新になります。本記事を確認される際はご注意ください。
bluebirdofoz.hatenablog.com

本日は HoloLens の技術調査枠です。
USB接続を用いて HoloLens の DevicePortal を参照する方法について知る機会がありました。
docs.microsoft.com

HoloLens と PC でUSB接続を行った状態で http://127.0.0.1:10080 のアドレス(Localhost)にアクセスするだけです。
f:id:bluebirdofoz:20180216180335j:plain
DevicePortal 画面を開くことができました。

ネットワーク環境のない場所でも、ファイルの送受信を始めとする DevicePortal の機能を利用できて便利です。
f:id:bluebirdofoz:20180216180344j:plain

なお、DevicePortal を利用するには以下の記事の手順と同様、HoloLens 側で事前に DevicePortal の機能を有効にしておく必要があります。
bluebirdofoz.hatenablog.com

[Windows IP Over USB]のインストール手順

※ 2019/02/13追記

127.0.0.1:10080 でのアクセスを利用するにはWindows 10 開発者ツールのインストールが必要となります。
docs.microsoft.com

PC に Visual Studio Update 1 と Windows 10 開発者ツールをインストールします。 これで USB 接続が有効になります。

以下のページからWindows 10 SDKインストーラをダウンロードし、「Windows IP Over USB」のキットをインストールすれば利用可能です。
developer.microsoft.com
f:id:bluebirdofoz:20190214085515j:plain

ダウンロードした winsdksetup.exe を実行します。
インストールを選択して[Next]をクリックします。
f:id:bluebirdofoz:20190214085524j:plain

データ送信の有無を選択して[Next]をクリックします。
f:id:bluebirdofoz:20190214085531j:plain

ライセンス条項を確認して[Accept]をクリックします。
f:id:bluebirdofoz:20190214085541j:plain

[Windows IP Over USB]をチェックして[Install]をクリックします。
f:id:bluebirdofoz:20190214085551j:plain
[Windows IP Over USB]のみのインストールであれば 1MB 程度のインストールで済みます。

[Windows IP Over USB]が動作しない場合

※ 2020/02/22追記

稀に[Windows IP Over USB]をチェックしてインストールを行っても HoloLens がUSB接続で認識されないケースが発生します。
この場合はタスクマネージャーを開き、[詳細]タブから[IpOverUsbSvc.exe]が動作しているか確認します。
f:id:bluebirdofoz:20200222095754j:plain

IpOverUsbSvc.exe は通常、以下の共通ディレクトリにインストールされています。

C:\Program Files (x86)\Common Files\Microsoft Shared\Phone Tools\CoreCon\11.0\bin

f:id:bluebirdofoz:20200222095802j:plain

本ファイルは上記の Windows SDK または VisualStudio のインストール時に追加されます。
ファイルが存在しない、または、実行されていない場合、何らかの理由で本機能がアンインストールされた後、他のインストーラが正常にそれを検出できていない可能性があります。

この場合は以下のインストール手順を試してみてください。

1.Windows 10 SDKインストーラをダウンロードする。
developer.microsoft.com
f:id:bluebirdofoz:20200222095825j:plain

2.インストーラを起動し、ファイルのダウンロードを実行する。
f:id:bluebirdofoz:20200222095834j:plain

3.ダウンロードに含まれる以下のインストーラを直接実行して[Windows IP Over USB]のインストールを実行する。

Windows Kits\10\WindowsSDK\Installers\Windows IP Over USB-x86_en-us.msi

f:id:bluebirdofoz:20200222095843j:plain

筆者環境で同事象が発生した際はこちらの手順で[Windows IP Over USB]が動作するようになりました。
以下、参考ページです。
social.msdn.microsoft.com

公式チュートリアル「HOLOGRAMS 240 4章」を試してみる

本日はチュートリアルお試し枠です。
公式チュートリアル「HOLOGRAMS 240」の続きを実施します。
以下ページからプロジェクトを取得しています。
・Holograms 240
 https://developer.microsoft.com/en-us/windows/mixed-reality/holograms_240


4章 Chapter 4 - Discovery を実施します。ページの説明に沿って進めます。

皆が共有しているホログラフィック世界につながっているのを確認します。
この章では、同じ共有セッションで他の全ての HoloLens デバイスのヘッドの位置と回転を取得します。

目標

・共通セッションの中でお互いを発見する。
・参加者のアバターを選択して共有する。
・プレーヤーのアバターを全員の頭に付ける。

インストラクション

・Project パネルで、Holograms フォルダに移動します。
・PlayerAvatarStore.prefab を Hierarchy にドラッグアンドドロップします。
f:id:bluebirdofoz:20180215164059j:plain

・Project パネルで、Script フォルダに移動します。
・AvatarSelector スクリプトをダブルクリックして Visual Studio でファイル開きます。
・内容を Holograms 240 ページで公開されている AvatarSelector.cs のコードに書き換えます。

・Hierarchyから、HologramCollection オブジェクトを選択します。
・Inspector から、Add Component ボタンをクリックします。
・検索欄に Local Player Manager を入力します。検索結果を選択して追加します。
f:id:bluebirdofoz:20180215164122j:plain

・Hierarchyで、HologramCollectionオブジェクトを選択します。
・Inspector から、Add Component ボタンをクリックします。
・検索欄に Remote Player Manager を入力します。検索結果を選択して追加します。
f:id:bluebirdofoz:20180215164144j:plain

・Project パネルで、Script フォルダに移動します。
・HologramPlacement スクリプトをダブルクリックして Visual Studio でファイル開きます。
・内容を Holograms 240 ページで公開されている HologramPlacement.cs のコードに書き換えます。

・Project パネルで、Script フォルダに移動します。
・AppStateManager スクリプトをダブルクリックして Visual Studio でファイル開きます。
・内容を Holograms 240 ページで公開されている AppStateManager.cs のコードに書き換えます。

展開して楽しむ
・アプリケーションをビルドして HoloLens にインストールします。
・ベルが聞こえたら、アバター選択メニューを見つけ、エアタブジェスチャーアバターを選択します。
・ホログラムを見ておらず、HoloLensがサービスと通信しているときに、カーソルの周りの点灯が異なる色に変わります。
1. アンカーをダウンロードする(緑色)
2. 位置データをインポート/エクスポートする(黄色)
3. アンカーをアップロードする(青色)
・表示中の点灯色がデフォルトの色(ライトパープル)なら、セッション中の他のプレイヤーと対話する準備ができています。
・共有セッションにつながっている他の人を見てください - 頭の動きを模倣するホログラフィックロボットが見えます。
f:id:bluebirdofoz:20180215164201j:plain

Blender標準テクニック[ローポリキャラクター制作で学ぶ3DCG]を試す その51(ペイントマスク)

本日は書籍「Blender標準テクニック[ローポリキャラクター制作で学ぶ3DCG]」の実施枠です。

今回はウェイトペイントの続きです。
f:id:bluebirdofoz:20180214185540j:plain
ドレス衣装部分のウェイトペイントを行っていきます。

首、上半身から腕、足などのボーンに対するウェイトペイントをそれぞれ行います
f:id:bluebirdofoz:20180214185551j:plain

手などの入り組んだ箇所では意図しない個所をペイントしてしまう可能性があります。
手の部分のウェイトペイントでは新たにペイントマスクモードを利用してみます。

まず、編集モードでペイントを行いたい箇所の頂点を選択します。
f:id:bluebirdofoz:20180214185603j:plain

この状態で「ウェイトペイントモード」に移行します。
f:id:bluebirdofoz:20180214185613j:plain

ここで「ペイントマスク用の面選択モード」ボタンを押下します。
するとペイントマスクモードとなり、選択した頂点のみにウェイトペイントが行える状態になります
f:id:bluebirdofoz:20180214185625j:plain

また、この状態では右クリック操作は面選択になります。
Aキーなどのショートカットキーも利用できるので新たにマスク面を設定しなおすことも可能です。
このモードのまま、特定のボーンを選択したい場合は、Ctrlキーを押しながら右クリックでボーンを選択します。
f:id:bluebirdofoz:20180214185635j:plain

この機能を利用すれば、塗る個所を面選択で事前に指定できるため、入り組んだ箇所のウェイトペイントが容易になります。
f:id:bluebirdofoz:20180214185647j:plain

全てのボーンの頂点グループを塗り終えたらポーズモードでボーンを動かしてみて、塗残しがないか確認します。
f:id:bluebirdofoz:20180214185659j:plain

公式チュートリアル「HOLOGRAMS 240 3章」を試してみる

本日はチュートリアルお試し枠です。
公式チュートリアル「HOLOGRAMS 240」の続きを実施します。
以下ページからプロジェクトを取得しています。
・Holograms 240
 https://developer.microsoft.com/en-us/windows/mixed-reality/holograms_240

3章 Chapter 3 - Shared Coordinates を実施します。ページの説明に沿って進めます。

ホログラムを見たり対話したりするのは楽しいですが、さらに進んでみます。
誰もが一緒に見ることができるホログラムをセットアップします。

目標

・共有エクスペリエンスのためのネットワークをセットアップする。
・共通の基準点を設定する。
・デバイス間で座標系を共有する。
・皆で同じホログラムを見る。

注意

アプリケーションが共有サーバーに接続するには、InternetClientServer と PrivateNetworkClientServer の機能を宣言する必要があります。
これはすでに Holograms 240 で行われていますが、自作のプロジェクトではこれを実施してください。
1. メニューから、Edit -> Project Settings -> Player に移動して、player settings に移動します。
2. Windows Store タブをクリックします。
3. Publishing Settings -> Capabilities セクションで、InternetClientServer と PrivateNetworkClientServer の機能をチェックします

インストラクション

・Project パネルで、HoloToolkit-Sharing-240 / Prefabs / Sharing フォルダに移動します。
・Sharing.prefab を Hierarchy にドラッグアンドドロップします。
f:id:bluebirdofoz:20180213155101j:plain

次に、共有サービスを開始する必要があります。1台のPCだけがこのステップを実行する必要があります。
・メニューから HoloToolkit-Sharing-240 を選択します。
・ドロップダウンメニューから Launch Sharing Service を選択します。
ファイアウォールのプロンプトが表示されたら、Private Network オプションをチェックし、アクセスを許可する。
・Sharing Service コンソールウィンドウに表示されているIPv4アドレスを書き留めます。
 これは、サービスが実行されているマシンと同じIPです。
f:id:bluebirdofoz:20180213155122j:plain

共有環境に参加するアプリケーションに残りの手順を実施します。
・Hierarchy から、Sharing オブジェクトを選択します。
・Inspector の Sharing Stage コンポーネントで、サーバーアドレスを「localhost」から SharingService.exe を実行しているマシンのIPv4アドレスに変更します。
f:id:bluebirdofoz:20180213155144j:plain

・Hierarchy から、HologramCollection オブジェクトを選択します。
・Inspector から、Add Component ボタンをクリックします。
・検索欄に Import Export Anchor Manager を入力します。検索結果を選択して追加します。
f:id:bluebirdofoz:20180213155205j:plain

・Project パネルで、Script フォルダに移動します。
・HologramPlacement スクリプトをダブルクリックして Visual Studio でファイル開きます。
・内容を Holograms 240 ページで公開されている HologramPlacement.cs のコードに書き換えます。

・Unityに戻り、Hierarchy から HologramCollection オブジェクトを選択します。
・Inspector から、Add Component ボタンをクリックします。
・検索欄に App State Manager を入力します。検索結果を選択して追加します。
f:id:bluebirdofoz:20180213155226j:plain


展開して楽しみます。
・アプリケーションをビルドして HoloLens にインストールします。
・EnergyHub を設置する前にアンカーがサービスにアップロードされるのを待つ必要があります(30~60秒かかる場合があります)。
 アップロードが完了するまで、タップジェスチャは無視されます。
f:id:bluebirdofoz:20180213155248j:plain

・EnergyHub を設置すると、そのアンカーがサービスにアップロードされ、他のHoloLensデバイスに展開できます。
・HoloLensがセッションに参加すると、そのデバイスでの EnergyHub の位置が正しくない可能性があります。
 ただし、アンカーと EnergyHub の場所がサービスからダウンロードされるとすぐに、EnergyHub は新しい共有場所に移動します。
 これが30~60秒以内に起こらない場合は、より多くの環境の手がかりを収集するために、元のHoloLensがあった場所まで歩いてください。
 それでも場所がロックできない場合は、アプリを再展開します。
・全ての Hololens がアプリケーションを実行している状態で、EnergyHub を探します。
 ホログラムの位置とテキストの向きが全て合っていますか?
f:id:bluebirdofoz:20180213155307j:plain

公式チュートリアル「HOLOGRAMS 240 2章」を試してみる

本日はチュートリアルお試し枠です。
公式チュートリアル「HOLOGRAMS 240」の続きを実施します。
以下ページからプロジェクトを取得しています。
・Holograms 240
 https://developer.microsoft.com/en-us/windows/mixed-reality/holograms_240



2章 Chapter 2 - Interaction を実施します。ページの説明に沿って進めます。

この章では、ホログラムとのやりとりを行います。カーソルを追加して、視線を視覚化します。
その後、ジェスチャーを追加し、手を使ってホログラムを空間上に置いてみます。

目標

・視線入力を使用して、カーソルを制御します。
ジェスチャー入力を使用して、ホログラムをやり取りします。

インストラクション

視線

・Hierarchy で、HologramCollection オブジェクトを選択します。
・Inspector から、Add Component ボタンをクリックします。
・メニューで、検索欄に Gaze Manager を入力します。検索結果を選択して追加します。
f:id:bluebirdofoz:20180212144203j:plain

・HoloToolkit-Sharing-240 / Prefabs / Input フォルダから、Corsor.prefab を探します。
・Corsor.prefab を Hierarchy にドラッグアンドドロップします。
f:id:bluebirdofoz:20180212144215j:plain

ジェスチャー

・Hierarchy で、HologramCollection オブジェクトを選択します。
・Add Component ボタンをクリックし、検索フィールドに Gesture Manager と入力します。検索結果を選択して追加します。
f:id:bluebirdofoz:20180212144227j:plain

・Hierarchy で、HologramCollection オブジェクトを展開します。
・子オブジェクトの EnergyHub オブジェクトを選択します。
・Inspector から、Add Component ボタンをクリックします。
・メニューで、検索欄に Hologram Placement を入力します。検索結果を選択して追加します。
f:id:bluebirdofoz:20180212144301j:plain

・メニューから File > Save Scene を選択してシーンを保存します。
f:id:bluebirdofoz:20180212144316j:plain

展開して楽しむ

・前の章の説明に従って、HoloLensをビルドして展開します。
・アプリケーションが起動したら、頭を動かして、EnergyHub が視線に追いついているかを確認します。
・ホログラムを注視するとカーソルが表示され、ホログラムを注視していないときは点滅状態になります。
・エアータップを行い、ホログラムを置きます。今回のプロジェクトでは、ホログラムを1度だけ配置することができます。
f:id:bluebirdofoz:20180212144325j:plain

公式チュートリアル「HOLOGRAMS 240 1章」を試してみる

本日は久々のチュートリアルお試し枠です。
未着手だった公式チュートリアル「HOLOGRAMS 240」を実施します。
以下ページからプロジェクトを取得します。
・Holograms 240
 https://developer.microsoft.com/en-us/windows/mixed-reality/holograms_240


HOLOGRAM 240 はサーバ型シェアリングのチュートリアルになります。
既にUNET型のサンプルがある現状では今更ですが、機会があったので実施記録を残しておきます。
最初に1章 Chapter 1 - Holo World を実施します。ページの説明に沿って進めます。

この章では、最初のUnityプロジェクトをセットアップし、ビルドとデプロイの手順を説明します。

目標

・ホログラフィックアプリケーションを開発するためのUnityのセットアップ。
・設定したホログラムを見る。

インストラクション

・Unityを開始します。
・開くを選択します。
アーカイブを解凍したSharedHologramsフォルダを選択します。
・プロジェクト名を選択し、フォルダの選択をクリックします。
f:id:bluebirdofoz:20180211043713j:plain

・Hierarchy で Main Camera を右クリックし、Delete を選択します。
・HoloToolkit-Sharing-240 / Prefabs / Cameraフォルダで、Main Cameraプレハブを探します。
・Main Camera を Hierarchy にドラッグアンドドロップします。
f:id:bluebirdofoz:20180211043721j:plain

・Hierarchy で右クリックし、Create -> Create Empty を選択します。
・作成された新しい GameObject を右クリックし、Rename を選択します。
・GameObject の名前を HologramCollection に変更します。
・Hierarchy 内の HologramCollection オブジェクトを選択します。
・Inspector で、Transform Position をX:0、Y:-0.25、Z:2 に設定します。
f:id:bluebirdofoz:20180211043733j:plain

・Project パネルの Holograms フォルダで、「EnergyHub」を検索します。
・EnergyHub.prefab をプロジェクトパネルから HologramCollection の子オブジェクトとして追加します。
f:id:bluebirdofoz:20180211043740j:plain

・メニューから File > Save Scene を選択します。
・シーンに SharedHologramsと いう名前を付けて、Save をクリックします。
f:id:bluebirdofoz:20180211043752j:plain

・ホログラムをプレビューするには、Unity の再生ボタンを押します。
・もう一度再生を押すと、プレビューモードが停止します。
f:id:bluebirdofoz:20180211043801j:plain

Unity から Visual Studio へのエクスポート

・メニューから File -> Build Setting を選択します。
・シーンを追加するには、Add Open Scenes をクリックします。
・Platform リストで Universal Windows Platform を選択し、Switch Platform をクリックします。
SDK を Universal 10 に設定します。
・TargetDevice を HoloLens に設定し、Build Type を D3D に設定します。
・Unity C# Projects をチェックします。
・最後に Build をクリックします。
f:id:bluebirdofoz:20180211043811j:plain

・表示されるファイルエクスプローラウィンドウで、「App」という名前の新しいフォルダを作成します。
・App フォルダをクリックします。
・Select Folderを押します。
・ビルドが完了すると、ファイルエクスプローラウィンドウが表示されます。
・Appフォルダを開きます。
・SharedHolograms.sln を開いて Visual Studio を起動します。
Visual Studioのトップツールバーを使用して、ターゲットをデバッグからリリースに、ARM から X86 に変更します。
・Local Machine の横にあるドロップダウン矢印をクリックし、Remote Device を選択します。
・HoloLensの名前またはIPアドレスをアドレスに設定します。
 デバイスIPアドレスがわからない場合は、Hololens の Settings -> Network & Internet -> Advanced Options を参照する。
 または Cortana に問い合わせます。「Hey Cortana, What's my IP address?」
・認証モードを Universal に設定したままにします。
・Select をクリックします。

デバッグ -> デバッグなしの開始 をクリックするか、Ctrl + F5を押します。
 デバイスに初めて展開する場合は、Visual Studioとペアリングする必要があります。
・HoloLens を被って、EnergyHub ホログラムを見つけてください。
f:id:bluebirdofoz:20180211043820j:plain

Blender標準テクニック[ローポリキャラクター制作で学ぶ3DCG]を試す その50(ウェイトペイントのXミラー)

本日は書籍「Blender標準テクニック[ローポリキャラクター制作で学ぶ3DCG]」の実施枠です。

今回はウェイトペイントの続きです。
f:id:bluebirdofoz:20180210220504j:plain
共通部分のウェイトペイントを行っていきます。

前回、顔全体のメッシュを頭部ボーンに関連付けました。
しかし、正確には首部分は首ボーンに動きを追従させる必要があります。
まず、ウェイトペイントモードまたは頂点グループパネルを利用して首部分のウェイト値を 0 に戻します。
f:id:bluebirdofoz:20180210220513j:plain

次に首ボーンと関連付く頂点グループに、首部分のウェイト値を 1 で設定します。
f:id:bluebirdofoz:20180210220526j:plain

これで頭部メッシュは頭部ボーンに、首メッシュは首ボーンに追従するようになります。
f:id:bluebirdofoz:20180210220538j:plain

頭部パーツ、ツインテールの根本部分は頭部ボーンに関連付けます。
f:id:bluebirdofoz:20180210220547j:plain

根本以外のツインテールのウェイトは作成したボーンに合わせてウェイトペイントを塗っていきます。
ウェイトペイントを用いる場合、Xミラーの設定を忘れないように塗ります。
f:id:bluebirdofoz:20180210220601j:plain

頂点グループパネルを用いる場合は、最初に左右の対になるボーンの頂点グループを作成します。
f:id:bluebirdofoz:20180210220609j:plain

その状態で一方のウェイト設定を行えば、自動的に反対側のメッシュは対のボーンに関連付けられます。
f:id:bluebirdofoz:20180210220619j:plain

最後に髪のウェイトペイントを実行します。
このオブジェクトはミラーモディファイアを適用していないので、ミラーを気にする必要はありません。
f:id:bluebirdofoz:20180210220626j:plain

ここまでの塗りに不足がなければ、親ボーンである首ボーンを動かすと、全てのメッシュがそれぞれのボーンに追従します。
f:id:bluebirdofoz:20180210220634j:plain