結合筆壓的毛筆字筆鋒模擬方法
【專利摘要】結合筆壓的毛筆字筆鋒模擬方法應用于手寫系統(tǒng)。本算法發(fā)明的主要目的在于分析不同毛筆字技法結合手寫板筆壓寫毛筆字時的筆鋒變化,并做不同的算法處理,達到真正的融合藝術感的毛筆字字體效果,而不是簡單的手寫效果。本算法應著重保護對于不同毛筆字技法所對應的筆鋒實時生成模擬算法進行保護。
【專利說明】結合筆壓的毛筆字筆鋒模擬方法
【技術領域】
[0001]該技術主要應用于手寫系統(tǒng),例如簽名,手寫藝術字,電子書法等,應對需要實時顯示書寫效果的領域,【技術領域】涉及到了毛筆字技法的分析,這塊屬于藝術領域,系統(tǒng)模擬及搭建屬于軟件領域,主要領域應為軟件領域,算法的目的在于創(chuàng)造可以實時寫出字體和字體對應筆鋒效果的毛筆字,所以應是計算機圖形學的一個分支,屬于軟件領域,同時由于涉及到了藝術分析,所以也可以屬于數字藝術領域或者數字媒體【技術領域】。
【背景技術】
[0002]有技術多是非實時的,通過擴散算法達到相應的水墨效果,通常是先錄入筆跡,然后根據筆記進行計算,最后生成圖片;另外也有實時的毛筆字算法,但是算法本身注重的是筆畫效果,而不是毛筆字本身整體的藝術感,不強化筆鋒,只能讓人看到覺得這是毛筆字,但是卻寫不出毛筆字相應的技法效果,處于一種只有技術,沒有將藝術融合進去的境地,并沒有分析不同字體應有不同的筆鋒,不同技巧也應有不同的處理方式。
【發(fā)明內容】
[0003]本算法發(fā)明的主要目的在于分析不同毛筆字技法結合手寫板筆壓寫毛筆字時的筆鋒變化,并做不同的算法處理,達到真正的融合藝術感的毛筆字字體效果,而不是簡單的手寫效果。
[0004]實時毛筆字模擬是有的,但是利用手寫板結合筆壓去模擬不同書法技巧下筆鋒變化的毛筆字系統(tǒng)是沒有的,本算法應著重保護對于不同毛筆字技法所對應的筆鋒實時生成模擬算法進行保護。
[0005]程序整體流程圖如下圖1a:
[0006]1.結合筆壓的毛筆字筆鋒模擬方法,其特征在于,包括如下步驟:
[0007]步驟101:獲取輸入數據:通過獲取筆壓的設備,錄入書寫者的行筆軌跡。
[0008]每一次傳入的數據包中應包括:(I)當前筆壓Press,數值范圍是1_100,筆壓為O時表示沒有接觸到手寫板。
[0009]對于筆壓Press為O的數據時不進行任何處理,繼續(xù)獲取下一個手寫板包數據。
[0010]同時所有筆壓都需要進行重新計算,筆壓對應函
【權利要求】
1.結合筆壓的毛筆字筆鋒模擬方法,其特征在于,包括如下步驟: 步驟101:獲取輸入數據:通過獲取筆壓的設備,錄入書寫者的行筆軌跡; 每一次傳入的數據包中應包括:(I)當前筆壓Press,數值范圍是1-100,筆壓為O時表示沒有接觸到手寫板; 對于筆壓Press為O的數據時不進行任何處理,繼續(xù)獲取下一個手寫板包數據; 同時所有筆壓都需要進行重新計算,筆壓對應函數其中X為輸入筆
I 100,Α.> 80壓,y為輸出筆壓, (2)當前鼠標坐標Position[i]= (x,y), i=0~4,保留最少5個最新數據;5個坐標數據產生4個向量,進而計算出3個向量夾角: 手寫板實際還是操作鼠標的移動,所以實際傳入的是當前鼠標在屏幕中的像素坐標,范圍寬度應該是O-屏幕寬像素,高度為O-屏幕高像素; 當某些手寫板像素坐標使用的是(0-1,0-1)相對范圍,需要在數據處理模塊中進行轉換; 步驟102:處理輸入數據:硬件設備只提供了兩種數據:筆壓Press和位置Position ;其他衍生數據需要在處理模塊中進行處理;· 具體詳細數據及計算方式如下: 幀間距離Dis:獲取兩個數據包中傳入的坐標,按照兩點距離公式:Di_十算出距離,其中i=0~4,當Dis的累加數據小于100,從O開始保存之前的五組數據,Dis數據初始值為-1,筆壓為O時清零Dis數據,全部賦初值-1 ;單位為:像素;x,y指的是像素坐標; Dis的距離累加值DisCum小于100可能是設備不穩(wěn)定造成的,數據不能用; 距離累加值DisCum=Dis數組5個值的累加,用于在落筆階段判斷移動距離是否超過了閾值;閾值為屏幕寬度的8% ; 當前行筆方向夾角:記錄行筆軌跡轉過的角度,通過保留的5個坐標位置數據包,得出4個向量,進而計算出角度,根據平面向量夾角公式:設兩向量分別為a=(ai,a2),b=(bi,b2),那么他們之間的夾角Ssjsff之后利用 arccos α即可得出夾角α ;按照順序依次存儲4個角度在數組中,數組初值為-1,代表沒有賦值; 行筆夾角累加值:數組中角度的累加,即五個數據包內筆畫轉過的角度; 記錄筆壓變化,兩次數據包之間的變化值,為正值說明筆壓在增大,為負值說明筆壓在減?。? 圖像類型數組:為數組類型,每一個數組變量存儲一個筆刷圖像; 步驟103:分析輸入數據:根據不同的落筆數據和抬筆數據做不同的算法處理;首先是筆的選擇,不同的筆對應了不同的落筆墨點,在落筆的方式不同時要有不同的效果;落筆的效果通過顯示實驗獲得; 根據筆壓的變化量進行判斷,首先判斷筆壓Press從O到有數值,筆壓變化量PressDis為正值說明是落筆過程,故在筆壓有數值的那個包的時間算起,1.5秒內都強制進入步驟103-1 ;筆壓變化量為負,最終筆壓為O則為提筆過程,進入步驟103-2,其他情況進入行筆步驟103-3 ; 步驟103-1:落筆過程判斷:落筆在毛筆書法中分兩大類,藏鋒和露峰,藏鋒中分為垂直落筆和筆尖環(huán)繞法藏鋒; 處理上分兩種情況,由幀間距離數組Dis來判斷,當Dis五個數據累加值DisCum,超過閾值,閾值為屏幕像素寬度的8% ; 當DisCum值超過閾值時,不需要更換筆刷,起筆階段按照選擇的筆型,隨機使用Pen數組中一個筆刷圖案作為筆刷,筆刷大小按照筆壓函數對應的值變化即可; 當DisCum沒有超過閾值時,判斷為垂直落筆的藏鋒,,那么每2個數據包就更換一次筆刷樣式; 當前筆刷樣式需要在筆刷Pen類型中按照筆的分類,在分類下進行隨機選取,每經過兩個數據包當前筆刷樣式就需要更換一次,直到落筆階段結束;轉到步驟104 ; 步驟103-2:提筆部分:提筆同樣分為露峰和藏鋒,藏鋒部分與行筆相同處理,提筆藏鋒時筆刷大小按照筆壓函數對應的值減小即可; 提筆露峰分為兩種,第一種是正常的出峰,一種是折峰,具體算法為:判斷PenRCum夾角累加值,小于90就是正常的出峰,筆刷按照筆壓對應函數減少即可; PenRCum值大于90就是折峰,對于折峰,從PenRCum超過90度的數據包開始計算,向前倒推,找到PenRCum值不足90度的點作為起始點,PenRCum超過90度后當前點為第5號點,向前倒推不足90度的點為第2點,故從第2點開始,與后續(xù)所有數據包每兩個數據包皆與起始點即2號點形成連線 三角形,后續(xù)數據包為3,4,5號點,那么形成的三星形為2,3,4和2,4,5兩個三角形,同時填充.形成厚重的折峰;轉到步驟104 ; 步驟103-3:,行筆期間按照筆壓大小,調整筆刷大小進行排列即可;轉到步驟104 ; 步驟104:輸出:將整個圖像存儲成圖像顯示到屏幕上即可。
【文檔編號】G06F3/0488GK103823628SQ201310686612
【公開日】2014年5月28日 申請日期:2013年12月15日 優(yōu)先權日:2013年12月15日
【發(fā)明者】林華, 李蔚然, 劉浩君 申請人:北京工業(yè)大學