国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

淺議基于VC的圖像水波動(dòng)畫(huà)系統(tǒng)

2014-08-27 02:25和風(fēng)帆戴昊奇廖育武
中國(guó)科技縱橫 2014年13期
關(guān)鍵詞:水波漣漪繪制

和風(fēng)帆 戴昊奇 廖育武

(湖北文理學(xué)院,湖北武漢 441053)

淺議基于VC的圖像水波動(dòng)畫(huà)系統(tǒng)

和風(fēng)帆 戴昊奇 廖育武

(湖北文理學(xué)院,湖北武漢 441053)

基于Visual C++6.0這一開(kāi)發(fā)環(huán)境,同時(shí)借助OpenGL編程,對(duì)圖像予以相應(yīng)的動(dòng)畫(huà)處理,從而讓靜態(tài)圖像生動(dòng)起來(lái),具有一種水波漣漪效果。本文首先介紹了開(kāi)發(fā)環(huán)境(硬件環(huán)境和軟件環(huán)境),然后分析了圖像動(dòng)畫(huà)設(shè)計(jì)(系統(tǒng)設(shè)計(jì)、系統(tǒng)框架設(shè)計(jì)思路以及系統(tǒng)實(shí)現(xiàn)步驟),接著討論了系統(tǒng)的核心函數(shù)——漣漪(定義、產(chǎn)生、繪制),最后闡述了OpenGL的處理流程。

VC 圖像 水波動(dòng)畫(huà) 漣漪

圖像水波動(dòng)畫(huà)系統(tǒng)能夠?qū)D像予以相應(yīng)步驟的動(dòng)畫(huà)處理,從而讓靜態(tài)圖像生動(dòng)起來(lái),具有一種水波漣漪效果。對(duì)水波漣漪進(jìn)行模擬時(shí),將滿足下述功能:1)系統(tǒng)界面是在根據(jù)OpenGL圖形程序構(gòu)建而成的整體框架下運(yùn)行的;2)將后綴名稱(chēng)為.rgb的目標(biāo)圖片載入OpenGL圖形處理程序;3)在執(zhí)行程序的過(guò)程中,鼠標(biāo)左鍵單擊圖片,該情況下,屏幕上便會(huì)基于鼠標(biāo)單擊處形成所謂的漣漪發(fā)生點(diǎn),并展現(xiàn)水波漣漪蕩漾一般的動(dòng)態(tài)效果[1]。下文將針對(duì)基于VC的圖像水波動(dòng)畫(huà)系統(tǒng)進(jìn)行探討。

1 開(kāi)發(fā)環(huán)境

硬件環(huán)境:要求計(jì)算機(jī)配置至少達(dá)到“P4 2.0G/80G/256M/52XCD”這一標(biāo)準(zhǔn)。軟件環(huán)境:(1)Windows 2000/XP;(2)Microsoft Visual C++6.0;3)OpenGL開(kāi)發(fā)庫(kù)。

2 圖像動(dòng)畫(huà)設(shè)計(jì)

2.1 系統(tǒng)設(shè)計(jì)

(1)系統(tǒng)框架設(shè)計(jì):為達(dá)成水波漣漪效果,本系統(tǒng)需要應(yīng)用到OpenGL圖形程序,所以,需要對(duì)OpenGL繪制環(huán)境予以一系列必要設(shè)置,如對(duì)邏輯調(diào)色板進(jìn)行設(shè)置等,待設(shè)置結(jié)束之后才允許進(jìn)行后續(xù)操作。(2)水波動(dòng)畫(huà)設(shè)計(jì):利用OpenGL程序按特定順序?qū)θ舾珊瘮?shù)進(jìn)行相應(yīng)設(shè)計(jì)[2],以靜態(tài)圖像為目標(biāo)對(duì)象,將其對(duì)應(yīng)的紋理圖像空間一一對(duì)應(yīng)地映射到另一個(gè)空間,也就是所謂的幀緩沖圖像空間,系統(tǒng)工作狀態(tài)下載入圖像,采用點(diǎn)擊的方式便能夠讓圖像給人一種漣漪的觀感。

2.2 系統(tǒng)框架設(shè)計(jì)思路

(1)創(chuàng)建單文檔窗口,同時(shí)針對(duì)顯示像素格式予以必要設(shè)置,準(zhǔn)確定義窗口,如屬性等;(2)兩大描述表的連接,一個(gè)是Windows設(shè)備描述表,另一個(gè)是OpenGL繪制描述表;(3)繪制圖形;(4)在退出繪圖時(shí),將兩個(gè)描述表同時(shí)釋放出來(lái)[3]。

2.3 系統(tǒng)實(shí)現(xiàn)步驟

(1)在MyRippleView.h中添加成員函數(shù):添加成員函數(shù)以及成員變量→對(duì)場(chǎng)景進(jìn)行渲染→對(duì)像素格式進(jìn)行設(shè)置→對(duì)邏輯調(diào)色板進(jìn)行設(shè)置→對(duì)OpenGL場(chǎng)景進(jìn)行初始化→對(duì)OpenGL繪制描述表進(jìn)行設(shè)置→對(duì)OpenGL調(diào)色板進(jìn)行設(shè)置→對(duì)OpenGL設(shè)備描述表進(jìn)行設(shè)置。(2)在MyRippleView.cpp中進(jìn)行相關(guān)設(shè)置:對(duì)窗口所屬類(lèi)型進(jìn)行設(shè)置→對(duì)OpenGL場(chǎng)景進(jìn)行初始化→對(duì)當(dāng)前繪制描述表進(jìn)行設(shè)置→對(duì)像素格式進(jìn)行設(shè)置→對(duì)場(chǎng)景進(jìn)行繪制以及渲染[4]。對(duì)于OpenGL窗口而言,像素格式為關(guān)鍵屬性之一,不僅涉及是否使用雙緩沖,而且涉及顏色位數(shù),同時(shí)還涉及類(lèi)型和深度位數(shù)等。OpenGL帶有強(qiáng)大的雙緩存功能,可以用來(lái)高效地繪制動(dòng)畫(huà)。當(dāng)計(jì)算機(jī)屏幕正在顯示由前臺(tái)緩存繪制完成的某一幅幀畫(huà)面時(shí),與此同時(shí),后臺(tái)緩存則會(huì)緊鑼密鼓地進(jìn)行下一幀畫(huà)面的繪制,待繪制完成之后,便會(huì)在屏幕上顯示出來(lái),而此時(shí)的前臺(tái)緩存與之相反,則在進(jìn)行下一幀畫(huà)面的繪制。程序?qū)?huì)應(yīng)用到SwapBuffers()函數(shù)以實(shí)現(xiàn)對(duì)交換緩存的合理設(shè)置,即每執(zhí)行完1次繪制過(guò)程,便會(huì)對(duì)前后臺(tái)緩存進(jìn)行1次交換,從而使得下一幀畫(huà)面在屏幕后得以繪制完成。

3 系統(tǒng)的核心函數(shù)——漣漪

3.1 定義

漣漪所對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)定義主要包括:(1)漣漪所對(duì)應(yīng)的幾何位置;(2)漣漪所對(duì)應(yīng)的紋理坐標(biāo);(3)漣漪所對(duì)應(yīng)的缺省紋理坐標(biāo)等[5]。

3.2 產(chǎn)生

鼠標(biāo)對(duì)目標(biāo)圖片進(jìn)行左鍵單擊,如此一來(lái),便可以準(zhǔn)確確定鼠標(biāo)單擊位置所對(duì)應(yīng)的具體坐標(biāo),以此為基礎(chǔ),對(duì)漣漪形成位置所涉及的諸多參數(shù)予以準(zhǔn)確計(jì)算。

3.3 繪制

對(duì)漣漪進(jìn)行繪制時(shí),需要從事先準(zhǔn)備的振幅表中選擇和調(diào)取相關(guān)數(shù)據(jù),準(zhǔn)確計(jì)算并有效確定紋理所對(duì)應(yīng)準(zhǔn)確坐標(biāo),接下來(lái)合理利用四邊形模擬的處理方法,對(duì)網(wǎng)格區(qū)域內(nèi)的所囊括的各個(gè)點(diǎn)予以順序地依次繪制,具體操作過(guò)程如下:從漣漪振幅表中選擇和調(diào)取相關(guān)數(shù)據(jù)→在網(wǎng)格中逐個(gè)繪制→繪制一個(gè)四邊形→左下角頂點(diǎn)→左上角頂點(diǎn)→右上角頂點(diǎn)→右下角頂點(diǎn)→繪制結(jié)束。

4 OpenGL的處理流程

在創(chuàng)建一個(gè)三維圖形的過(guò)程中,其涉及的主要工作流程如下:(1)建模。一個(gè)是幾何建模,另一個(gè)是行為建模;(2)設(shè)置觀點(diǎn)。所謂設(shè)置觀點(diǎn)指的是,對(duì)觀察者所處于的空間位置進(jìn)行準(zhǔn)確描述;(3)設(shè)置環(huán)境。對(duì)環(huán)境的一些特征進(jìn)行準(zhǔn)確描述,主要包括光源以及空氣能見(jiàn)度等[6]。圖1為OpenGL的工作流程圖。

5 結(jié)語(yǔ)

本文針對(duì)基于VC的圖像水波動(dòng)畫(huà)系統(tǒng)進(jìn)行了相關(guān)研究,尤其重點(diǎn)討論了圖像動(dòng)畫(huà)設(shè)計(jì)以及核心函數(shù),最終實(shí)現(xiàn)了對(duì)靜態(tài)圖像的有機(jī)轉(zhuǎn)化,使其具有動(dòng)態(tài)圖像的相關(guān)特征,即水波漣漪效果。

[1]馬義俊,巴力登.基于OpenGL的水波動(dòng)畫(huà)模擬[J].微計(jì)算機(jī)信息,2009,07:215-216+259.

[2]徐勇,閆玉寶,陳樹(shù)越.基于延遲光照技術(shù)的水波動(dòng)畫(huà)研究[J].安徽農(nóng)業(yè)科學(xué),2010,18:9894-9896.

[3]雞蛋面.水波倒影動(dòng)畫(huà)輕松做[J].電腦迷,2010,20:59.

[4]陳祥望,鄭松,和睿,徐丹.基于圖像的水波動(dòng)畫(huà)建模和實(shí)時(shí)繪制[J].云南大學(xué)學(xué)報(bào)(自然科學(xué)版),2013,S2:18-22.

[5]賈建軍.水波蕩漾動(dòng)畫(huà)效果的制作[J].中國(guó)教育技術(shù)裝備,2011,02:106.

[6]吳獻(xiàn),張正球.一種用于水波動(dòng)畫(huà)的實(shí)時(shí)動(dòng)態(tài)網(wǎng)格劃分算法[J].福建師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2012,05:42-47.

注:廖育武為指導(dǎo)老師。

猜你喜歡
水波漣漪繪制
Art on coffee cups
Your Name
灃河水波
Your Name
戈壁里的水波
漣漪
放學(xué)后
探測(cè)時(shí)空中的漣漪——引力波
好似……
在轉(zhuǎn)變中繪制新藍(lán)圖
重庆市| 阆中市| 香河县| 靖江市| 池州市| 莒南县| 昌平区| 阳西县| 河间市| 荣昌县| 岢岚县| 资兴市| 留坝县| 柳河县| 苍梧县| 科技| 普陀区| 夏津县| 虞城县| 东明县| 商河县| 鄄城县| 永丰县| 唐河县| 石城县| 罗城| 绵阳市| 卢氏县| 池州市| 乌鲁木齐县| 灵丘县| 措美县| 长葛市| 石景山区| 收藏| 南乐县| 宜兰市| 台山市| 同仁县| 二连浩特市| 乐都县|