鄧學雄, 章 文, 張志堯, 顏 瑋
(華南理工大學機械與汽車工程學院工業(yè)設計與圖學研究所,廣東 廣州 510640)
國畫中的表現(xiàn)技巧繁多,國畫仿真研究者對國畫中多種效果的仿真展開了研究。如對筆畫進行模擬[1],基于水墨畫感性藝術(shù)效果圖形的畫筆模型的建立[2],三維毛筆模型的建立(成功模擬了分叉效果)[3],以2D 筆畫模型為基礎對水墨畫效果進行仿真[4]。由于國畫效果樣式繁多,形成過程復雜,很難用單一的數(shù)學模型模擬出所有效果。因此,各種國畫效果的仿真方法也如雨后春筍般涌現(xiàn)。
“一筆多色”是眾多國畫繪畫技法中的一種,也是較難控制和掌握的一種。目前,用計算機模擬“一筆多色”的研究并不多見。本研究是用多個筆道疊加的算法來實現(xiàn)色彩混合的繪畫技法,為計算機模擬“一筆多色”的國畫藝術(shù)效果提供了新技術(shù)。
一筆多色效果的形成主要是當毛筆同時沾有不同的顏色,墨水和顏料將會在筆尖至筆腹形成一定的分布規(guī)律。毛筆的筆跡會受顏料在毛筆中分布的影響,顏色有一定的分布規(guī)律。手執(zhí)筆腹沾胭脂紅,筆尖沾墨的毛筆,輕輕落筆,重頓后迅速提筆,將會得到類似于圖1(b)上圖的筆跡顏色分布。
圖1 一筆多色效果形成
當進一步實驗之后發(fā)現(xiàn),也會得到類似圖1(b)下圖的筆跡顏色分布。這是因為筆尖所沾的顏料較少,而筆腹所沾的顏色被吸收到筆腹的空腔中,毛筆在紙上滑動的過程中,筆腹受壓,筆腹空腔中的顏料不斷從毛筆流向紙張,由于筆腹顏色的流量比筆尖顏色的流量大,最終把筆尖顏色逼至筆道痕跡的邊緣,如圖1(c)所示,最后形成了圖1(b)下圖的效果。
對一筆多色顏色分布進行分析,可以想到若把多個粗細和顏色漸變的筆道在同一位置疊加,便可實現(xiàn)一筆多色的效果。在一組為實現(xiàn)一筆多色疊加的筆道中,最下面的筆道粗,最上面的筆道細,最下的筆道為筆尖顏色,而最上面的筆道為筆腹顏色,各筆道間顏色均勻過渡。
為了記錄用戶選定的筆尖和筆腹顏色,在CChinesePaintView 中增加兩個成員變量m_tipColor 和m_midColor 來分別記錄用戶選定的筆尖和筆腹顏色,在增加一個成員變量m_brushStyle 來記錄用戶選擇的筆觸類型,NON為一般筆觸,MUL 為一筆多色筆觸。在CStroke類中新增成員變量m_tipClr, m_midClr, m_style分別表示筆道的筆尖顏色,筆腹顏色和風格類型。為了兼容一般筆道,在筆道風格為NON 時,筆道根據(jù)m_midClr 的顏色繪制。
由用戶的選擇信息和實時的Packet 信息的讀入,可以生成最底層的筆跡。再由用戶設定參數(shù)midPercent 的值來記錄筆腹筆道(疊加的最上層筆道)的粗細占整個筆道(疊加最底層筆道)的百分比。那么最上層筆道中每點的畫筆大小等于最下層筆道中每點的畫筆大小乘以midPercent。
假設最上層筆道中最粗的地方筆畫大小為maxWeight,則在該點最下層筆道的筆畫大小為maxWeight*m_midPercent,兩個筆畫大小的差值為maxWeight*(1-m_midPercent),達到最大值。為了使一筆多色筆道的顏色過渡達到平滑效果且計算效率達到最優(yōu),在最上層筆道與最下層筆道之間添加maxWeight*(1-m_midPercent)-1 個筆道,這使得在多色筆道最粗的位置,順序疊加的筆道之間大小相差1,達到最高的分辨率。因此,在將一筆多色筆道轉(zhuǎn)化成多個普通筆道前,先掃描筆道中的各點得到maxWeight,之后就可算得需要疊加筆道的數(shù)目了。
要確定筆道的疊加數(shù)目,就需先得到maxWeight 的值,但在一個筆道結(jié)束之前,是無法預測該筆道中哪個點的筆畫大小最大,這為一筆多色筆道的實時顯示造成了一定困難。為了解決這個問題,可以在用戶繪制的過程中繪制出最底層的筆跡,在用戶提筆的瞬間繪制一筆多色的多層疊加筆道。在用戶繪制過程中顯示最底層筆跡十分重要,這樣用戶可以預測所畫筆道的位置和粗細,使程序更具可用性。
實驗程序中設置了一個“回退”按鈕,用戶按下該按鈕后,程序?qū)h除筆道數(shù)組中的最后一個筆道。若一個多色筆道由n 個普通筆道疊成,則用戶要按n 次“回退”按鈕才能把它完全刪除。為了解決這個問題,在CStroke 中設置一個變量m_index 來記錄一筆多色筆道中的子筆道序號,普通筆道的m_index 值為0,一筆多色筆道的最底層筆道m(xù)_index 也為0,底層筆道的上一層筆道m(xù)_index 為1,依次遞推,若一個一筆多色筆道共由n 個子筆道組成,則最上層筆道的m_index 值為n-1。刪除上一個筆道的過程如圖2所示。
圖2 上一筆道刪除流程圖
如圖3 所示,設一個多色筆道有n 個子筆道組成,最外層的m_index=0,percentage=1,顏色為 筆 尖 顏 色; 最 內(nèi) 層 的 m_index=n-1 ,percentage=m_midPercent,顏色為筆腹顏色筆道中任一點的weight值是最外層筆道對應點weight乘以m_midPercent。為了求出任一子筆道的顏色和weight 值和最外層筆道對應點weight 值的關系,先算出相鄰筆道percentage 的差值delta:
圖3 一筆多色子筆道參數(shù)計算(一)
delta=(1-nMidPercent)/(n-1);
那么對于任一m_index 值為index 的子筆道,它上面某一點的weight 值subWeight 與最外層筆道該點的對應點weight 值firstWeight 的關系為:
subWeight=firstWeight*(1-delta*index);
假設每一個子筆道的顏色由midPercent 份的midClr 和tipPercent 份的tipClr 混合得到,且midPercent + tipPercent = 1,則:
midPercent = delta * index / (1- m_nMidPercent );
tipPercent = 1-midPercent;
據(jù)此,可以對需要添加的子筆道參數(shù)逐一設置。子筆道參數(shù)計算中各量的關系如圖4 所示。最后把這些子筆道都添加到CChinesePaintDoc的筆道數(shù)組中,并把原筆道的顏色設置為筆尖顏色,m_style 改成NON。
這樣就完成了一個多色筆道向多個單色筆道的轉(zhuǎn)化,如圖5 所示。(注意,這里所說的m_color 是指m_midClr,在m_style 為NON 的情況下,筆道按m_midClr 的顏色繪制。)
圖4 一筆多色子筆道參數(shù)計算(二)
圖5 多色筆道轉(zhuǎn)化成單色筆道的過程
圖6 和圖7 為本程序繪制的一筆多色效果??梢钥闯龌旌线^渡效果十分柔和,在頓筆、提筆時都表現(xiàn)自然。同時該種算法占用存儲空間較小,運算速度快。
圖6 一筆多色效果展示(一)
本研究的國畫一筆多色藝術(shù)效果的計算機模擬,目標為尋求一種可以實現(xiàn)用戶一筆多色效果實時筆跡繪制的算法,力求實現(xiàn)多色筆道中顏色真實自然過渡,并在實時繪制中表現(xiàn)用戶的運筆力度及鉤提頓挫。一筆多色算法的原理,主要是基于用多個筆道疊加模擬一筆多色效果的構(gòu)想,討論了多筆疊加中筆道數(shù)目的確定方法、多色筆道的數(shù)據(jù)結(jié)構(gòu)及其中各參數(shù)的計算、實時顯示的具體過程及筆道刪除處理。用多筆道疊加的方法,巧妙地解決了一筆多色筆道中的色彩過渡問題,避免了逐點計算筆道中各點顏色的復雜過程,提高了運行速度,逼真細膩的表現(xiàn)了一筆多色的藝術(shù)效果。
[1] 白海飛, 齊亞峰, 孫濟洲. 基于紋理映射的中國水墨畫飛白效果的仿真生成[J]. 天津大學學報, 2005, 38(1): 74-79.
[2] 李 丹, 孫美君, 孫濟洲. 水墨畫仿真中畫筆的行為實現(xiàn)[J]. 中國圖像圖形學報, 2004, 9(2): 184-189.
[3] 于金輝, 徐曉剛, 彭群生. 一個三維計算機水粉筆刷模型[J]. 計算機輔助設計與圖形學學報, 2000, 12(9): 664-667.
[4] 孫美君.中國水墨畫仿真中毛筆模型的研究與設計[D]. 天津: 天津大學電子信息工程學院, 2005.