999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種三維模型制作3D立體圖像的方法

2018-10-25 11:06:56李永成李孟宇
計算機時代 2018年9期
關鍵詞:模型

李永成 李孟宇

摘 要: 為了解決三維模型轉化為3D立體圖像的問題,采用通過軟件編程對圖像進行濾色處理后再次合成的方法。該方法通過讀取3DMax導出的3ds格式數據文件進行圖像顯示,對兩個不同視角的圖像抓屏,根據分色顯示原理對抓取的圖像進行濾色處理,合成符合分色3D立體要求的新圖像,借助分色眼鏡,可以觀察到圖像的3D立體效果。研究結果表明,用該方法無需借助第三方軟件,使3D立體圖像的制作更加靈活和快捷,并且圖像具有較快的顯示速度。

關鍵詞: 分色法立體3D; 三維圖像; 3ds格式; 圖像處理

中圖分類號:TP391.9 文獻標志碼:A 文章編號:1006-8228(2018)09-62-04

Abstract: In order to solve the problem of converting 3D model into a 3D stereoscopic image, this paper adopts a method of recomposing the image after performing color filter processing through software programming. This method displays images by reading 3DMax-derived 3ds format data files, captures two different views of the image, filters the captured images according to the separation display principle, and synthesizes new images which meet 3D stereoscopic requirements. With the help of color separation glasses, the 3D stereoscopic effect of the image can be observed. The result of the research shows that this method can make 3D stereoscopic images more flexible and faster without using third-party software, and the images have faster display speed.

Key words: color-separation stereoscopic 3D; 3D images; 3ds format; images processing

0 引言

無論是影視作品還是圖像攝影作品,3D技術都得到廣泛的應用,3D技術可以最大限度地還原實際現場,尤其是3D電影的出現,更是給人們的娛樂帶來了一種全新的體驗。3D顯像的方法有很多,其中的分色法(色差式)制作的影像其3D效果雖然較差,需要佩戴分色眼鏡,但因其制作方便,圖像處理軟件Photoshop[1-3]就可以方便地制作,而且眼鏡的制作成本低廉,因此仍然得到較大的應用。

在一些軟件開發中,如果依靠圖像處理軟件進行3D立體圖像的制作,則往往因為缺少數據接口而難以實現,尤其是對于大量的圖像需要處理的場合,依靠圖像處理軟件顯然是不合適的,一種可行的方法是,設計自己的算法進行圖像處理。對于3DMax制作的三維圖形,屏幕上顯示的實際是二維的圖像,只是可以變換角度進行顯示而已,并無3D立體效果,如何將三維圖像轉換成3D立體圖像是本文研究的內容。

1 分色法3D成像原理[4]

3D成像技術主要有裸眼式和眼鏡式。在眼鏡式3D技術中,以色差式3D技術(Anaglyphic 3D)實現起來最簡單,成像原理簡單,使用的是濾色眼鏡,這種技術利用了有色眼鏡僅能通過相同顏色的光原理。

人們視覺上獲得的立體感,來自于左眼和右眼所看到的物體角度的細微差異,因此,必須有兩幅具有一定視差的圖像分別傳送到我們的兩眼。

分色法就需要對圖像的顏色進行處理。圖像由像素組成,每一個像素的顏色由RGB值來表達。RGB值的R表示紅色、G表示綠色、B表示藍色,這三種顏色就是三原色,三原色中任何一種都不能用其余兩種顏色合成。RGB值的取值范圍為0~255,取值越低,其亮度就越低,因此紅色的取值范圍為(0~255,0,0)、青色(不含紅色分量的顏色)的取值范圍為(0,0~255,0~255),由于它們彼此不含有對方的顏色,對于紅藍3D而言,可以用僅有紅色分量的一幅圖(左眼視角,以下簡稱左圖)和僅有綠色及藍色分量的另一幅圖(右眼視角,以下簡稱右圖)合成為一幅圖,兩幅圖包含了一個畫面的完整顏色信息。

俗稱的紅藍眼鏡實際就是紅青眼鏡。紅色眼鏡只能透過圖像的紅色,青色眼鏡只能透過綠色和藍色,視覺上產生的兩幅圖存在角度差,因此呈現給我們的是一幅立體圖像,濾色原理和成像原理分別如圖1和圖2所示。

2 3D圖像合成設計方案

設計目標是顯示一幅三維圖像的3D立體圖像,使用紅藍眼鏡觀察3D立體圖像。

開發平臺:VC++ MFC及OpenGL函數庫。

VC++是基于Windows的C++開發平臺,其中的MFC類庫封裝了大部分的Windows API函數。OpenGL即開放性圖形庫(Open Graphic Library),是圖形與硬件的接口,包含了圖形變換、紋理映射及特殊效果處理等120多個函數,它允許開發者直接使用自己的模型數據,極大地節省了開發者的時間。

實現方案:使用3DMax軟件建模,導出3ds格式的模型文件,在VC++ MFC編程環境下,讀取3ds文件,使用OpenGL[6-9]函數庫,根據3d文件數據重新恢復模型,產生兩幅不同視口的三維圖像并進行顏色處理,合成一幅紅青圖像。實現的原理流程如圖3所示。

3 3DS文件的圖像顯示

3.1 3DMax建模

3Dmax[5]是Autodesk公司開發的基于PC系統的三維動畫渲染和制作軟件,使用該軟件制作的三維模型,可以導出DWF或3ds格式的文件,文件包含建立模型的結構、位置、紋理等三維數據信息,方便與其他軟件進行交互。本文使用的是3ds格式文件,

并且以位圖文件進行貼圖。以下是制作三維模型及導出3ds文件的主要流程。

⑴ 三維圖形繪制。

⑵ 給模型制定材質或貼圖。

⑶ 導出3ds格式的文件。

3.2 3ds文件的讀取

3ds文件是基于“塊”存儲的,這些塊描述了諸如場景,每個視口(Viewport)的狀態、材質、網格對象等數據,主要涉及三個數據結構:多邊形列表、三角形列表、定點集。

在VC++ MFC環境下讀取3ds文件塊可以使用以下步驟。

步驟1:定義數據塊變量并分配空間。

步驟2:使用一個while循環,在循環體內讀入子塊。

步驟3:使用switch語句進行ID號判斷及處理,如ID為MATERIAL則讀取材質信息,ID為OBJECT則讀取對象信息等。

步驟4:若當前字塊字節數小于預定長度則結束while循環。

步驟5:釋放當前塊的內存空間。

3.3 三維圖形的顯示

在VC++6.0 MFC環境下,讀取3ds文件,隨后使用OPenGL庫函數實現圖像的顯示,在此過程中還必須進行背景色、光源的設置,定義一個渲染函數進行圖形的渲染,可以同時將多個3DS文件載入內存,并賦予不同的ID標識,根據ID標識設置各個三維模型放置的位置,可以分別對各模型進行靈活的平移、縮放、旋轉等控制操作。

以下是一些常用OpenGL函數的功能。

⑴ glRotatef:旋轉。

⑵ glTranslatef:平移。

⑶ glClearColor:清除顏色緩沖區。

⑷ glShadeModel:設置著色模式。

⑸ glMaterialfv:指定用于光照計算的當前材質屬性。

4 3D立體圖像合成

以上方法實現了三維圖形的顯示,顯示的圖形是基于三維建模數據的二維圖像,本文使用兩個不同角度的三維圖像,圖像抓取后進行顏色處理并重構成3D立體圖像。

4.1 左右圖像的抓取

設計一個“3D圖像立體顯示”菜單,選擇該菜單時顯示一幅從物體左前側角度觀察的圖像,調用抓圖函數捕捉圖像,并保存為bmp[10-11]格式的位圖(左圖)文件,保存后,將圖像自動向左旋轉一個角度,再捕捉該圖像,同樣保存為bmp格式位圖(右圖)文件。圖4是一個型號為Z35的銑床三維圖像左右兩個角度抓取的圖像。以下是圖像捕捉的實現步驟。

⑴ 建立一個屏幕設備環境句柄。

⑵ 建立一個與屏幕設備環境句柄兼容、與鼠標所在窗口區域等大的位圖。

⑶ 把新位圖選到內存設備描述表中。

⑷ 把屏幕設備描述表拷貝到內存設備描述表中。

⑸ 保存抓取的圖像。

4.2 圖像的顏色預處理

以上保存的圖像文件為24色(真彩)BMP位圖,包含了圖像的RGB全部信息,BMP文件里面的字節數據有三個部分,分別是:位圖文件頭(bitmap-file header)、位圖信息頭(bitmap-information header)、位圖數據Data Body陣列。

根據紅藍3D的成像原理,對圖像進行濾色處理,使左圖只有紅色分量,右圖只有綠、藍兩個分量。

左圖濾色的偽代碼:

//讀入指定BMP文件進內存

readBmp("bmp文件名");

//獲取每行字節數

lineByte←(bmpWidth*biBitCount/8+3)/4*4;

//遍歷每像素的三個分量

bmpHeight←bmpHeight-1;

if biBitCount=24 then //24色圖像

pitch←bmpWidth%4;

for i←0 to bmpHeight

do realPitch←i*pitch;

for j←0 to bmpWidth

//只顯示紅色

do pBmpBuf1[((bmpHeight-i)*bmpWidth

+j)*3+1+realPitch] ←0;

pBmpBuf1[((bmpHeight-i)*bmpWidth

+j)*3+realPitch] ←0;

repeat

end if

代碼中,pBmpBuf1指向一段只有R分量的內存段。以上代碼的步驟說明如下。

⑴ readBmp函數將BMP文件讀入內存。

⑵ 求出每行字節數lineByte。代碼中的bmpWidth為是位圖的寬度,也就是每行有多少個像素塊,biBitCount是一個像素值所占的字節數,對于24色位圖,此值為24。對于BMP文件,存儲圖像數據每行字節數為4的倍數,因此求lineByte時使用“/4*4”取整,對于不滿足4的整數倍時用+3來處理。

⑶ 遍歷位圖數據,對于左圖,只保留紅色分量,綠色和藍色分量設為0。

對于右圖,處理方法和左圖類似,只是保留綠色和藍色分量,定義pBmpBuf2為指向一段只有GB分量的內存段。

4.3 左右圖像的合成

上述代碼已分別取得R分量及GB分量的圖像數據,在合成一幅圖像時,采用疊套的for循環遍歷每個像素的RGB分量并將像素進行算術平均,保存到一個內存塊中。

以下偽代碼為將R分量平均值保存到內存塊pBmpBufhc中:

for i←0 to bmpHeight

realPitch←i*pitch; //每行像素量

for j←0 to bmpWidth

pBmpBufhc[((bmpHeight-i)*bmpWidth+j)*3+2+realPitch]

←(pBmpBuf1[((bmpHeight-i)*bmpWidth+j+offsetW)

*3+2+realPitch]+pBmpBuf2[((bmpHeight-i)

*bmpWidth+j)*3+2+realPitch])/2;

end if;

end if;

保存圖像的信息于pBmpBufhc后,將圖像保存為位圖文件,保存后的圖像可以使用一般的圖形編輯軟件打開。下面介紹的3D立體圖像的顯示中需要用到此文件。

4.4 3D立體圖像的顯示

本文使用的圖像顯示方式為讀取磁盤文件(前述中保存的文件)的方法,使用BitBlt函數顯示圖像。以下是具體步驟。

⑴ 使用MFC 的LoadImage函數裝載位圖。

⑵ 創建CDC對象。

⑶ 使用CreateCompatibleDC創建兼容設備。

⑷ 選擇位圖。

⑸ 使用BitBlt函數顯示位圖。

合成的圖像可以在一個新的窗口顯示,但在原窗口、原位置上顯示效果更好,不過需要退出原三維顯示狀態,如果開啟了定時器,則需要關閉,否則圖像會出現嚴重的閃爍。合成的圖像如圖5所示,帶上紅藍眼鏡就可以觀看到3D立體效果。(說明:為了論文的閱讀效果,圖5的背景色作了后期處理,改為了白色,左右圖的背景色若為白色,則合成的圖像背景色為RGB(127,127,127))。

5 結束語

基于三維數據模型顯示的圖像本身并不具備3D立體效果,使用本文介紹的方法可以得到分色3D立體效果的圖像,該方法的圖像濾色與合成部分同樣適用于制作非基于三維數據的3D立體圖像,而且全過程均可直接在內存中進行顏色處理,速度較快,可以制作3D立體動畫。

使用本文的方法對三維模型的靜態3D立體圖像制作有效,對于三維動畫圖像,因為需要先顯示非3D立體的圖像再進行處理,所以不再適用。如何直接在內存中,對3ds模型的貼圖文件進行動態的圖像合成,實現三維動態圖像顯示的問題有待今后進一步研究,如果這個問題得到解決,在3D立體游戲、3D立體仿真軟件開發等方面將有廣泛的應用前景。

參考文獻(References):

[1] 孫俊麗.基于新一代信息技術的photoshop圖像處理課程開發與建設[J].辦公自動化,2018.2:61-62

[2] 劉鳳霞.基于photoshop圖層混合計算公式的應用探究[J].電腦編程技巧與維護,2018.3:126-127,163

[3] 張曉琪.PhotoShop圖層的應用技巧[J].電腦編程技巧與維護,2017.18:84-86

[4] 王少典.關于3D顯示的研究與應用前景[J].信息記錄材料,2018.3:91-93

[5] 冉秋.3DMAX三維虛擬基礎下景觀設計技術的分析[J].數字技術與應用,2017.1:153,157

[6] 袁觀娜,李秋,張琰.基于OpenGL與3Dmax的虛擬現實動作仿真系統的研究[J].科技資訊,2016.4:1-2

[7] 許玉龍,張佩江,王忠義等.基于MFC和OpenGL的虛擬人體經絡穴位模型實現方法[J].計算機與現代化,2018.3:6-12

[8] 張肇同.基于opengl的三維模型讀取與動態觀察[J].科技視界,2017.34:4-5

[9] 梁婧,姚紅革.基于OpenGL的三維建模可視化軟件開發[J].信息通信,2013.9:83-83

[10] 趙劉飛,趙敏華.VC中DIB位圖程序設計的研究[J].工業控制計算機,2014.3:41-42,45

[11] 肖峰.VC++下的BMP格式圖像和PNG格式圖像的轉換[J].赤峰學院學報:自然科學版,2016.3:17-18

猜你喜歡
模型
一半模型
一種去中心化的域名服務本地化模型
適用于BDS-3 PPP的隨機模型
提煉模型 突破難點
函數模型及應用
p150Glued在帕金森病模型中的表達及分布
函數模型及應用
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
主站蜘蛛池模板: 性色生活片在线观看| 欧美性精品| 91精品啪在线观看国产60岁| 青青草国产精品久久久久| av手机版在线播放| 国产簧片免费在线播放| 久久久黄色片| 亚洲成人www| 99热这里只有精品免费国产| 亚洲天堂伊人| 亚洲av无码人妻| 噜噜噜综合亚洲| 国产视频一区二区在线观看| 一级做a爰片久久免费| 美女内射视频WWW网站午夜 | 欧美一级专区免费大片| 精品黑人一区二区三区| 欧美在线导航| 国产精品自拍露脸视频| 好久久免费视频高清| 四虎永久免费网站| yjizz国产在线视频网| 看av免费毛片手机播放| 精品成人免费自拍视频| 国产毛片片精品天天看视频| 精品国产网| 最新国产麻豆aⅴ精品无| 亚洲成人精品久久| 欧美成人h精品网站| 无码专区国产精品第一页| 亚洲成人手机在线| 国产自在线拍| 久久网综合| 欧美高清日韩| 欧美激情,国产精品| 狼友视频一区二区三区| 丁香婷婷久久| 国产情侣一区二区三区| 亚洲乱伦视频| 一区二区三区成人| 亚洲精品桃花岛av在线| 一本大道香蕉中文日本不卡高清二区| 国产农村妇女精品一二区| 专干老肥熟女视频网站| 久久成人免费| 国产人人干| 亚洲精品无码抽插日韩| 无码中文字幕乱码免费2| 国产女人水多毛片18| 视频一区亚洲| 制服丝袜国产精品| 青青青伊人色综合久久| 妇女自拍偷自拍亚洲精品| 日本精品视频一区二区| 2048国产精品原创综合在线| 国产麻豆91网在线看| 亚洲国产91人成在线| 国产无码高清视频不卡| 青草视频在线观看国产| 伊人久久福利中文字幕| 成年人久久黄色网站| 婷婷亚洲最大| 国产毛片久久国产| 国产综合精品一区二区| 99手机在线视频| 第一页亚洲| 97在线国产视频| 亚洲91在线精品| 亚洲人成色在线观看| 丁香五月亚洲综合在线| 欧美高清国产| 久久熟女AV| 午夜免费小视频| 亚洲欧美人成电影在线观看| 国产男人天堂| 婷婷午夜天| www.91在线播放| 久久男人视频| 国产成人精品高清不卡在线| 欧美成人日韩| 国产成人91精品免费网址在线 | 免费jizz在线播放|