




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、用計算機(jī)程序制作三維立體畫摘要該文介紹了三維立體畫的原理和制作方法,并給出了用語言編寫的源程序。借助于Pbrush.exe,讀者可以自己設(shè)計和欣賞各式各樣的三維立體畫。目前,市面上正在流行各式各樣的立體畫,其特點(diǎn)是從外表來看與一般的圖案很相似,但是雙眼緊盯著注視片刻后,一恍惚之間眼前便出現(xiàn)了畫中畫立體像。筆者第一次看到這種畫便被創(chuàng)造者的創(chuàng)意所傾倒。利用眾所皆知的雙眼視差原理,竟能在一張平面紙上制造出如此奇幻。但是立體畫本身除了其創(chuàng)造者的靈感和畫面創(chuàng)作者的別出心裁之外,其原理上并無神秘之處。用計算機(jī)程序來實(shí)現(xiàn)它,可說是易如反掌。筆者用一個晚上時間,便在微機(jī)上用BASI語言實(shí)現(xiàn)了簡單形體平面圓餅的
2、立體畫。當(dāng)然,要使該程序具有完善的功能,進(jìn)步其制作速度,還是應(yīng)該用編譯語言(如語言)來編寫。本文中給出的源程序借助于inds中的.BP圖形文件,可使大家自己制作任意形態(tài)的立體畫。一、立體畫的原理看過立體電影的人都知道,當(dāng)人的雙眼分別接收不同視角拍攝的圖像時便會產(chǎn)生立體感。這是由于人眼長期觀察的習(xí)慣造成的。和立體電影原理一樣的立體攝影風(fēng)景照片也很早就已出現(xiàn)。圖1中給出了這種立體照片的示意圖。左、右照片分別是人的雙眼角度上觀察一棱錐體時左右眼看到的圖像(圖2)。左眼看到的是棱錐的頂端向右錯動了一些的圖像,右眼的看到那么是棱錐的頂端向左錯動了一些的圖像。假如用一張硬卡片隔開兩張照片(如圖3),09A
3、04000.GIF;圖109A04001.GIF;圖209A04002.GIF;圖3雙眼分別看兩張畫,會看到一個立體的棱錐體。這種立體照片的觀察方法在測繪學(xué)中也早已采用。但是,目前的三維立體畫在形式上與這些很不一樣。它是怎樣在同一張畫面上呈現(xiàn)立體的呢?首先,分析一下人們是怎樣從這些立體畫中看出“立體形體的。從前面所說的可以知道,人眼要得到立體感,雙眼必須有視差,即雙眼看到的圖像應(yīng)該有差異。人們在看立體畫時,都有“恍惚一下的過程。在這過程中,雙眼的視中心發(fā)生了錯動(如圖4)。這樣09A04003.GIF;圖4左眼看到的是畫面的“偏左像,右眼看到的是畫面的“偏右像。只要“偏左像和“偏右像的內(nèi)容相當(dāng)
4、于圖1的左、右照片,雙眼就會感到立體形體。那么,能否把圖1的左、右照片分別當(dāng)做“偏左像和“偏右像,簡單重疊來得到立體畫呢?顯然不行??梢院铣闪Ⅲw畫的“偏左像和“偏右像是要滿足一定條件的。假如圖5中表現(xiàn)的棱錐體的外表上有圖案的話,09A04004.GIF;圖5像素a和像素a應(yīng)該具有一樣的顏色,因?yàn)樗鼈兪菑牟煌暯怯^察的同一個實(shí)體點(diǎn)。像素b和像素b、像素和像素的情況與此一樣。把兩幅畫分別當(dāng)作“偏左圖和“偏右圖,部分重疊成為同一畫面時,在新的畫面上這種關(guān)系仍應(yīng)該表現(xiàn)為a=a,b=b,=(如圖6)。但這時應(yīng)該注意到,在這張合成09A04005.GIF;圖6畫面上,點(diǎn)a既是“偏右圖上的點(diǎn)a,又是“偏左圖
5、上的點(diǎn)b。而一張畫面上一樣坐標(biāo)點(diǎn)的像素只可能是一種顏色,因此,產(chǎn)生了新的像素關(guān)系a=b。另外,點(diǎn)a既是“偏左圖上的點(diǎn)a,又是“偏右圖上的點(diǎn),所以,a=。以此類推,點(diǎn)b和點(diǎn)也有類似的情況。因此出現(xiàn)了新的關(guān)系表示式,.=a=a=b=b=.。這就構(gòu)成了立體畫面上像素必需要滿足的條件:“等顏色像素鏈。立體畫上的所有點(diǎn)都附屬于某一條“等顏色像素鏈。這就是所有立體畫圖案都呈現(xiàn)出某種程度上的程度周期性的原因。因此,對于任意立體形狀,只要構(gòu)造出相應(yīng)的這種“等像素鏈,并按其規(guī)律充填圖案即可得到立體畫。但是正如前面所述,由于這種“等像素鏈條件的約束,人們雖然可以隨意構(gòu)造出各種形體的立體畫,但其立體形體的外表圖案是
6、不能完全隨人意愿的。二、制作立體畫的計算機(jī)程序由于人的雙眼的程度性,以上的“等像素鏈只按程度方向分布,與垂直方向無關(guān)。因此,在程序中,各個像素行的處理過程是互相獨(dú)立的。制作立體畫的程序主構(gòu)造圖如圖7。09A04006.GIF;圖7制作立體畫的程序主構(gòu)造圖在以上構(gòu)造圖中,關(guān)鍵是如何建立“等像素鏈。詳細(xì)的處理如下。對于立體形體上的每一個點(diǎn),首先求出該點(diǎn)在“偏左圖和“偏右圖上的坐標(biāo)。以圖1中的棱錐頂點(diǎn)為例,實(shí)際上其X坐標(biāo)是在中心點(diǎn),但由于雙眼的位置并不在其正上方,頂點(diǎn)在“偏左圖上向右位移,在“偏右圖上向左位移,而且其位移值的大小顯然與其高度有關(guān),即該點(diǎn)坐標(biāo)越高位移值就越大。a,b,等點(diǎn)也都有這些位移
7、。在求出一個點(diǎn)在“偏左圖和“偏右圖上的坐標(biāo)后,再算出在合成圖(如圖6)上的對應(yīng)坐標(biāo),以建立“等像素關(guān)系,如a=a。當(dāng)立體形體的一個程度剖面上的全部點(diǎn)經(jīng)過以上處理后,合成圖的各條“等像素鏈關(guān)系也就自然形成了。另外,由于有可能出現(xiàn)高點(diǎn)遮蓋低點(diǎn)的情況,“等像素鏈的構(gòu)造應(yīng)該從低點(diǎn)到高點(diǎn)逐層進(jìn)展,高點(diǎn)的“等像素關(guān)系將替代低點(diǎn)的“等像素關(guān)系。這也是程序主構(gòu)造圖中“首先,對于沒有任何形體存在的背景平面構(gòu)造等像素鏈的原因。下面給出了根據(jù)以上構(gòu)造圖用語言編寫的源程序。程序中,每一個坐標(biāo)點(diǎn)對應(yīng)一個構(gòu)造型數(shù)據(jù),它包含“前像素、“后像素兩個指針。“前像素指針指向該坐標(biāo)點(diǎn)作為“偏右圖上的一點(diǎn),在“偏左圖所對應(yīng)的點(diǎn)的坐標(biāo)
8、。“后像素指針指向該坐標(biāo)點(diǎn)作為“偏左圖上的一點(diǎn),在“偏右圖所對應(yīng)的點(diǎn)的坐標(biāo)。程序中,“立體形體程度剖面的上下坐標(biāo)數(shù)據(jù)、“原始圖案素材和輸出的“立體畫的文件格式都是采用了inds3.1的Pbrush產(chǎn)生的BP圖形文件格式。圖幅大小要求都是640400,用16種顏色方式。其中,立體形體上各點(diǎn)的上下坐標(biāo)用圖形文件中的顏色值表示,因此該圖形文件的圖形與帶顏色的等高線圖平安一樣。通常情況下,在16色的BP文件中顏色值從小到大的順序?yàn)?黑色、暗紅色、暗綠色、暗黃色、暗藍(lán)色、暗紫色、暗青色、暗灰色、灰色、明紅色、明綠色、明黃色、明藍(lán)色、明紫色、明青色、白色。本程序采用最簡單的“圖案充填方案,即各條“鏈上的像
9、素點(diǎn)皆采用該“鏈上的第一個像素的顏色。程序中的常數(shù)EYE-SPAE表示“偏左圖和“偏右圖之間的偏向,B-DT是說明“鏈的首或尾的指針標(biāo)志。該程序寄生在inds3.1中的Pbrush軟件上。借助于它來構(gòu)筑立體形體(即立體形體程度剖面上下坐標(biāo)數(shù)據(jù)文件圖8),設(shè)計原始圖案(圖9)。程序運(yùn)行后,逐行輸入并處理以上兩個文件中的圖形,然后輸出立體畫結(jié)果文件(圖10)。最后,用Pbrush來欣賞立體畫result.bp。unsignedintbfReserved1,bfReserved2;/*settzer*/unsigedlngintbfffits;/*byteffsetfrBITAPFILEHEADER
10、tbitappixeldatainthefile*/BITAPFILEHEADER;struttagBITAPINFHEADERunsignedlngintbiSize,/*sizefBITAPINFHEADER*/biidth;/*idthinpixelsbiHEight;/*heightinpixels*/unsignedintbiPlanes,/*alays1*/biBitunt;/*lrbitsperpixelustbe1,4,8r24*/unsignedlngintbipressin,/*BI-RGB,BI-RLE8r4*/biSizeIage,/*ttalbytesiniage*/
11、biXPelsPereter,/*0,rpt,hres.*/biYPelsPereter,/*0,rpt,hres.*/bilrUsed,/*nrally0,ansetalern.lrsthanbiBitunt*/bilrIprtant;/*nrally0*/BITAPINFHEADER;struttagRGBQUADunsignedharrgbBlue,/*blueintensity,0-255*/rgbGreen,/*greenintensity,0-255*/rgbRed,/*redintensity,0-255*/rgbReserved;/*reserved,settZer*/RGBQ
12、UADNU-LR;har*fn-layer=layer.bp;har*fn-rg=rigin.bp;har*fn-result=result.bp;FILE*flayer,*frigin,*fResuunsignedhartp-byte1,tp-byte2;unsignedintline,i-byte,i-pixel,x;unsignedintlayer;intleft-x,right-x;tp-x;unsignedlngintur-ffset;unsignedharhIDTH,rg-lrIDTH;puts(-INTRIK-);puts(-byLiJisng-);if(fLayer=fpen(
13、fn-layer,rb)!=NULL)fread(BITAPFILEHEADER,SIZE-F-BITAPFILEHADER,1,fLayer);fread(BITAPINFHEADER,SIZE-F-BITAPINFHEADER,1,fLayer);if(BITAPFILEHEADER.bfType1=BBITAPFILEHEADER.bfType2=BITAPINFHEADER.biidth=IDTHBITAPINFHEADER.biHeight=NU-LINEBITAPINFHEADER.biBitunt=BITS-PER-PIXELBITAPINFHEADER.bipressin=PR
14、ESSIN)fread(RGBQUAD,SIZE-F-RGBQUAD,NU-LR,fLayer);elseflse(fLayer);printf(File%sisntfitfrthisprgra!n,fn-layer);geth();exit(1);elseprintf(File%sdesntexist!n,fn-layer);geth();exit(2);if(frigin=fpen(fn-rg,rb)!=NULL)fread(BITAPFILEHEADER,SIZE-F-BITAPFILEHEADER,1,frigin);fread(BITAPINFHEADER,SIZE-F-BITAPI
15、NFHEADER,1,frigin);if(BITAPFILEHEADER.bfType1=BBITAPFILEHEADER.bfType2=BITAPINFHEADER.biidth=IDTHBITAPINFHDADER.biHEight=NU-LINEBITAPINFHEADER.biBitunt=BITS-PER-PIXELBITAPINFHEADER.bipressin=PRESSIN)fread(RGBQUAD,SIZE-F-RGBQUAD,NU-LR,frigin);elseflse(frigin);printf(File%sisntfitfrthisprgra!n,fn-rg);
16、geth();exit(3);elseprintf(File%sdesntexist!n,fn-rg);geth();exit(4);if(fResult=fpen(fn-result,b)!=NULL)frite(BITAPFILEHEADER,SIZE-F-BITAPFILEHEADER,1,fResult);frite(BITAPINFHIADER,SIZE-F-BITAPINFHEADER,1,fResult);frite(RGBQUAD,SIZE-F-RGBQUAD,NU-LR,fResult);elseprintf(File%spenerrr!n,fn-result);geth()
17、;exit(5);fr(line=0;lineNU-LINE;line+)printf(line=%dn,line);ur-ffset=(unsignedlngint)PIXEL-DATA-FFSET+(unsignedlngint)BYTE-PER-LINE*line;fseek(fLayer,ur-ffset,SEEK-SET);fseek(frigin,ur-ffset,SEEK-SET);fr(i-byte=0;i-byteBYTE-PER-LINE;i-byte+)fread(tp-byte1,1,1,fLayer);fread(tp-byte2,1,1,frigin);fr(i-p
18、ixel=0;i-pixelPIXEL-PER-BYTE;i-pixel+)x=i-byte*PIXEL-PER-BYTE+i-pixel;if(xIDTH)hx=(unsignedhar)(tp-byte1(BITS-PER-PIXEL*i-pixel)/(unsignedhar)0 x80(BITS-PER-PIXEL-1);rg-lrx=(unsignedhar)(tp-byte2(BITS-PER-PIXEL*i-pixel)/(unsignedhar)0 x80(BITS-PER-PIXEL-1);fr(x=0;xIDTH;x+)dtx.lr=0;dtx.nxt-x=N-DT;dtx.pri-x=N-DT;if(x+EYE-SPAE)IDTH)dtx.nxt-x=x+EYE-SPAE;if(signed)x-EYE-SPAE)=0)dtx.pri-x=x-EYE-SPAE;fr(layer=1;layerNU-LR;layer+)fr(x=0;xIDTH;x+)left-x=x-EYE-SPAE/2+(layer/2);right-x=x+EYE-S
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年射頻消融治療儀項(xiàng)目合作計劃書
- 2025年P(guān)M步進(jìn)電機(jī)合作協(xié)議書
- 含稅金額合同范本
- 動遷房的買賣合同范本
- 外籍工作人員聘請合同范本
- 綠化養(yǎng)護(hù)及道路保潔服務(wù)合同范本
- 關(guān)于英語合同范本
- 介紹公司合同范本
- 二包服務(wù)合同范本
- 臨時設(shè)施合同范本
- GB/T 678-2023化學(xué)試劑乙醇(無水乙醇)
- 影視鑒賞-第一章-認(rèn)識電影-課件
- 船舶塢修廠修工程單審批稿
- 教科版小學(xué)科學(xué)三年級上冊《空氣》單元解讀與試教課件
- 電機(jī)學(xué)同步電機(jī)-全套課件
- 2023年福建省中考英語真題及參考答案
- 公路工程施工安全管理及其實(shí)例
- 教科版高中信息技術(shù)(2019)必修一全冊教案
- 左洛復(fù)怡諾思專家講座
- 行政確認(rèn)專題教育課件
- 2023年道德與法治課程標(biāo)準(zhǔn)
評論
0/150
提交評論