• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      淺議OpenGL中三維物體的顯示過程

      2018-02-18 20:26:20李文高
      信息記錄材料 2018年2期
      關(guān)鍵詞:視景保山視點(diǎn)

      楊 薇,李文高

      (保山學(xué)院 信息學(xué)院 云南 保山 678000)

      淺議OpenGL中三維物體的顯示過程

      楊 薇,李文高

      (保山學(xué)院 信息學(xué)院 云南 保山 678000)

      在OpenGL中顯示二維物體簡單,但要顯示三維物體具有一定的難度,主要考慮視點(diǎn)、投影等問題,不同的參數(shù)投影出的三維物體是不一樣的,本文從三維物體的建模、觀察變換、投影變換等角度來詳細(xì)說明三維物體的顯示過程。

      透視投影;正視投影;視點(diǎn)變換

      1 引言

      生活的大自然中,我們看到的物體都是三維物體,但要將這些景物數(shù)字化傳到電腦上顯示,那么一切三維景物都是以二維平面圖像的形式顯示,在具體的顯示效果中,我們又要求物體能夠具備三維的視覺特性,因此在顯示三維物體時(shí),其過程是復(fù)雜的。OpenGL是目前圖形開發(fā)的標(biāo)準(zhǔn),它的性能表現(xiàn)異常優(yōu)越,尤其在實(shí)現(xiàn)三維渲染、三維場景等方面有著非常逼真的效果。

      要利用OpenGL來顯示三維物體,可大體分為以下幾個(gè)過程:

      2 首先必須對(duì)三維物體進(jìn)行建模

      在顯示三維圖形之前,要對(duì)三維場景建模,并對(duì)場景中的實(shí)物建立三維景物模型。如果我們想在OpenGL中完成基本的三維圖形基礎(chǔ)模型建立并不困難,強(qiáng)大的OpenGL軟件包中包含了大量的基礎(chǔ)圖元,除此以外輔助庫中增加了很多描述三維圖像人函數(shù)及圖元。這些函數(shù)為我們提供了基礎(chǔ)圖形的模型。因此我們現(xiàn)在來繪制基本的三維圖形就很容易,只需要掌握基礎(chǔ)的三維圖形圖元函數(shù),例如繪制球體可用glutWireSphere函數(shù)來完成,繪制圓錐體可以函數(shù)glutWireCone來完成,繪制8面體可用glutWireOctahedron函數(shù)來完成。

      3 將建模三維物體轉(zhuǎn)換成世界坐標(biāo)系中的三維物體

      隨著計(jì)算機(jī)圖形學(xué)的發(fā)展各種顯示三維圖像的技術(shù)不斷涌出,利用當(dāng)前的三維技術(shù),我們可以將大自然的景物再現(xiàn),在實(shí)現(xiàn)過程中主要利用三維形體來表示物體信息。具體的實(shí)現(xiàn)過程,我們通常用可視化技術(shù)來完成,設(shè)計(jì)師們可以在設(shè)計(jì)三維圖像時(shí)突破傳統(tǒng)思維盡情發(fā)揮自己的想象設(shè)計(jì)出更出眾的作品。機(jī)械工程師們可以利用三維技術(shù)直接設(shè)計(jì)三維機(jī)械零部件,不必在二維技術(shù)中糾結(jié)如何展現(xiàn)三維的特性。醫(yī)生利用三維彩超直接生存三維直觀的掃描圖像,這樣更精確的分析出病人的病灶。軍事指揮員則可以利用三維軟件生存各種復(fù)雜的三維實(shí)戰(zhàn)地圖,并在模擬的地圖中完成各種三維飛機(jī)、導(dǎo)彈、軍艦等指揮,并最終分析得出最佳作戰(zhàn)方案。

      我們生活的大自然是一個(gè)三維的物體世界,為了能夠盡量準(zhǔn)確逼真的將大自然還原到電腦中,我們需要一個(gè)世界空間,該世界空間就是所有物體所在的三維空間, 在該空間中定義的坐標(biāo)系稱為世界坐標(biāo)系,物體在三維空間中的運(yùn)動(dòng)及形變的過程稱為世界變換。世界坐標(biāo)系是物體的全局坐標(biāo)系,各個(gè)物體的模型統(tǒng)一在這一坐標(biāo)系下,便于表達(dá)多個(gè)物體的顯示。

      將模型轉(zhuǎn)換成三維世界中的物體,就需要進(jìn)行模型變換。所謂 “模型變換”,指的是從模型坐標(biāo)系到世界坐標(biāo)系的轉(zhuǎn)換。

      4 觀察變換

      真實(shí)世界里所有物體都是三維的,我們要想將世界坐標(biāo)系中的三維物體轉(zhuǎn)換到二維平面上,需要經(jīng)過觀察變換來完成。

      要獲得三維世界坐標(biāo)系場景的顯示,必須先建立觀察用的坐標(biāo)系。然后將對(duì)象描述轉(zhuǎn)換到觀察坐標(biāo)系中來。這一過程我們通常稱為視點(diǎn)變換。為了描述視點(diǎn)變換,我們引入了一個(gè)概念即照相機(jī),在常規(guī)拍照時(shí),我們常常選擇好景點(diǎn)后開始支好三腳架,并將照相機(jī)放在三腳架上面,此時(shí)將照相機(jī)對(duì)準(zhǔn)三維景物。通過不斷的調(diào)節(jié)視點(diǎn),將景物最好的呈現(xiàn)在相機(jī)上,該過程叫視點(diǎn)變換。默認(rèn)情況下,視點(diǎn)位置即相機(jī)所在位置為世界坐標(biāo)中的原點(diǎn),并且規(guī)定反Z軸為相機(jī)的初始方向,在這種情況剛好,剛好相機(jī)與物體是重疊的。

      函數(shù)gluLookAt是OpenGL實(shí)用庫中提供的視點(diǎn)變換函數(shù),此函數(shù)共有三個(gè)變量,每個(gè)變量表示視點(diǎn)的位置、相機(jī)瞄準(zhǔn)方向的參考點(diǎn)以及相機(jī)的向上方向。通過調(diào)用這個(gè)函數(shù)之后,就設(shè)定好了視點(diǎn)的位置了。

      5 投影變換

      在相機(jī)和物體都放好后,我們要不斷的調(diào)整相機(jī)焦距及相機(jī)鏡頭位置,使景物以最美最恰當(dāng)?shù)慕嵌瘸尸F(xiàn)的相機(jī)內(nèi)。同樣,在OpenGL中為了讓三維物體以最真實(shí)的樣子投影在二維坐標(biāo)中,就需要投影變換。利用投影降低維數(shù)的方式,我們能夠讓物體以合適的位置、方向以及大小來顯示出來。投影變換的最終目的就是定義一個(gè)視景體,將所需要的景物框在該體內(nèi),視景體外的多余景物利用相關(guān)算法裁掉。投影包括透視投影和正視投影兩種。

      (1)透視投影

      透視投影是一種最常用的投影方式,該方式來自于我們的生活習(xí)慣及視覺常識(shí),在視點(diǎn)附近的景物大,隨著與視點(diǎn)的距離增加物體越來越小。該視景體猶如一個(gè)頂部和底部都被進(jìn)行切割過的棱椎。在動(dòng)畫設(shè)計(jì)、視覺仿真以及其它許多需要反映真實(shí)性物體時(shí)常用到透視投影。

      在OpenGL中,透視投影主要通過兩個(gè)投影函數(shù)來完成,分別是glFrustum函數(shù)和gluPerspective函數(shù)。

      函數(shù)glFrustum的作用是創(chuàng)建一個(gè)透視視景體。它的操作原理是先創(chuàng)建一個(gè)用與透視投影的矩陣,然后用這個(gè)矩陣乘以三維物體的各個(gè)頂點(diǎn)坐標(biāo)組成的矩陣。這個(gè)函數(shù)的參數(shù)只定義近裁剪平面的左下角點(diǎn)和右上角點(diǎn)的三維空間坐標(biāo),即(left,bottom,-near)和(right,top,-near);最后一個(gè)參數(shù)far是遠(yuǎn)裁剪平面的Z負(fù)值,其左下角點(diǎn)和右上角點(diǎn)空間坐標(biāo)由函數(shù)根據(jù)透視投影原理自動(dòng)生成。near和far表示離視點(diǎn)的遠(yuǎn)近,它們總為正值。

      gluPerspective是一個(gè)透視函數(shù),其作用最終也是創(chuàng)建一個(gè)對(duì)稱透視視景體。在使用該函數(shù)時(shí)應(yīng)注意,通過設(shè)定不同的參數(shù),我們可以定義視野在各個(gè)平面的角度、范圍值、投影平面寬度與高度的比率、遠(yuǎn)近裁剪面沿Z負(fù)軸到視點(diǎn)的距離。

      (2).正射投影

      該投影又稱為平行投影。正射投影的原理是創(chuàng)建一個(gè)矩形平行管道視景體。正射投影的最大特點(diǎn)是物體的大小尺寸不依賴于物體與相機(jī)的距離。因此這種投影通常用在一些物體尺寸及角度投影后沒有變化的行業(yè),目的是讓施工或者制造時(shí)保持物體比例大小,如建筑藍(lán)圖繪制和計(jì)算機(jī)輔助設(shè)計(jì)等方面。

      在OpenGL中使用正射投影主要通過 glOrtho和gluOrtho2D兩個(gè)函數(shù)來實(shí)現(xiàn)。

      6 視口變換

      生活中當(dāng)我們沖洗照片時(shí)需要指定照片的尺寸大小,這相當(dāng)于OpenGL中的視口變換。視口變換就是在電腦屏幕上指定二維圖像的大小,通過變換,我們可以指定景物在屏幕中的一個(gè)矩形區(qū)域,該區(qū)域規(guī)定了位置范圍,尺寸大小。

      在計(jì)算機(jī)圖形學(xué)中,視口變換就是將物體應(yīng)用一系列的變換算法顯示于指定窗口的矩形區(qū)域內(nèi),這些算法包括幾何變換、投影變換和裁剪變換。在OpenGL中通常我們應(yīng)用glViewport(GLint x,GLint y,GLsizei width, GLsizei height);這個(gè)函數(shù)定義一個(gè)視口,該函數(shù)我們稱之為視口函數(shù)。視口在屏幕中的初始位置由參數(shù)XY來指定,視口的寬度和高度由width和height來指定。在使用該函數(shù)時(shí)如果不指定參數(shù),系統(tǒng)會(huì)給我們一個(gè)默認(rèn)值,該默認(rèn)值為(0,0,winWidth,winHeight)。所有這些值都是以象素為單位,全為整型數(shù)。

      經(jīng)過以上過程,一個(gè)三維圖形就可以完整的顯示在我們的屏幕內(nèi)。

      [1]蔡士杰,楊若瑜.計(jì)算機(jī)圖形學(xué)第四版.電子工業(yè)出版社,2016,2.

      TP391.41 【文獻(xiàn)標(biāo)識(shí)碼】A 【文章編號(hào)】1009-5624(2018)02-0147-03

      楊薇(1983-),女,云南保山人,保山學(xué)院計(jì)算機(jī)科學(xué)系講師,研究方向?yàn)槎嗝襟w及圖形圖像應(yīng)用

      猜你喜歡
      視景保山視點(diǎn)
      走過萬水千山 最愛一座保山
      vega及其在戰(zhàn)場環(huán)境視景仿真系統(tǒng)中的應(yīng)用
      電子測試(2018年4期)2018-05-09 07:28:19
      視點(diǎn)
      河南電力(2016年5期)2016-02-06 02:11:24
      PTN技術(shù)在保山廣電網(wǎng)絡(luò)的具體應(yīng)用
      讓你每天一元錢,物超所值——《今日視點(diǎn)—2014精萃》序
      新聞前哨(2015年2期)2015-03-11 19:29:22
      兩會(huì)視點(diǎn)
      中國水利(2015年5期)2015-02-28 15:12:40
      全回轉(zhuǎn)拖輪運(yùn)動(dòng)建模與視景仿真
      漫畫10幅
      基于Vortex與Vega Prime的車輛模擬器動(dòng)力學(xué)與視景仿真
      基于STK的衛(wèi)星實(shí)時(shí)視景仿真系統(tǒng)設(shè)計(jì)
      海南省| 佳木斯市| 陈巴尔虎旗| 湖口县| 四平市| 都江堰市| 公安县| 昔阳县| 屏山县| 宜昌市| 唐山市| 河源市| 乌拉特中旗| 漳平市| 麻栗坡县| 伊春市| 资溪县| 大关县| 茂名市| 沙雅县| 青浦区| 梧州市| 临汾市| 平阳县| 新泰市| 扶绥县| 甘洛县| 澄江县| 曲麻莱县| 武邑县| 密山市| 西吉县| 沙田区| 印江| 平利县| 山丹县| 清镇市| 蛟河市| 玉环县| 昭苏县| 剑川县|