Archive

‘技術探討’ 分類過的Archive

用多點手勢玩Second life

2010年3月17日 尚無評論

 http://www.xi-ji.com/pub/blog/Secondlife.flv

手势

功能

Event属性

两指缩放

两指进入,鼠标位置为两指进入时中心点座标。对进入点进行视觉距离远近变化。

Mouse:wheel

单指单击

鼠标左键单击

Mouse:left( click)

单指移动

鼠标左键拖动

Mouse:left

三指

鼠标右键拖动,鼠标跟随,鼠标位置为三指中心点座标。Mouse right down:弹出圆形菜单选项->mouse move:鼠标跟随,选择选项->mouse right up:执行相应选项

Mouse:right

两指向上移动

两指移动距离超过L1,人物向前走路;两指移动距离超过L2,人物向前奔跑

Key:up(走路)

    up/双击后连续送出(奔跑)

两指向下移动

两指移动距离超过L1,人物向后走路;两指移动距离超过L2,人物向后奔跑

Key:down(走路)

    down/双击后连续送出(奔跑)

两指向左移动

两指移动距离超过L1,人物向左走路;两指移动距离超过L2,人物向左奔跑

Key:shift+left(走路)

    Shift+left/双击后连续送出(奔跑)

两指向右移动

两指移动距离超过L1,人物向右走路;两指移动距离超过L2,人物向右奔跑

Key:shift+right(走路)

    Shift+right/双击后连续送出(奔跑)

大单点向上移动

人物向上跳跃,可决定上升高度

Key:Page Up/E

大单点向下移动

人物向下落回,可决定下落距离

Key:Page Down/C

大单点点击

人物向上升高一定距离

Key:Home

大单点向左移动

以人物为中心逆时针改变视角

Key:left

大单点向右移动

以人物为中心顺时针改变视角

Key:right

 

Categories: 軟體技術 Tags:

視覺化手勢開發工具

2010年2月24日 尚無評論
Categories: 軟體技術 Tags:

利用 InterGesture 快速定義多點手勢到應用軟件

2010年1月6日 尚無評論

 透過 InterGesture 強大的轉譯能力, 可迅速將多點觸控訊息轉換

例如將兩手指的距離遠近變化定義成連續性的滑鼠滾輪變化. 並可自訂義速率

也可以將三隻手指移動之動量達到某一程度產生單次按鍵按下之動作.

無論所有原來之應用軟件只要支持快捷鍵設計或可支援鍵盤滑鼠操作

均可透過 InterGesture 對應支持 

http://www.xi-ji.com/pub/blog/3Dring-2.flv
Categories: 軟體技術 Tags:

InterGesture 可輕易的用 XML 來開發手勢應用

2009年11月30日 尚無評論

下下篇的多點 vs 手勢(五) 將會討論以下精彩內容, 敬請期待囉

視覺化手勢開發工具, 包含以下工具
1. 多點手勢轉譯引擎 (洽談合作, 歡迎各大觸控硬件廠商洽詢)
2. 手勢控制管理平台 (月底推出)
3. 視覺化手勢編輯器 (年底推出)

強大的引擎功能, 讓您輕易創建出需要的手勢
不用額外的程式開發, 輕鬆定義鍵盤滑鼠映射方式
可針對不同應用軟件觸發不同事件訊息
可同時對應於不同軟件有不同的手勢操作
讓您的舊有軟件輕鬆移植到Windows觸控環境

http://www.xi-ji.com/pub/blog/Google Earth Gesture.flv
Categories: 軟體技術 Tags:

多點 vs 手勢 (四)

2009年11月30日 尚無評論

之前我們提到過, 多鼠標, 多焦點,  手勢歷史, 接下來談談多點手勢.

我們先來看看單點手勢, 有什麼特徵點呢. 就拿筆記本的觸摸版來說明,
1. 移動
2. 點擊
3. 雙擊(雙擊後離開)
4. 拖曳(雙擊後移動)
5. 卷軸/快捷鍵(區塊)
6. 卷軸速度(壓力/接觸面積/電感容量)
7. 連續卷軸(甩動)
有些特殊的觸摸版還支援以下手勢
8. 卷軸(區塊+軌跡)

這些動作可以有哪些特徵給分離出來呢?
1. 移動 – 手指下去後超過一定時間點未來開,  或是超過一定移動量後離開
2. 點擊 – 手指下去後在一定時間點內離開且不能超過一定移動量
3. 雙擊 – 手指下去後在一定時間點內離開並且在一定時間點內再進入後
            並在一定時間內再度離開, 且位置差不超過一定移動量

4. 拖曳 – ……….(以下邏輯請讀者自行思考, 因為留些篇幅講多點)

這些邏輯被整理後就可以找出一些關鍵性因素,
進入的時間/離開的時間 => 簡化成狀態改變的時間
進去後的位置, 再度進去的位置 => 簡化成不同狀態的移動量
進去後的位置, 持續改變的位置 => 移動量
………所以總結來說, 就找到幾個關鍵因素,
狀態, 時間, 移動量, 移動軌跡(向量), 區塊, 這些條件的組合還可以形成
如 速度 = 移動量/時間 , 軌跡特徵 = 向量的變化量集成

這些要件就構成了手勢判定的主要因素要件. 這些條件的組合,
就區別了不同的手勢, 如果到這裡各位覺得枯燥乏味的話, 那多點會更枯燥的
但如果各位發現到這邊非常有趣的話, 接下來就開始繼續談兩點手勢,
還有其他各種不同硬體可以提供的判斷資訊, 這些資訊在 windows 7 的
標準多點觸控板 HID 上面都有支援, 雖然標準多點觸控板 HID 對點的數量無限制
但 Windows 7 目前僅支援兩點的手勢, 或許在不久的將來會有新的”標準”
(呵呵, 微軟定的就叫做標準了)

兩點手勢, 可以找出多少特徵點呢, 硬體或標準多點HID或Win7定義哪些資訊呢?
這些如果能有些基礎的了解, 相信會對以下要講的內容, 會更有幫助的.

 

繼續討論的就是有關多點手勢的部分, 比照前述方法
我們把 Windows 7 定義的幾個”標準”手勢拿來分析,

1. Tap/Double Tap         (單指單擊/雙擊)
2. Panning with Inertia    (兩指平移)
3. Selection/Drag           (單指選取拖曳)
4. Press and Tap            (兩指單指點擊)
5. Zoom                        (兩指放大縮小)
6. Rotate                       (兩指旋轉)
7. Two finger Tap           (兩指單擊)
8. Press and Hold           (單指久壓)
9. Flicks                         (單指揮甩)

這邊筆者針對幾種手勢作條件分析, 由於條件分析的目的
是要讓手勢能夠被分隔開來, 不會同時滿足兩種手勢的條件,
又要能夠不使兩種手勢都很滿足, 就好像在切割一樣,
充分利用條件空間, 才不會導致設定的條件讓手勢分不開,
又或著讓手勢條件不會滿足, 這樣手勢操作便會很不靈敏,
這些就是經驗, 跟對使用者習慣的了解, 才有可能去做好.

我們就拿 1./3./4. 跟 8. 的手勢條件以及其衝突性做說明
我們先驅分 1.單指單擊跟 3.單指拖曳的區隔性,
假設我們把手指進入時的那個各種條件參數
(時間.位置.手指數量) 記錄下來當作狀態 FingerIn
此時手指訊息會持續送來, 但手指的數量沒變化(包括離開. 手指數為0)
此時的狀態我們叫做 FingerMove , 直到手指離開我們稱 FingerOut
單指單擊跟單指拖曳. 最大的差異就是
1. FingerIn 後是否有移動
2. FingerIn 後是否有超過一段時間
也就是在 FingerIn 之後的 FingerMove 狀態, 滿足上述一條時,
便開始執行拖曳的工作, 但都沒有滿足就變成 FingerOut 時. 就變成單擊
但實際上在滑鼠的操作上面並不是這樣定義, 因為滑鼠有按鍵.
所以只要一有 FingerIn 就直接做 MouseDown 接著就是 MouseMove,
直到 FingerOut 狀態就產生 MouseUp. 而不用去定義太多的條件
是因為滑鼠並不像是手勢一樣, 會有衝突性產生的問題

前面的判斷要繼續延伸
1. FingerIn 後移動 -> 單點拖曳
2. FingerIn 後超過一定時間 -> 單點久壓
3. FingerIn 後一定時間內第二隻手指進入 -> 進入多指狀態 (MultiFingerIn)
接下來要判斷的動作就更複雜了. 正如同前面所述, 每個觸控可以有很多量值
時間. 位置. 手指數量. 在 HID 多點設計中甚至包含了, 寬度高度.離觸控平面多遠,
是否在觸控感應範圍內. 當然還有壓力感應等等. 這麼多種的量值可以做為手勢
判斷的依據. 當進入兩指狀態以後. 就是把這些量值彼此搭配組合. 就可見其複雜性

4. MultiFingerIn 確認是否在一定時間內又有一手指離開 (MultiFingerOut)
    同時原來的點跟新進來的點都維持在一定的位置偏移量(因為手不可能這麼穩定)
    如果符合, 就是產生 Press and Tap
當然接著下去還要去判斷其他手勢的條件, 下面就不在進行說明(師父領進門, 呵呵)
回過頭來說, 上面的判斷用到了兩個重要的條件, 位置變化跟時間變化, 這就是手勢參數
透過這些參數的修正就能去適應大部分的使用者習慣, 不過就像是語音輸入一樣,
每個人都會有操作習慣上的差異, 自然每個人操作順暢度不同, 不過因為動作容易修正人
讓人來配合機器, 但這不是終極目標, 終極目標一定是讓機器來配合人, 那就是要能做到
機器會透過統計學習的方式來自動修正這些參數, 下一篇, 我們就會簡單介紹如何用XML
把這些條件的邏輯給表現出來, 再給予一定的參數, 這樣便可以不用開發程式而達到無限制
的手勢應用.

敬請繼續期待下篇 XML 開發手勢

Categories: 軟體技術 Tags: