マルチタッチ環境 - Microsoft

Download Report

Transcript マルチタッチ環境 - Microsoft

高橋 忍 エバンジェリスト Microsoft Corporation

マルチタッチがもたらすもの マルチタッチ環境 マルチタッチAPIs マルチタッチアプリケーション マルチタッチに向けて

ハードウェア マルチタッチ対応のハードウェアは すでにいくつか市場で発売されてい る、今後対応デバイスは拡大予定 ソフトウェア Windows 7 Win32 API .Net 4.0

コンシューマメッセージ 新たなPCの利用方法の提供 新しいユーザーエクスペリエンス 新しい価値の提供

マルチタッチ 技術を使った アプリケーションでの利用例: Web 上でのナビゲーションやコン テンツ捜査 メールチェックやソート 写真閲覧 ボードタイプのゲームなど 音楽やビデオ観賞 ウィンドウのナビゲーションやレイ アウト捜査 オフィスアプリケーション すべては消費者 ベースとなる4つの投資: 開発プラットフォーム : ベースとなるタッチプラットフォーム プラットフォームをベースとして公開される API群 UI の強化 : コアUI要素の多くが、タッチ操作に対応し た形で最適化される ジェスチャー : 多くのアプリケーションで、ズームや移動 操作を実現できるようにマルチタッチ ジェ スチャーが追加される アプリケーション : 今後マルチタッチをベースとしたアプリ ケーションがリリースされる。 ただしWindows7とは別で出てくる

であること

フィンガータッチオペレーション マウスと同じ動作(1次元の入力) ドラッグ:スクロール、移動

であること

複数の同時ポインタ マウスでできなかった新しい動作 パン:平行移動 ズーム:拡大縮小 ローテーション:回転

どのようなアプリケーションがタッチインター フェースのメリットがあるのか?

コンテンツ操作 モバイル、メディア エンターテインメント

効果的な投資のレベルを見極める

Good – サポートなし, UX を修正する程度 Better – ジェスチャーをサポート, タッチな感じの UX Best – タッチに最適さしたエクスペリエンス

Multi-touch

Multi-Touch API Controls Controls & API Multi-Touch API Multi-Touch API and Controls

マルチタッチ対応パネル Application ドライバ Win32 API OS : Windows7 .NET4.0

タッチすると何がもらえるのか? Mouseイベント?

No!

Touch イベント

複数のタッチデータがもらえる?

Yes!

複数のタッチデータを解析が必要

No! and Yes!

動きのパターンから3つのメッセージ ジェスチャー 自分で解析することももちろん可能

API Win32 WPF WinForms Good 即対応可能!

• 移動/ズーム • 右クリックで ジェスチャー • 標準のスクロールバー での操作 Better • ジェスチャー メッセージ • 移動/ズーム/回転/ 等々 • WM_GESTURE メッセージ Best • タッチ生データ • 操作,慣性プロセッサ • WM_TOUCH • COM ベースの 操作,慣性プロセッサ • WPF 4.0 ScrollViewerでの スクロール操作をサ ポート • 標準のスクロールバー での操作 • Gesture イベント • 慣性の設定 • WM_GESTURE メッセージ • P/Invoke • Touch イベント • 操作,慣性プロセッサ • Microsoft.Ink.DLL対応操 作、慣性プロセッサ • リアルタイム スタイラス、 インクコレクター

Better : Good gesture support is key アプリケーションは Window メッセージの形でジェ スチャーの情報とイベントを受け取る 利用例:よりリッチなイベントとして スムース、高感度なスクロール&ズーム

合成されたジェスチャー タッチ操作を合成したもの メッセージバブル&キャプチャ 従来通りのハンドリングも可能

BOOL WINAPI GetGestureCommandInfo( __in UINT

uMsg

, __in WPARAM

wParam

, __in LPARAM

lParam

, __in LPARAM

lExtraInfo

, __inout PGESTUREINFO

pGestureInfo

); typedef struct _GESTURECOMMANDINFO { UINT cbSize; DWORD dwFlags; DWORD dwCommand; DWORD dwArguments; POINTS ptsLocation; } GESTURECOMMANDINFO, *PGESTURECOMMANDINFO;

送信される情報:

dwCommand dwArguments

パン 移動距離 ズーム ろーテーと 移動距離 絶対角(開始時) 回転角(更新時) 2 点タップ 右クリック ジェスチャー NA NA

ptsLocation

中心点 中心点 中心点 中心点 最初のタッチ点

今後の Windows 7 Build で追加予定 Gesture API

WM_GESTURE メッセージ GESTUREINFO 構造体 GetGestureInfo() メソッド etc その他 GESTUREINFO 内に追加

gesture 設定情報関連 API

WM_GESTURENOTIFY メッセージ GESTURECONFIG 構造体 Set/GetGestureConfig() メソッド

この後の Windows 7 Build に実装予定

シングルポイントパニング (SFP) によってより簡単にパンニングを実現 アプリケーションでのSPIの設定方法: SetGestureConfig() for GC_PAN GC_PAN_WITH_SINGLE_FINGER_VERTICALLY、 GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY のいずれか・もしくは両方を指定 SFP をデフォルトにしない場合 通常のスクロールバーを利用 SBM_GETSCROLLINFO WM_GESTURE に対応させる

WM_TOUCH* 関連メッセージ

Best: WM_TOUCH タッチ操作に最適化したエクス ペリエンスを実現 WM_TOUCHDOWN WM_TOUCHMOVE WM_TOUCHUP 意味的にはマウスメッセージに類似 Win32 アプリケーションにタッチ情報を送信 利用例: 指ペイント、カスタムジェスチャ、 より高いレベルのUI操作を実現するために利用 等々

BOOL WINAPI RegisterTouchWindow( __in HWND hwnd, __in ULONG ulFlags); BOOL WINAPI GetTouchInputInfo( __in HANDLE hTouchInput, __in UINT cInputs, // input event handle // number of elts in the array __out_ecount(cInputs) PTOUCHINPUT pInputs, __in int cbSize); // array of touch inputs // sizeof(TOUCHINPUT) typedef struct tagTOUCHINPUT { LONG x; LONG y; HANDLE hSource; DWORD dwID; DWORD dwFlags; DWORD dwMask; DWORD dwTime; ULONG_PTR dwExtraInfo; DWORD cxContact; DWORD cyContact; } TOUCHINPUT, *PTOUCHINPUT; typedef TOUCHINPUT const * PCTOUCHINPUT; BOOL WINAPI CloseTouchInputHandle( __in HANDLE hTouchInput); // input event handle

タッチに最適化されたUIのための基盤 マニピュレーションとは?: 2Dアフィン変換(変換, スケーリング, 回転) 対応するジェスチャのスーパーセット 複合マニピュレーションにも対応 要生データ: WM_TOUCH or RTS Surface APIs に類似 インターフェース: IManipulationProcessor IManipulationEvents

基礎物理 マニピュレーションと連携して動作 インターフェース:

IInertiaProcessor IManipulationEvents マニピュレーションと 同じイベントインターフェース

WPFへの対応:

3.5 アップデートが Windows 7 発売と近い時期に リリース予定 マルチタッチ, gesture APIs 4.0 リリース Multi-touch 対応新コントロール

WinForms への対応

ネイティブWin32 APIs への Interrop マネージド Manipulations/Inertia ラッパー

UIElement and UIElement3D の変更 Gesture イベント (tracking) Touch system gesture イベント(single) 生のタッチイベント タッチ/タッチデジタイザデバイス対応 マルチタッチ 対応コントロール: ScrollViewer は パンニングに対応 マルチタッチに合わせて ベースコントロールをアップデート マルチキャプチャをサポート 新しいマルチタッチ対応コントロール Surface SDK 2.0 と下位互換性

UIElement & UIElement3D ジェスチャーイベントに対応 TouchGestureStarted TouchGestureChanged TouchGestureEnded マルチキャプチャ対応のためルートにはならない Gesture はマニピュレーションベース TouchGestureStarted 時に慣性動作 完成動作 の TouchGestureChanged イベント タッチシステム gestures

UIElement and UIElement3D TouchDown, TouchMove, TouchUp TouchEnter, TouchLeave Preview 順序: Touch → Stylus → Mouse マルチキャプチャ CaptureTouchDevice(TouchDevice) ReleaseTouchDeviceCapture(TouchDevice) ReleaseAllTouchDeviceCaptures() TouchDeviceCollection TouchDevicesCaptured { get; } TouchDeviceCollection TouchDevicesCapturedWithin { get; } IsAnyTouchDeviceCaptured(); IsAnyTouchDeviceCapturedWithin();

リアルタイム スタイラス(RTS)

タッチ生データ生成のベース IRealTimeStylus3::MultiTouchEnabled()

InkCollector からのタッチデータの取得

ATOM m_atom = ::GlobalAddAtom(MICROSOFT_TABLETPENSERVICE_PROPERTY); m_dwProperty = TABLET_ENABLE_MULTITOUCHDATA ; ::SetProp(m_hwnd, (LPTSTR)m_atomPenService, (HANDLE)m_dwProperty);

General guidelines: Big targets Whitespace Avoid hover See UX guidelines Be aware of hardware: Form factor Avoid on-hover UI Edges, jitter, etc Gesture guidelines: Use common gestures Gestures need to be intuitive and natural Moving away from shortcut style gestures to manipulations and direct manipulation

ISVs には好反応 すでに対応を開始しているISV:

AutoDesk Avoco Secure Corel Cyberlink Fuel Industries Identity Mine Sonic

まずは何から始めるか

対応させるアプリケーションの検討 最適な対応レベルを考える 投資対効果の検討 何か面白いものを作ってみよう!

何が必要か??

ハードウェア: マルチタッチベータドライバ対応 PC: HP TouchSmart 2 Dell Latitude XT ソフトウェア: Window 7 Beta build Touch Platform SDK and samples

WPF Multi-touch

.NET 4.0 Preview Releases in 2009 .NET 3.5 update

© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.