REALITY IS
JUST BEGINNING
1
MAGICLEAP
2020
2
ワコムのペンタブを使ったMagic
Leap 1 アプリケーション、Unityで
作れ〼
Magic Leap Meetup vol.2 in Japan
2020.12.17
MAGICLEAP
2020
目次
01. 自己紹介
02. ワコムのペンタブレットについて
Magic Leap 1をサポートしているペンタブレットの紹介から
各ボタンの説明。
03. 開発について
ペンタブレットの取得できる情報から使用するクラスやメソッドなどを紹介。
04. お知らせ
3
MAGICLEAP
2020
4
自己紹介
01
MAGICLEAP
2020
Place image here
自己紹介
5
Sadao Tokuyama
株式会社OnePlanet
XR Enginner 徳山 禎男
tokuyama@1planet.co.jp
@tokufxug
MAGICLEAP
2020
Spatial Tag
6
Place image here
現実空間に付箋を貼りつける
Landscapeアプリ
Place image here
Invisible Laughing Ghost
見えないゴーストを音声とライトで
見つけて退治するゲーム
● 開発ツール: Unity
● 空間オーディオを使用。
● https://world.magicleap.com/ja-jp/det
ails/net.magicmodelers.invisiblecryin
gcreature
Handrawn
Place image here
球体をつなげてモデルを作成する
アプリ
● 開発ツール: Unity
● ハンドトラッキングを使用。
● https://world.magicleap.com/ja-jp/det
ails/net.magicmodelers.concepts.ha
nddrawn
● 開発ツール: Magic Script
● 複数のPrism生成処理を実施。
● https://world.magicleap.com/ja-jp/det
ails/net.magicmodelers.magicleap.c
oncepts.spatialtag
自己紹介
Magic Leap World にリリースした
アプリケーション
MAGICLEAP
2020
7
ワコムのペンタブ
レットについて
02
MAGICLEAP
2020
Wacom Pro Pen 3D
ワコムのペンタブレットについて
Magic Leap 1に対応しているペンタブレットを紹介。
8
Wacom Intuos Pro M
Model:PTH-660
標準で付属している Wacom Pro Pen 2
をサポート
Wacom Pro Pen 3Dに搭載している
下スイッチに対応。
https://store.wacom.jp/products/detail.php?product_id=3513 https://store.wacom.jp/products/detail.php?product_id=3526
MAGICLEAP
2020
9
ワコムのペンタブレットについて
ボタンの説明
ファンクションキー
通常はよく使用する機能の呼び出し設定に
使用するボタン。
ファンクションキーは、
上に4つ、下に4つの計8つ備わってます。
MAGICLEAP
2020
10
ワコムのペンタブレットについて
ボタンの説明
タッチホイール
通常、タッチホイールの上を指でなぞって、
ズームやスクロールなどを行います。
MAGICLEAP
2020
11
ワコムのペンタブレットについて
ボタンの説明
センターボタン
通常、タッチホイールに割り当てられた機能の
切り替えなどに使用します。
MAGICLEAP
2020
12
ワコムのペンタブレットについて
ボタンの説明
サイドスイッチ(下)
通常、左ダブルクリック(カスタマイズ可)
Wacom Pro Pen 2D
サイドスイッチ(上)
通常、右ボタンクリック(カスタマイズ可)
MAGICLEAP
2020
13
ワコムのペンタブレットについて
ボタンの説明
サイドスイッチ(下)
通常、3Dオブジェクトの拡大縮小、移動
(カスタマイズ可)
サイドスイッチ(中)
通常、3Dオブジェクトの回転
(カスタマイズ可)
サイドスイッチ(上)
通常、右ボタン(カスタマイズ可)
Wacom Pro Pen 3D
MAGICLEAP
2020
14
Bluetoothによる接
続に対応。
ワコムのペンタブレットについて
Magic Leap 1 と ワコムペンタブレットの接続方法
MAGICLEAP
2020
15
開発について
03
MAGICLEAP
2020
16
開発について
サポートバージョン
Lumin OS 0.96.0~ Lumin SDK 0.21.0~
MAGICLEAP
2020
17
開発について
使用するクラス
UnityEngine.XR.MagicLeap.MLInput
Control の入力情報の取得する際に MLInput クラスを使用しますが、ワコムのペンタ
ブレットの入力情報を取得する場合も、 MLInputクラスを使用します。
https://developer.magicleap.com/learn/reference/public/v0.24.0/UnityAPI/class_unity_e
ngine_1_1_x_r_1_1_magic_leap_1_1_m_l_input.html
MAGICLEAP
2020
18
開発について
使用するクラス
UnityEngine.XR.MagicLeap.MLInput
Control と同じように使用前に MLInput.Startを呼び出しますが、6DoFを使用しないた
め、引数の MLInput.Configurationのコンストラクタ引数は falseを設定します。
MLResult result = MLInput.Start(new MLInput.Configuration(false));
MAGICLEAP
2020
19
開発について
ワコムのペンタブレットで使用するdelegate
MLInput.OnTabletConnected
このコールバックは、タブレットデバイスが接続されているときに呼び出されます。
MLInput.OnTabletDisconnected
このコールバックは、タブレットデバイスが切断されたときに呼び出されます。
public delegate void TabletConnectionDelegate(byte
tabletId)
Delegate
MAGICLEAP
2020
20
開発について
ワコムのペンタブレットで使用するdelegate
MLInput.OnTabletButtonDown
このコールバックは、タブレットのボタン押下が検出されたときに呼び出されます。
MLInput.OnTabletButtonUp
このコールバックは、タブレットのボタンが離されたときに呼び出されます。
public delegate void TabletButtonDelegate(byte tabletId,
TabletDeviceButton tabletButton, ulong timestamp
)
Delegate
MAGICLEAP
2020
21
開発について
ワコムのペンタブレットで使用するdelegate
TabletDeviceButton
以下の enum(列挙型) を持っている。
Unknown Button7
Button1 Button8
Button2 Button9
Button3 Button10
Button4 Button11
Button5 Button12
Button6 -
MAGICLEAP
2020
22
開発について
ワコムのペンタブレットで使用するdelegate
TabletDeviceButtonButton1
Button2
Button3 Button4
Button5
Button6
Button7 Button8
Button9
MAGICLEAP
2020
23
開発について
ワコムのタブレットで使用するdelegate
TabletDeviceButton
Wacom Pro Pen 3D
Wacom Pro Pen 2D
Button10 Button11
Button12
Button10 Button11
MAGICLEAP
2020
24
開発について
ワコムのペンタブレットで使用するdelegate
MLInput.OnTabletRingTouch
このコールバックは、タッチホイールイベントが検出されたときに呼び出されます。
public delegate void OnRingTouchDelegate(byte tabletId,
int touchRingValue, ulong timestamp
)
Delegate
MAGICLEAP
2020
25
開発について
ワコムのペンタブレットで使用するdelegate
MLInput.OnTabletRingTouch
このコールバックは、タッチホイールイベントが検出されたときに呼び出されます。
ワコムの touchRingValue には
72 段階のレベルがあり、
0 から 71 までの値が
あります。
値は絶対値で
あり、
開始位置との
相対値では
ありません。
0
0~71
まで
MAGICLEAP
2020
26
開発について
ワコムのペンタブレットで使用するdelegate
MLInput.OnPenTouchDelegate
このコールバックは、ペンタッチイベントが検出されたときに呼び出されます。
public delegate void OnPenTouchDelegate(byte tabletId,
TabletState tabletState
)
Delegate
MAGICLEAP
2020
27
開発について
ワコムのペンタブレットの情報
TabletState
タブレットの状態に関する情報を含んだ構造体
IsPenTouchActive:bool ペンがタブレットに触れている状態を判定する
フラグ。
IsConnected:bool タブレットがMagic Leap 1 との接続状態を判
定するフラグ。
PenDistance:float タブレットとペンの距離。
TimeStamp:ulong イベント発火時のタイムスタンプ。
1 / 4
MAGICLEAP
2020
28
開発について
ワコムのペンタブレットの情報
TabletState
PenDistance
0.0cm ~ 1.0cm
1.0cm以上離れた場合、
1.0cmが返却されます。
ペンがタブレットに押し付けた
状態が0.0cm
MAGICLEAP
2020
29
開発について
ワコムのペンタブレットの情報
TabletState
タブレットの状態に関する情報を含んだ構造体
Type:MLInput.TabletDeviceType Unknown
Wacom
ToolType:MLInput.TabletDeviceToolType Unknown
Pen
Eraser
2 / 4
MAGICLEAP
2020
30
開発について
ワコムのペンタブレットの情報
TabletState
MLInput.TabletDeviceToolType
Pen Eraser
タブレットに対し、ペンの向きによって
TabletDeviceToolTypeが以下のように変わります。
タブレットから約
1cm内で検知
タブレットから約
1cm内で検知
MAGICLEAP
2020
31
開発について
ワコムのペンタブレットの情報
TabletState
タブレットの状態に関する情報を含んだ構造体
PenTouchPosAndForce:Vector3 現在のタッチ位置(x ,y)
筆圧(z)
タッチ位置の範囲は -1.0 ~1.0。
筆圧の範囲は 0.0 ~ 1.0。
AdditionalPenTouchData:int[]
(0要素目 = x, 1要素目 = y, 2要素目 = z)
追加の座標値(x,y, z)デバイスに対し、固有
のデータを含まれています。
ワコムのタブレットは、ペンの傾きのデータ (x,
y)を-64から64度までの角度で保持します。
まっすぐの状態が0度です。
(zは常に0が返ってきます。)
3 / 4
MAGICLEAP
2020
32
開発について
ワコムのペンタブレットの情報
TabletState
PenTouchPosAndForce
ペンのタッチポジションの起点はタブレットの真ん中。
以下のようにタッチの範囲は -1.0~1.0(少数第一位まで)
y
x
-1.0
+1.0
+1.0-1.0
MAGICLEAP
2020
33
開発について
ワコムのペンタブレットの情報
TabletState
PenTouchPosAndForce
タブレットから約
1cm内で検知
ペンがタブレットに触れていない時の筆圧は 0。
少し触れた時点で0.1~0.2。かなり押し付けないと 1.0まで到達しない。
MAGICLEAP
2020
34
開発について
ワコムのペンタブレットの情報
TabletState
AdditionalPenTouchData
ペンの傾きによって角度を取得する
ことができます。
タブレットから約
1cm内で検知
タブレットに対し、ペンの傾きの角度が取得できます。
ペンがタブレットから 0~1cm以内の距離で角度の情報が取得できます。
MAGICLEAP
2020
35
開発について
ワコムのペンタブレットの情報
TabletState
AdditionalPenTouchData
タブレットに対し、ペンの傾きの角度が取得できます。
ペンがタブレットから 0~1cm以内の距離で角度の情報が取得できます。
y
x
-64
+64
+64-64
MAGICLEAP
2020
36
開発について
ワコムのペンタブレットの情報
TabletState
タブレットの状態に関する情報を含んだ構造体
ValidityCheck:TabletDeviceStateMask この構造体のどのデータが有効かを判断する
ために使用されます。
例:
AdditionalPenTouchDataを使用する前に、
ValidityCheckでその変数が有効かどうかを
チェックします。
4 / 4
MAGICLEAP
2020
37
開発について
ワコムのペンタブレットの情報
TabletState
この例はペンの傾き情報のデータが有効であれば、
AddtionalPenTouchDataから回転情報を求めて、
ペンの3Dモデルに反映させています。
If (tabletState.ValidityCheck.HasFlag(
MLInput.TabletDeviceStateMask.HasAdditionalPenTouchData))
{
_pen.localRotation =
Quaternion.Euler(-90, 0, 0) * Quaternion.Euler(
tabletState.AdditionalPenTouchData[1]
, tabletState.AdditionalPenTouchData[0] * -1
, 0);
}
MAGICLEAP
2020
38
開発について
Example の紹介
ワコムのタブレットによる Exampleは、Magic Leap Unity Packageに含まれています。
(Assets/MagicLeap/Examples/Intermediate/Scenes/WacomTablet.unity)
MAGICLEAP
2020
39
開発について
まとめ
まとめ
1. Wacom の ペンタブレットを使ったアプリケーション開発が、
Unityで行うことができます。
2. Magic Leap 1 の Lumin OS v0.96.0~、Lumin SDK 0.21.0~対応し
ています。
3. UnityEngine.XR.MagicLeap.MLInputでペンタブレットの接続、切断、
ペンタブレットやペン状態や情報を取得できます。
MAGICLEAP
2020
40
お知らせ
04
MAGICLEAP
2020
41
お知らせ
Magic Leap Advent Calendar 2020 の 紹介
現在、Magic Leap Advent Calendar 2020 開催中です。今回のワコムタブレットについて
2020年12月18日(金)に投稿します。こちらも見て頂ければ幸いです。
MAGICLEAP
2020
42
THANK
YOU
MAGICLEAP
2020
43
Q&A TIME
MAGICLEAP
2020
44
宣伝
05
MAGICLEAP
2020
45
宣伝
Magic Leap ブログ 知っ徳!納徳 Magic Leap
https://medium.com/japanese-magic-leap-fans
MAGICLEAP
2020
46
宣伝
LEAPERS JAPAN Facebook Group
https://www.facebook.com/groups/LEAPERSJAPAN
MAGICLEAP
2020
47
宣伝
Magic Leap コンテンツを日本から世界へ
https://xr-hub.com/archives/24309
MAGICLEAP
2020
48
宣伝
Magic Leap Japan @ Twitter
https://twitter.com/magicleapjapan
MAGICLEAP
2020
49
宣伝
NTT ドコモ XR サイト
https://xr.docomo.ne.jp/

ワコムのペンタブを使ったMagic Leap 1 アプリケーション、Unityで作れ〼