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