夜風のMixedReality

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

Unreal Engine 4を導入する。

 2020年現在HoloLensやPCゲームの開発エンジンとしてUnityとUnreal Engine 4の二つがあります。

 HoloLens 1の開発ではUnity、DirectXの二つが使用できました。

 2020年現在ではHoloLensの開発としてUnreal Engine4(UE4)での開発が発表され、現在はUnityがメインであった開発環境が今後変化することが予想されます。

 今回はUE4をインストールしてみました。

〇UnrealEngine

UnrealEngineはEpic Gamesが開発したゲームエンジンです。

 日本ではUnityに比べユーザーが低いようですが、海外ではNASAの宇宙飛行士の訓練シュミュレーションで使用されたり、ウォルト・ディズニー社のアニメーション制作にも使用されているようです。

 UnityはProとPersonalのライセンスがあり、価格や機能が固定されていますが、UE4はリリースまでは無料でその後発生した収入の5%を支払うという形になります。

UE4のインストール

Epic Gamesのサイトで公開されています。

Unreal Engine | 最高にパワフルな 3D 制作プラットフォーム

 サイト左上部の[ダウンロード]を選択します。

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

 ライセンスが聞かれます。

 どうやら無料プロダクト、学習用として[クリエイターライセンス]というライセンスがあるようです。

 今回は今後の展開も考え[パブリッシングライセンス]を選択しましした。

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

 ライセンスを選ぶとアカウントを聞かれます。 [サインアップ]を選択し、アカウントを作成します。

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

 UnityにおけるUnityHubのような機能を持つ[Epic Games Launcher]の実行ファイルのダウンロードが始まります。

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

 特に指定していない場合ダウンロードフォルダにダウンロードされます。 ファイルを解凍してインストーラーパッケージを実行します。

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

 ライセンスなど確認しながら[Next]を選択しアプリケーションの保存先を聞かれます。 今回Cディスクの空き容量を考え多少動きは遅くなりますがDドライブを保存先にしています。 プロジェクト等の保存も行われるようなのでCドライブを圧迫したくない場合最初に行うほうが吉なようです。

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

 Epic Games Launcherのインストールが終わり立ち上がるとアカウントを聞かれます。 事前に作成したアカウントを使用します。

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

 Epic Games Launcherのインストールが完了します。

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

 次にUE4をインストールします。

 UnrealEngineタブのライブラリーを選択します。

Engineバージョンの[+]をクリックすることでバージョンが追加されます。 [インストール]を選択することでインストールが開始されます。

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

 この時インストール場所を聞かれます。

 事前に作成したlauncherのEpicGamesフォルダーを指定します。

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

 インストールには10GBほどのストレージを使用します。

 Unityが必要なコンポーネントを個別導入するのに対しUE4は必要ない部分をそぎ落としていく形になるようです。

 以上で導入が完了しました。

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

 UnityだけではなくUE4も今後使用していきたいです。

月面探査機の打ち上げボタン HoloLens 2アプリのチュートリアルその⑰

Microsoftのドキュメント[Microsoft Docs]ではHoloLens 2の入門チュートリアルが公開されています。

ツールのインストールから詳しく掲載されているためこちらを今回勉強しながらHoloLens 2が手元にないためHoloLens 1stで動かしてみます。

 チュートリアルは以下で公開されています。

docs.microsoft.com

 前回はユーザーの月面着陸機のアプリを作るための[Lunamodule]オブジェクトの設定を行いました。

redhologerbera.hatenablog.com

〇発射ボタンの構成

 [Hierarchy]ウィンドウで、[RocketLauncher] > [Buttons] > [LaunchButton] オブジェクトを選択し、[Inspector]ウィンドウから[Pressable Button]コンポーネントの、新しい [Button Pressed () ]イベントを作成し、イベントを受信するように [LunarModule] オブジェクトを構成します。

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

トリガーするアクションとして[LaunchLunarModule.StartThruster]を定義します。

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

 次に[LaunchButton] オブジェクトを選択し、[Pressable Button]コンポーネントで、新しい [Button Pressed ()] イベントを作成し、イベントを受信するように [LunarModule] オブジェクトを構成します。

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

トリガーするアクションとして[AudioSource.PlayOneShot]を定義し、適切なオーディオ クリップ (MRTK_Gem ) を [Audio Clip]フィールドに割り当てます。

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

[PlayOneShot]はAudiosorceのClipの再生を実行する関数です。

docs.unity3d.com

  [LaunchButton] オブジェクトを選択したまま、[Pressable Button]コンポーネントで、新しい Touch End () イベントを作成し、イベントを受信するように [LunarModule] オブジェクトを構成して、トリガーするアクションとして[LaunchLunarModule.StopThruster]を定義します。

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

 Unityでエディタを実行し、ボタンを押すことで月面探査機が打ちあがります。

UnityでShaderを勉強する その③ 実際にShaderの中身を見ていく

本日はShader勉強枠です。

前回実際にShaderの中身を見ていきました。

redhologerbera.hatenablog.com

今回はもっと中身を読み解いてShaderの構造をつかみます。

前回に引き続きShaderサンプルを見ながら勉強しています。

docs.unity3d.com

〇Diffuse SimpleShader

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

 Shader "Example/Diffuse Simple" {
      SubShader {
        Tags { "RenderType" = "Opaque" }
        CGPROGRAM
        #pragma surface surf Lambert
        struct Input {
            float4 color : COLOR;
        };
        void surf (Input IN, inout SurfaceOutput o) {
            o.Albedo = 1;
        }
        ENDCG
      }
      Fallback "Diffuse"
    }

〇ShaderLabシンテックスを読み解く

前回UnityのShaderは二つの言語で記述されているといいましたが、サンプルのディフューズShaderのShaderLabシンテックスの部分を抜き取ると以下のようになります。

 Shader "Example/Diffuse Simple" {
      SubShader {
        Tags { "RenderType" = "Opaque" }
        CGPROGRAM
     
        ENDCG
      }
      Fallback "Diffuse"
    }
〇Name
 Shader "Example/Diffuse Simple" { }

ここでこのShaderの名前が定義されています。

Unity側見てみると

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

Exampleの中に

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

Diffuse Simpleが作成されています。

つまり

 Shader "XX/〇〇/▽▽" { }

という名前を付けるとしたらXXというカテゴリーグループのさらに○○というカテゴリーグループに▽▽という名前でShaderが定義されます。

〇SubShader

次にSubShader内部を見ていきます。

 SubShader {
        Tags { "RenderType" = "Opaque" }
        CGPROGRAM
     
        ENDCG
      }

〇Tags

        Tags { "RenderType" = "Opaque" }

Tagsではどのようにレンダリング(描画)を行うかを指定します。

以下のように記述することで複数持つことも可能です。

Tags { "TagName1" = "Value1" "TagName2" = "Value2" }

Diffuse SimpleではRenderTypeをOpaque(不透明)にして描画を行うように指定しています。(RGBA(Red Green Blue Alpha)のおそらく透明度を表すA値を無視する設定)

docs.unity3d.com

〇CGPROGRAM~ENDCGの中身を見る

 #pragma surface surf Lambert
        struct Input {
            float4 color : COLOR;
        };
        void surf (Input IN, inout SurfaceOutput o) {
            o.Albedo = 1;
        }
〇Pragma構造体
#pragma surface surf Lambert

#pragma文ではどのようにShaderをコンパイル(出力)するかを定義します。

#pragma文は次のように記述します。

pragma surface surfaceFunction lightModel [optionalparams]

Diffuse Sampleではsurfという関数でLambertというライティングモデルを使用します。

ライティングモデルはUnityで提供される光をどのように当てるか計算をする関数です。

docs.unity3d.com

surfという関数はその下で定義されています。

      void surf (Input IN, inout SurfaceOutput o) {
            o.Albedo = 1;
        }

Input から受け取りSurfaceOutputで出力するという形になるようです。

SurcaseOutputというのはUnityのレファレンスによると次のような定義を含んでいるようです

struct SurfaceOutput
{
    fixed3 Albedo;  // ディフューズ色
    fixed3 Normal;  // 書き込まれる場合は、接線空間法線
    fixed3 Emission;
    half Specular;  //  0..1 の範囲のスペキュラーパワー
    fixed Gloss;    // スペキュラー強度
    fixed Alpha;    // 透明度のアルファ
};

docs.unity3d.com

ここでAlbed(アルベド)は反射光のことで0にすると反射しない=真っ黒になります。

f:id:Holomoto-Sumire:20200331082511j:plain
Albedo=1

f:id:Holomoto-Sumire:20200331082607j:plain
Albedo=0

ではInputは?というとsurf関数の直下にあります。

〇Input構造体
        struct Input {
            float4 color : COLOR;
        };

Input構造体はShaderの処理で必要とされるテクスチャ情報が記述されます。

このディフューズShaderではテクスチャは使用していませんが、テクスチャを使用する場合はテクスチャ情報

ここでは、カラーを指定しています。

Inputで記述したカラーの情報がSurf関数でAlbedo=1として処理されているようです。

docs.unity3d.com

〇Fallback

最後にこのShaderがデバイスで実行できなかった場合DiffuseのShaderが代わりに呼ばれます。

以上がサンプルのディフューズShaderになります。

このShaderがディフューズShaderであることを決めているのは

        #pragma surface surf Lambert

のライティングモデルであるLambertであるようです。

次回からサンプルに従い勉強しながらこのShaderを変形させていきます。

UnityでShaderを勉強する その② 実際にShaderの中身を見ていく

 本日はShader勉強枠です。

 Shaderは3Dオブジェクトの表現において非常に大切なものですが、Unity自体やC#などと違い初心者向けの情報が少なく手を出しにくいのが現状です。

 前回Shaderとは何かを見ました。

redhologerbera.hatenablog.com

 今回はShaderの中身をのぞいていきます。

〇Shaderの中身

 Unityで作成したShaderを開くと以下のように記述されています。

Shader "Custom/NewSurfaceShader"
{
    Properties
    {
        _Color ("Color", Color) = (1,1,1,1)
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _Glossiness ("Smoothness", Range(0,1)) = 0.5
        _Metallic ("Metallic", Range(0,1)) = 0.0
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        // Physically based Standard lighting model, and enable shadows on all light types
        #pragma surface surf Standard fullforwardshadows

        // Use shader model 3.0 target, to get nicer looking lighting
        #pragma target 3.0

        sampler2D _MainTex;

        struct Input
        {
            float2 uv_MainTex;
        };

        half _Glossiness;
        half _Metallic;
        fixed4 _Color;

        // Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader.
        // See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing.
        // #pragma instancing_options assumeuniformscaling
        UNITY_INSTANCING_BUFFER_START(Props)
            // put more per-instance properties here
        UNITY_INSTANCING_BUFFER_END(Props)

        void surf (Input IN, inout SurfaceOutputStandard o)
        {
            // Albedo comes from a texture tinted by color
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
            o.Albedo = c.rgb;
            // Metallic and smoothness come from slider variables
            o.Metallic = _Metallic;
            o.Smoothness = _Glossiness;
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}
●ShaderLab 

UnityのShaderはShaderLabという言語の中でHLSLという別の言語で処理が記述されています。

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

ShaderLabの部分は大きく以下の成分で記述されています。

Shader "MyShader" {
    Properties {
   C#におけるPublicクラスのように、ここに記述されたプロパティはUnityのマテリアルで扱うことができます。
    }
    SubShader {
  実際の処理が記述されます。
    }
}

また、この部分をShaderLabシンタックスとも表します。

シンタックスを詳しく見ると次のようになります。

Shader "name"// この名前がShaderの名前になります。
{
//Propertiesに記述したパラメータはUnityのマテリアルのパラメータとして扱うことができます。 
[Properties] 
//Shaderの処理
Subshaders 
//Shaderが処理できなかった場合に実行される予備のShader
[Fallback] 
[CustomEditor] 
}

例えば

Shader "HoloMoto/yokazenoMixedReality"
{
    Properties
    {

    }

}

と記述すると

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

UnityのマテリアルでHoloMoto/yokazenoMixedRealityとしてShaderが登録されます。

ここではShaderの処理が記述されていないのでShaderエラーを示す蛍光紫のマテリアルになります。

docs.unity3d.com

●HLSL

HLSL(High Level Shading Language)言語はMicrosoftによって開発されたシェーディング言語です。

ShaderLab内で

CGPROGRAM

ENDCG

の間に記述される部分がHLSL言語で記述します。

UnityではShaderとはShaderLabでUnityのマテリアルとHLSL言語を結び付けています。

ここからは実際にUnityのレファレンスからShaderを記述しながら学びます。

docs.unity3d.com

〇DiffuseShader

  [Diffuse]とは拡散を意味します。

 3Dオブジェクトに当たった光の反射を単純化し均一に反射させることを意味します。

 広く使われるShaderの表現でオブジェクトの[Albedo]=反射光色に使われます。

 光源からの光の向きとオブジェクト表面の法線ベクトルによって光の強さが変化します。

 Shader "Example/Diffuse Simple" {
      SubShader {
        Tags { "RenderType" = "Opaque" }
        CGPROGRAM
        #pragma surface surf Lambert
        struct Input {
            float4 color : COLOR;
        };
        void surf (Input IN, inout SurfaceOutput o) {
            o.Albedo = 1;
        }
        ENDCG
      }
      Fallback "Diffuse"
    }

 勉強したことを解説していきます。

Shaderにコメントを付けていくと次のようになります。

//Shaderの名前
 Shader "Example/Diffuse Simple" {
      SubShader {
      //処理
       Tags { "RenderType" = "Opaque" }
   //CGPROGRAM~ENDCGの間はHLSL言語を使用して記述されます。
        CGPROGRAM
     //ターゲットコンパイルを指定します。
        #pragma surface surf Lambert
   //描画時にUnityから渡される引数が入った構造体
        struct Input {
    //float4型の頂点カラー
            float4 color : COLOR;
        };
  //実際の描画
        void surf (Input IN, inout SurfaceOutput o) {   
    o.Albedo = 1;
        }
        ENDCG
      }
  //このShaderを実行できない場合、"Diffuse"を試す
      Fallback "Diffuse"
    }

今回Shaderの中身を軽く見ました。

次回以降より詳しく見ていきます。

UnityでShaderを勉強する その① Shaderとは何か?どんなことができるか?

本日はShader勉強枠です。

 Shaderは3Dオブジェクトの表現において非常に大切なものですが、Unity自体やC#などと違い初心者向けの情報が少なく手を出しにくいのが現状です。

 今回からShader枠として0からShaderを勉強していきます。

〇Shaderとは?

 Shader(シェーダー)とは一言でいうと『3Dオブジェクトを描画するためのプログラム』です。

 Unity内に存在するすべての3Dオブジェクトは[Shader]によって3Dオブジェクトとして描画されて[scene]ウィンドウや[Game]ウィンドウで見ることができます。

 例えばUnityの[Hierarchy]ウィンドウで右クリックから[Create→3DObject→Cube]を選択してUnityPrimitive3Dオブジェクトのキューブを作成します。

docs.unity3d.com

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

 この時なにもShaderなど設定していませんがすでに白いキューブが生み出されます。

 Shaderを書くこともなくキューブが描画されていますが、[Inspector]ウィンドウを見てみるとすでに[DefaultMaterial]という名のマテリアルがアタッチされており、[Standard]というShaderが適応されています。

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

Unityでは特に意識しなくてもマテリアルに紐づく形でShaderが適応されるようになっています。

〇MaterialとShaderの違い

 UnityではShaderはマテリアルに紐づくと書きましたが、その二つの関係を見ていきます。

・Shader

   オブジェクトを描画するためのプログラム。ガラス、プラスティックといった半透明な透過率や色、発光、反射といった見え方だけではなく、メッシュを操作し本来のメッシュとは違う見た目に変化させることもできます。

・マテリアル

   Shaderから提供されるパラメータを扱ったり、Shaderのパラメータにテクスチャを与えて描画をさせるなど描画設定の集まりのことを指します。

   マテリアルの中でテクスチャやShaderを扱います。

・テクスチャ

   色や模様などを表現する画像です。

   模様だけではなくShaderの機能を用いることでNormalMapと言い凸凹を再現するテクスチャや、テクスチャに基づいて一部を発光させる、金属感を持たせるなど様々な表現が可能になります。

〇Shaderでできること

Shaderを用いるとデバイスの処理の負荷を下げつつ様々な表現が可能になります。

●画像を貼る

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

●デコボコ感を出す。

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

●金属感を出す

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

●光が当たっている場所と光が当たらない場所でテクスチャを入れ替える。

 Shaderを用いて光の当たっている場所と影の場所で昼、夜のテクスチャを分けています。

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

●アニメーション

 Shaderを用いることでUnityのスクリプトを書かずにオブジェクト自体がアニメーションを行うこともできます。

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

 また、Unityのスクリプトとは違いGPUに依存した処理で動いているためスクリプトで表現するよりもはるかに処理のコストを下げることができる場合があります。

 半面ターゲットデバイスGPUに依存しており、描画が動かない場合もあります。その場合もShaderで『動かなかった場合はこのShaderを使う』という設定ができるのでオブジェクト自体は何らかの形で描画はされることが多いです。

〇Shaderを作成する

 Unityの[Project]ウィンドウを右クリックして[Create]→[Shader]→[Standard Surface Shader]を選択しShaderを作成します。

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

 作成したShaderをダブルクリックすることでC#などのスクリプトと同様にIDEが開きます。(デフォルトではVisualStudio)

 Unityのスクリプトとは違いShaderLabと呼ばれる別の言語で記述します。

 Unityのレファレンスでサンプルが公開されているので次回以降実際に記述します。

docs.unity3d.com

Windows10デバイス同士で無線でデータのやり取りを行える『近距離間共有』を使ってみる。

 本日は便利なツールの調査枠です。

 ネットワークがない環境で知り合いや自分自身のもう一台のPCにデータを送りたいという場合は多く訪れます。

 USBメモリーで相手に渡すことが一般的のようですが、そもそもUSBメモリーを持ち歩いていない場合もあります。

 Window10デバイスでは『近距離間共有』機能を用いることでネットワークがない環境で無線でデータのやり取りが行えます。

 この機能はMicrosoft HoloLensでも同様に使用できます。

 Windows版のAirDropのような機能です。

〇近距離間共有機能とは?

 近距離間共有機能はBluetoothWi-Fiを使用しドキュメントや写真などのファイルやウェブサイトのリンクを近くのWindows10デバイスと共有できる機能です。

 近距離間共有を行うためにはデバイスBluetoothが使用できることが条件です。

https://support.microsoft.com/en-us/help/4091344/windows-10-share-things-with-nearby-devices

〇近距離間共有の使い方

●データを受けるPCの設定

 ●1.スタートメニューから『設定』>『システム』>『共有エクスペリエンス』を開き『近距離共有』のトグルをオンにする。

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

 ●2.共有設定を『近くにいるすべてのユーザー』に変更する。

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

 ●3.デフォルトではダウンロードフォルダが保存場所になっているため必要に応じて変更します。

●データを送る側のPCでの操作

 ●1.エクスプローラーで送りたいファイルを右クリックし、『共有』を選択する。

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

 ●2.データーを受け取るPCのデバイス名が表示されるので選択する。

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

●データを受け取る側のPCの操作

 ●データを受信するとダイアログボックスが表示されるので『保存』をクリック

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

 ここで必要ないデータや知らない人からの不審なデータの受け取りを拒否できます。

 保存を選択すると共有の完了です。

 指定した保存場所(デフォルトではダウンロードフォルダ)に保存されます。

 最後に必要に応じて次の操作を行います。

 ●ファイルやリンクを受け取るPC側でタスクバーから『近距離間共有』をオフ(グレー)にする。

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

 これを行うことで必要な時のみ受信を行うことができます。

Microsoft HoloLensで近距離間共有を行う。

 Microsoft HoloLensでは通常ファイルをダウンロードする方法として以下の方法があります。

 ・USBでPCと接続し通常のカメラなどと同様にエクスプローラーからファイルを落とす

 ・有線もしくは無線でデバイスポータルへ接続しファイルを落とす

 ・メールやSkypeなどで送る

 ・近距離間共有を行う。

 ファイルの大きさに寄りますが、ネットワークがない環境でUSBコードがない場合今回の『共有』を使用することでファイルを送ることができます。

 ファイルを受け取るPC側の設定はPC同士と同じです。

●HoloLens側の設定

 ●File ExplorerおよびPhotoアプリを開き送りたいファイルをAirTapでホールド状態で止める(HoloLensでの右クリックに相当)、Shareタブを選択

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

●[Select to turn on nearby sharering]を選択する

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

●送りたいデバイス名を選択する。

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

 以上でHoloLensからPC側にファイルを送ることができました。

 この操作はPCからHoloLensに送ることもできます。

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

 この場合はHoloLens専用のアイコンとHoloLensのデバイス名が表示されます。

 以上で『近距離間共有』を使ってみました。

 USBメモリーもネットワークもなく送受信できるため人によっては使用頻度が高い機能と言えます。

Windowsデバイス同士で無線で画面を共有する『接続』アプリを使う

Windows10デバイスでは『接続』と呼ばれる標準アプリケーションを用いることで、非ネットワーク環境下でUSBなどのコードを用いずに他Windows10デバイスをサブディスプレイとして用いることができます。

 WindowsであるHoloLensでは、ユーザーの視点をほぼリアルタイムで他のWindows10デバイスに移し、アテンドやユーザー以外のゲストに対してコンテンツをリモートで管理することができます。

『接続』アプリを使用するためには2台のWindows10デバイスが必要になります。

〇Windows10 PCの場合

 Windows10PC同士を使用することで一方のディスプレイをもう一方のサブディスプレイとして用いマルチディスプレイでの作業が可能になります。

 ここではメインとなるPCをホスト、ディスプレイ画面をホストに提供するサブディスプレイをゲストPCと呼びます。

 ●1.ゲストPC側でWindowsアイコン(スタートメニュー)から『接続』アプリを起動する。

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

 ●2.ホストPC側でスタートメニューから「設定」→[システム]→[このPCへのプロジェクション]でプロジェクション画面を開きます。

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

 ●3. ホストPC側でタスクメニューよりサイドメニューを展開します。[接続]をクリックします。

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

●4. ゲストPCの名前が表示された場合、選択をすることでプロジェクションが開始されゲストPCのディスプレイ画面にホストPCの画面が表示されます。

 プロジェクションモードを[拡張]に設定することでサブディスプレイとして使用することが可能になります。 

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

youtu.be

Microsoft HoloLensの場合

HoloLensの場合は[拡張]としては使用ができませんが、ユーザーの見ている視点を画面にミラーリングすることができます。

●1.ゲストPC側でWindowsアイコン(スタートメニュー)から『接続』アプリを起動する。

●2.HoloLensのメニュー下部の[Connect]をAirTap

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

●3.PCと同じくリストにゲストPCの名前が現れるのでAirTapして選択

●4.ゲストPC側でミラーリングが始まります。