狠狠撸
Submit Search
HoloLensハンズオン:AirTap & SpatialMapping編
?
17 likes
?
4,543 views
T
Takashi Yoshinaga
Follow
1/7,8,14,28に開催されたARコンテンツ作成勉強会の演習パート資料。 ※Unityの使い方の基礎に関する演習も行う都合上、回りくどい部分があります。
Read less
Read more
1 of 74
More Related Content
HoloLensハンズオン:AirTap & SpatialMapping編
1.
HoloLensコンテンツ開発ハンズオン ARコンテンツ作成勉強会 #AR_Fukuoka , #AR_Kumamoto,
#AR_Hiroshima
2.
開発環境とツール 開発環境:Unity ? マルチプラットフォーム対応のゲームエンジンおよび開発環境 ? GUI上で視覚的にCGを配置したり機能を追加したりできる ?
C#でインタラクティブな挙動を記述することが可能 ? Unity5.5からはHoloLens標準サポート 開発支援ツール:HoloToolkit ? HoloLens対応システムの開発を支援するツールキット ? AirTapやカーソルの挙動、空間認識をわずかな手間で利用できる ? 様々なサンプルプログラムを提供 ? Unityエディタ上で視点の移動をする機能なども提供 → 実機やエミュレータ(Windows10 pro対応)がなくても開発可能
3.
本日作成するコンテンツ YouTube → https://youtu.be/_BmbL4yw8R0
4.
まずは鲍苍颈迟测の操作の基本
5.
プロジェクトを作成 (1) HoloToolkit-Unity-master.zipをわかりやすい場所に解凍 (2) Unityを起動後、画面右上のOPENをクリック OPEN
6.
プロジェクトを作成 HoloToolkit-Unity-masterフォルダを開き、[フォルダーの選択]をクリック HoloToolkit-Unity-master フォルダーの選択 HoloToolkit-Unity-master
7.
Unityの操作画面(概要) ゲーム空間の設計画面 空間に置いた オブジェクト の名称一覧 プロジェクトに追加されたAsset(CGやプログラムなど)の一覧
8.
ゲーム空間にCGを追加しよう 右クリック 3D Object→Cube
9.
実行してみよう クリックして実行 クリックして終了 カメラから見た空間
10.
オブジェクトの位置?向き?サイズを調整 クリックして選択 移動 回転 拡大?縮小
11.
Scene(設計画面)の視点を変えよう [←] [→]で左右移動 [↑][↓]でズームイン/アウト [Alt]+ドラッグで回転 +ドラッグで上下左右 他にもいろいろ → http://goo.gl/Lq1ILT
12.
数値を用いたCG位置?サイズの指定 クリック Positionを0 0 1.2に変更
Scaleを全て0.15に変更 ※位置や大きさの単位はm Inspector(≒詳細情報)
13.
CGの詳細情報の編集:色の設定 (1/3) ②右クリック ③ Create マテリアル(色や質感の設定)を作成 ④
Material ①Assets
14.
CGの詳細情報の編集:色の設定 (2/3) 作成したマテリアルの色(Albedo)を設定 (2) Albedoの右側をクリックし、色を選択 (1)作成したマテリアルをクリック
15.
CGの詳細情報の編集:色の設定 (3/3) オブジェクト(Cube)のマテリアルを開き、作成したマテリアルを割り当て (2) Materialsの横の▼ (1)Cube (3)
Element0に ドラッグ&ドロップ
16.
確認 色が反映されていればOK。あとから色の変更も可能。
17.
重力の影響を設定 Add Component 選択 RigidBody
18.
动作确认と微調整 実行してみよう Cubeが落下するはず Cubeが小さく感じる場合はMainCameのPositionを0,0,0に変更
19.
地面を仮作成しよう 右クリック 3D Object→Plane
20.
地面を下げる Plane Positionを0 -0.8 0に変更
21.
Sceneの保存 Scene名 ? [Ctrl]+[s]でダイアログを開き、好きな名前で保存 ? コンテンツ作成中はこまめに[Ctrl]+[s]すること
22.
贬辞濒辞罢辞辞濒碍颈迟を用いた开発
23.
HoloLens Cameraの設定 Main Cameraを削除 →
顿别濒别迟别キー
24.
HoloLens Cameraの設定 Assets →
HoloToolkit → Input → Prefabs HoloLensCameraを ドラッグ&ドロップ
25.
动作确认 [←] [→]で左右移動 [↑] [↓]で前進/後退 [Q]
[E]で上下 右クリック+マウス移動で回転
26.
補足:移動?回転方法の設定例 (1)操作内容を選択 KeyboardXZTranslation (2) Sensitivity Scaleを
2 (3)Axis TypeをKeyboard Arrows ↑↓← →キーを押下した時の移動量がデフォルトより小さくなる
27.
SpatialMappingを用いた空間認識 HoloLensで認識した空間 を用いるのでPlane不要 → Deleteで削除
28.
SpatialMappingを用いた空間認識 Assets → HoloToolkit
→ SpatialMapping → Prefabs SpatialMappingを ドラッグ&ドロップ
29.
动作确认 HoloLens実機では空間を認識してくれるがPCでは当然無理
30.
空間モデルのインポート(公式サンプル) ② Assets →
HoloToolkit-Tests → SpatialMapping → Meshes ③ FakeSpatialMappingMesh をRoom Modelにドラッグ&ドロップ ① Spatial Mapping
31.
空間モデルのインポート(公式サンプル) (1) 実行 部屋のモデルが表示される 自分で持っている部屋のモデルも使用することが可能です(次項参照)
32.
HoloLensで取得した部屋のメッシュを利用 Windows Device Portalから メッシュは取得可能
[Link]
33.
空間モデルのインポート(勉強会用) Assets → Import New
Asset → isit.obj サンプルとして用意した空間モデル(isit.obj)をインポート
34.
空間モデルの利用(勉強会用) (2)SpatialMapping Unityエディタでの実行時のみ表示される空間モデルを登録 (3) Room Modelに ドラッグ&ドロップ (1)Assets
35.
メッシュの見た目を変える Surface Material横の〇 SpatialMappingWireframe Before
After
36.
AirTapと同時にCubeを生成して落とす このあとやる事
37.
AirTapなどの入力操作を管理する機能を追加 HoloToolkit → Input
→ Prefabs Input Managerをドラッグ&ドロップ
38.
动作确认 実行 [Shift]を押すと手が表示され、 そのまま左クリックでAirTap
39.
AirTapを受け取るスクリプトを作成 空白を右クリック CreateEmpty スクリプトを貼りつけるための空のオブジェクトを作成
40.
AirTapを受け取るスクリプトを作成 (1)GameObject (2)Add Component
41.
AirTapを受け取るスクリプトを作成 New Script スクリプト名 例:RcvAirTap Create and
Add 追加されてる
42.
スクリプトファイルをVisualStudioで開く Assets スクリプト(RcvAirTap) をダブルクリック
43.
スクリプトの記述 using HoloToolkit.Unity.InputModule; public class
RcvAirTap : MonoBehaviour { // Start関数は初期化のために一度だけ実行される void Start () {"R obot Kyle"); } // Update関数は毎フレーム実行される void Update () { } } まず、InputModuleの読み込みとIInputClickHandlerを実装 , IInputClickHandler
44.
スクリプトの記述 public class RcvAirTap
: MonoBehaviour , IInputClickHandler { // Start関数は初期化のために一度だけ実行される void Start () { } // Update関数は毎フレーム実行される void Update () { } } IInputClickHandlerにカーソルを合わせ、 ヒントからInplement interfaceを選択
45.
現状確認 using HoloToolkit.Unity.InputModule; public class
RcvAirTap : MonoBehaviour , IInputClickHandler { //AirTapされたときに呼び出される関数 public void OnInputClicked(InputEventData eventData) { throw new NotImplementedException(); } void Start () { } void Update () { } } throw new NotImplementedException(); 不要なのでこの1行は削除
46.
このあとやる事 AirTapしたことを知っているのはInputManager AirTap時のスクリプトを記述するのはこっち InputManagerがAirTapを認識した時にGameObjectに通知する
47.
AirTapの取得と表示 public class RcvAirTap
: MonoBehaviour , IInputClickHandler { //AirTapされたときに呼び出される関数 public void OnInputClicked(InputEventData eventData) { Debug.Log("AirTap!"); } void Start () { InputManager.Instance. PushFallbackInputHandler(gameObject); } void Update () { } } このスクリプトが貼り付けられている オブジェクト(gameObject)に AirTapの通知が来るように登録
48.
动作确认 実行 AirTap!と表示される Consoleタブ
49.
事前に作成したCubeのPrefab化 (1) Assets (2) Cubeを ドラッグ&ドロップ サイズ調整や重力の影響を設定したCubeを再利用可能にする
50.
これからやること Cubeができた Cube(Prefabの方)をAirTap毎に空間に生成させるスクリプトを作成
51.
スクリプトを用いたオブジェクトの生成 public class RcvAirTap
: MonoBehaviour , IInputClickHandler { //Cube prefabを扱う変数 public GameObject original; //AirTapされたときに呼び出される関数 public void OnInputClicked(InputEventData eventData) { //Cube prefabの情報を用いて立方体を実体化 GameObject cube = GameObject.Instantiate(original); //自分からみて前方1.2mの位置を空間内の位置に変換 cube.transform.position = Camera.main.transform.TransformPoint(0, 0, 1.2f); Debug.Log("AirTap!"); } /*以下省略*/
52.
Cube Prefabとスクリプト内のoriginalの関連付け (1) Assets (2)
GameObject スクリプト内のCube(=original)とCube Prefabを関連付ける CubeをOriginalに ドラッグ&ドロップ
53.
动作确认 実行 AirTapした回数だけ 立方体が生成される
54.
立方体の個数に制限を設ける //複数の立方体を保存する入れ物 List<GameObject> list =
new List<GameObject>(); public void OnInputClicked(InputEventData eventData) { GameObject cube = GameObject.Instantiate(original); cube.transform.position = Camera.main.transform.TransformPoint(0, 0, 1.2f); if (list.Count == 10) { Destroy(list[0]); //一番古いCubeを空間から削除する list[0] = null; //Destroyだけでは完全に消えないのでnull代入 list.RemoveAt(0); //listの0番目にはnullが残っているので削除 } list.Add(cube); }
55.
実機で動かそう:Qualityの確認 Edit Project Settings Quality Fastest
56.
実機で動かそう : 出力の際の設定 (1)Edit (2)Project
Settings (3)Player (4)ProductNameを 自分の名前に (5)Windows Store App
57.
実機で動かそう : 出力の際の設定 Short
nameを 自分の名前に icon Other Settings Virtual Reality Supported Publishing Settings Package Nameを 自分の名前に
58.
実機で動かそう : 出力の際の設定 File Build
Settings
59.
実機で動かそう : Build Add
OpenScenes Universal Windows Platform Switch Platform ? Target device HoloLens ? UWP Build Type D3D 最後にBuild
60.
実機で動かそう : Build用フォルダの作成 Appと名前を付ける 新しいフォルダ フォルダーの選択
61.
実機で動かそう プロジェクト名.sln Appフォルダ
62.
実機で動かそう : HoloLensへのデプロイ x86 横の▼ Remote (Wifi接続の場合)
63.
実機で動かそう : HoloLensへのデプロイ HoloLensのIPを入力 Selectをクリック
64.
実機で動かそう : HoloLensへのデプロイ Debug Start
Without Debugging
65.
动作确认
66.
メッシュを非表示にする Spatial Mapping Spatial
Mapping Manager 〇をクリック マテリアルにSpatial Mapping Occlusionを選択
67.
表示範囲を広くする HoloLens Camera Nearを0.3に変更 カメラのNearの値を小さくすることで、ある程度近づいてもOKになる
68.
Cubeに貼りつける画像のインポート [Assets]→ [Import New Asset] →
持参した画像を选択
69.
マテリアルの設定変更 Cubeに割り当てられているマテリアル (New Material)をクリック
70.
マテリアルの設定変更 (1) Shader (2) Unlit (3)
Texture
71.
テクスチャの貼り付け 画像をドラッグ&ドロップ
72.
完成
73.
Any questions? ご質問?ご相談、お気軽にどうぞ Name: 吉永 崇
(Takashi Yoshinaga) Affiliation?Title: (公財) 九州先端科学技術研究所 研究員 Others: (1) ARコンテンツ作成勉強会主催 (2) Microsoft MVP for Windows Development taka.yoshinaga @tks_yoshinaga YoshinagaTakashi