• 沒有找到結果。

4.2 軟體實現

4.2.3 力資訊運算

在力資訊運算方面,一個虛擬毛筆系統必頇要讓使用者在操作時感受到毛筆拿在手 上的重量、毛筆與紙面接觸的正向力、以及毛筆與紙張之間的摩擦,本論文使用 SensAble

39

公司所設計的函式庫 Haptic Library API (HLAPI)[33]作為與 Phantom Omni 力回饋搖桿的驅 動函式庫,此函式庫可以與 OpenGL 系統結合,程式設計者可以很輕易將視覺與觸覺整 合,當處理力資訊運算時,要依其應用設定合適的力更新率,例如醫生開刀所需的觸感 回饋(touch feedback)裝置需要高達 1kHz 才能提供足夠的觸感[37],模擬一堵剛性為 10000 N/m,黏性為 1000 N/(m/sec) 的硬牆所需力更新頻率要達 500 Hz 以上,但若操作者 個問題。Zilles 在[39]提出了 God-object 法,此法分為觸覺與視覺兩部分,在視覺上,當 被操縱物與虛擬物體發生碰撞時,就算被操縱物實際上已侵入物體,但在視覺上看來,

40

圖 4-8 God-object 法,當操作物與其他虛擬物件發生碰撞時,在視覺上操作物停留在發生 碰撞物的表面,但操作物的實際位置已侵入碰撞物內部,並反饋給操作者一碰撞力

本文將操作毛筆時的感受到的力分為重力、正向力、摩擦力與慣性力。在重力的模 擬方面,由於我們使用的搖桿所提供的力並不能提供力矩的效果,所以無法模擬毛筆傾 斜時重心位置的改變,因此我們僅以一常數表現重力:

𝐅𝑔𝑟𝑎𝑣𝑖𝑡𝑦 = −𝑤𝑔∙ 𝑚 ∙ 𝑔 ∙ 𝐍𝑝 (4.3) 𝑚代表虛擬毛筆的質量、𝑔表示重力加速度、𝑤𝑔代表重力占的權重。

當毛筆與紙張接觸時,應該要有一與紙面法向量帄行的正向力,且隨著使用者下壓 的深度越深而力越大,這是因為毛刷具有彈性的緣故,我們設計一簡單的方式來計算正 向力,使用虛擬骨架的位置資訊

𝐅𝑛 = 𝑤𝑛𝐷𝐿𝑝

𝑝 ∙ 𝐍𝑝 , 有質點與紙面接觸

𝐅𝑛 = 0 , 沒有質點與紙面接觸 (4.4) 𝐷𝑝代表虛擬骨架穿越紙面的深度、𝐿𝑝代表虛擬骨架在紙面法向量方向的投影長度、而𝑤𝑛 代表正向力占的權重,𝐷𝑝 的設計同時考慮了刷毛的按壓深度與筆桿的傾斜,如圖 4-9𝐿𝑝 所示,另外由於使用者在操作毛筆時,各種提筆或深壓的動作將使𝐷𝑝 變化很大,這𝐿𝑝 樣的運算會使得力感不連續,因此我們對於正向力的計算另外加上一低通濾波器。

41

圖 4-9 刷毛按壓深度示意圖

關於摩擦力的設計,由於毛筆與紙面間墨水的關係,所以無法以一般剛體摩擦力的 運算方式來運算,Baxter 等[32]提出如何在具有流體的環境下模擬力感,但此法運算太 複雜,因此不適於我們的系統。本文提出一個簡單但有效的力回饋方式模擬畫筆與紙面 間的摩擦,首先我們修改(4.1)式所提出的黏滯(摩擦)阻力,多考慮了毛筆與紙張接觸的 體積:

𝐅𝑓𝑟𝑖𝑐𝑡𝑖𝑜𝑛 = −𝑤𝑓𝑛N∙ 𝐕∥𝑝 (4.5) 𝑛代表與紙面接觸的質點數目、N代表所有的質點數、𝐕∥𝑝代表毛筆移動的速度帄行於紙 面的分量、𝑤𝑓則代表黏滯(摩擦)阻力占的權重。

黏滯(摩擦)阻力的設計並不足以完整呈現毛筆在紙面上移動的狀況,由於墨水表面 張力的影響,所以我們另外加上了一項慣性力(inertia force),有了慣性力的幫助,使用者 就可以更感受到毛筆與紙面間的摩擦的觸感,且也能幫助使用者更帄滑與穩定地操作毛 筆,為了模擬慣性力,我們設定毛筆在虛擬空間中拖著一個質點,其質量為:

𝑚 = 𝑚i+ 𝑛 ∙ 𝑚𝑚𝑝 (4.6) 𝑚i代表此質點的初始質量,𝑚𝑚𝑝代表質點-彈簧結構中質點的質量,當毛筆與紙面接觸 的體積越大則𝑛的值上升,而𝑚就上升,提供更大的慣性,設定毛筆的中心點與此質點

42

以彈簧與阻尼相連接,如圖 4-10 所示,我們以彈簧與阻尼造成毛筆的拉力設為慣性力,

同時以顯式積分法計算質點𝑚的位置。

𝐅𝑖𝑛𝑒𝑟𝑡𝑖𝑎 = −𝑘s 𝐱𝑗𝑜𝑦𝑠𝑡𝑖𝑐𝑘 − 𝐱𝑚 + 𝑘d𝐯𝑚 (4.7)

圖 4-10 慣性力示意圖

由我們設定的限制力以及各種擬真力,使用者在操作虛擬毛筆時將更有身歷其境的 感覺,使用者可以感受到筆桿與紙面的碰撞,另外,藉由刷毛在紙面上移動產生的各種 擬真力,彌補了虛擬實境操作時視角受限的問題,更讓使用者可以有不同的運筆方式與 書寫力道。

43

第五章 實驗

基於第四章所設計的虛擬毛筆系統,我們將本文的系統與其他現有的書寫方式比較。

實驗的目的在於測詴本論文所提出的虛擬毛筆書寫系統,以真實的毛筆以及繪圖板系統 作為比較對象;在 5.1 節介紹實驗的設計與流程,在 5.2 節討論實驗結果與問卷的統計 結果。

相關文件