狠狠撸

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

More Related Content

HoloLensハンズオン@ももち浜TECHカフェ vol.1