亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2018-02-18 20:26:20李文高
        信息記錄材料 2018年2期

        楊 薇,李文高

        (保山學(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來顯示三維物體,可大體分為以下幾個過程:

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

        在顯示三維圖形之前,要對三維場景建模,并對場景中的實(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)方案。

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

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

        4 觀察變換

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

        要獲得三維世界坐標(biāo)系場景的顯示,必須先建立觀察用的坐標(biāo)系。然后將對象描述轉(zhuǎn)換到觀察坐標(biāo)系中來。這一過程我們通常稱為視點(diǎn)變換。為了描述視點(diǎn)變換,我們引入了一個概念即照相機(jī),在常規(guī)拍照時(shí),我們常常選擇好景點(diǎn)后開始支好三腳架,并將照相機(jī)放在三腳架上面,此時(shí)將照相機(jī)對準(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ù)共有三個變量,每個變量表示視點(diǎn)的位置、相機(jī)瞄準(zhǔn)方向的參考點(diǎn)以及相機(jī)的向上方向。通過調(diào)用這個函數(shù)之后,就設(shè)定好了視點(diǎn)的位置了。

        5 投影變換

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

        (1)透視投影

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

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

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

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

        (2).正射投影

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

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

        6 視口變換

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

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

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

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

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

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

        亚洲最新版无码AV| 人妻精品久久久久中文字幕69| 天堂а√在线最新版中文在线| 日本www一道久久久免费榴莲| 亚洲AV无码日韩综合欧亚| 一个人午夜观看在线中文字幕| 狠狠摸狠狠澡| 精品国精品无码自拍自在线| 日韩成人精品日本亚洲| 亚洲av天堂一区二区| 中文在线中文a| 精品福利视频一区二区三区| 国产成年无码aⅴ片在线观看| 国产精品麻豆一区二区三区| 色欲av伊人久久大香线蕉影院| 国产又色又爽无遮挡免费| 国产片三级视频播放| 综合久久一区二区三区| 2018天天躁夜夜躁狠狠躁| 午夜男女爽爽爽在线视频| 真人在线射美女视频在线观看| 久久婷婷综合色一区二区| 日本一二三区视频在线| 欧美日韩精品一区二区在线视频 | 亚洲成人福利在线视频| 毛片无码国产| 国产色在线 | 亚洲| 国产在线手机视频| 中文字幕国产精品专区| 国产亚洲aⅴ在线电影| 越猛烈欧美xx00动态图| 国产福利97精品一区二区| 粉嫩的极品女神尤物在线| 成年女人粗暴毛片免费观看| 国产婷婷丁香久久综合| 亚洲精品女优中文字幕| 国产精品国产三级国产av剧情| 日日摸夜夜添无码无码av| 久久免费区一区二区三波多野在| 亚洲无码性爱视频在线观看| 91久久精品一区二区|