• 
    

    
    

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

      紋理映射在物體重建中的應用

      2015-03-03 05:30:06杜麗美
      關鍵詞:紋理物體定義

      杜麗美

      (長治學院 計算機系,山西 長治 046011)

      紋理映射在物體重建中的應用

      杜麗美

      (長治學院 計算機系,山西 長治 046011)

      基于給定的三維物體模型,研究如何使用OpenGL中的紋理映射函數(shù),使得將紋理圖像完美地映射到三維物體表面,進而模擬出真實物體的面貌.此過程的核心問題是研究OpenGL中的紋理定義函數(shù),紋理控制函數(shù),紋理坐標函數(shù)等的使用.

      紋理定義;紋理控制;紋理坐標

      0 引言

      在當今的網(wǎng)絡時代下,大家可以借助計算機來滿足自己的各種需求,比如在工作、生活、科學研究上都要用到計算機,同樣計算機因其自身功能的強大,也可以為大家解決各種難題.

      三維重建是目前研究的眾多熱點問題中的一個,比如,在工業(yè)生產(chǎn)中,可以先將設想中的某個部件在計算機上重建出來,然后對此虛擬部件進行各種參數(shù)的修改,最終得到該虛擬部件的各項參數(shù)的準確數(shù)據(jù),進而投入生產(chǎn).在醫(yī)學上三維重建技術也有相當重要的應用.除此之外,大多數(shù)人對計算機視覺的要求越來越強烈,如何將現(xiàn)實生活中的物體形象地表現(xiàn)在計算機屏幕上,這是當下的熱門問題,此過程可以借助OpenGL函數(shù)中的光照、材質、霧化等效果函數(shù)來渲染出真實的環(huán)境效果,但是真實物體表面的顏色往往是千變萬化非常復雜的,單用某些顏色函數(shù)往往是不夠的,基于這種情況,OpenGL函數(shù)中提供了紋理函數(shù),借助紋理函數(shù)就可以簡單、方便地在計算機屏幕上形象地模擬出真實的物體和真實的環(huán)境效果了[1,2].

      1 紋理映射簡介及原理

      紋理映射就是將現(xiàn)有的(或自己定義的)紋理圖像映射到指定的區(qū)域上,使該區(qū)域具有與紋理圖像一樣的外貌.通俗來說,就是將現(xiàn)有的一幅圖粘貼到預先構造的三維物體表面上,進而來增強三維物體的真實感.

      在紋理映射中,所使用的紋理圖像可以是自己定義的一副一維或二維圖像,也可以是現(xiàn)有的一副一維或二維圖像.在紋理圖像粘貼到三維物體表面上時,所采用的映射方式最簡單的是坐標對坐標的方式,但是在映射的實際過程中,由于三維物體表面可能是凹凸不平的,或者紋理圖像和三維物體表面的大小是不一樣的,因此在映射過程中就不能只是簡單的映射形式,而是必須根據(jù)實際需要將紋理圖進行適當?shù)睦臁嚎s等變換,這樣映射后的結果才具有真實感[3-5].下面將要介紹的紋理控制函數(shù)就可以解決此問題.

      圖1中的兩幅圖就是進行紋理映射后最終的效果,1(a)中分別對地面和左右的墻面進行紋理映射,而且為了增強真實感,還用了光照和霧化函數(shù)來渲染效果.圖1(b).

      為將自己定義的簡單的紋理圖像映射到曲面上的效果.由圖1中的兩種結果來看,紋理映射不僅適用于平面也可以應用到曲面上.

      圖1 紋理映射效果

      2 紋理映射函數(shù)

      進行紋理映射的一般過程是:首先最重要的是必須先定義一幅紋理圖像,然后選擇紋理控制函數(shù)說明映射方式,其次選擇映射方式(即紋理圖像上的顏色是否要和三維物體表面上的顏色進行混合),最后使用紋理坐標函數(shù)來完成映射.這幾個過程所對的函數(shù)的具體用法將在下文以下幾個小節(jié)中詳細介紹.

      2.1 紋理函數(shù)

      一般來說紋理有一維和二維之分,但是通常用到的是二維紋理,因此這里只介紹二維紋理所對的函數(shù)[6]:

      glTexImage2D(GLenum target, Glint level, Glint components, GLsizei width,

      GLsizei height, Glint border, GLenum format, GLenum type, const GLvoid *pixels)

      因為是二維紋理,所以此函數(shù)中的第一個參數(shù)取常數(shù)GL_TEXTURE_2D表明定義的二維紋理;第二個參數(shù)level表示紋理圖像的分辨率級數(shù),若只有一種分辨率則為0;第三個參數(shù)components的值一般取3,表示此紋理圖像是由R,G,B三個分量混合而成;第四和第五個參數(shù)width和height是定義此二維紋理圖像的大小(長和寬);如果此紋理圖像有邊界則由第六個參數(shù)border來定義,若沒有邊界,則此參數(shù)取0;第七個參數(shù)format一般取GL_RGB表示紋理映射的格式;第八個參數(shù)type通常取GL_UNSIGED_BYTE表示紋理映射的數(shù)據(jù)類型;第九個參數(shù)*pixels指向具體的紋理圖像數(shù)據(jù).

      2.2 紋理控制函數(shù)

      一張紋理圖像一般是規(guī)則的長方形或正方形區(qū)域,若將這張紋理圖像映射到一個凹凸不平的三維物體上時,可能此紋理圖像要隨著三維物體表面的凹凸形狀來變化,或者紋理圖像尺寸小于或大于三維物體表面的尺寸時,還要將紋理圖像進行拉伸或壓縮變換,這些情況就要借助本小節(jié)的紋理控制函數(shù)來實現(xiàn),所對函數(shù)如下[6]:

      glTexParameteri(GLenum target, GLenum pname, TYPE param)

      該函數(shù)中各參數(shù)的意義及取值為:第一個參數(shù)為常數(shù)GL_TEXTURE_1D或GL_TEXTURE_2D,后兩個參數(shù)的取值見表1所示.

      表1 各參數(shù)的取值

      參數(shù)GL_TEXTURE_MAG_FILTER和GL_TEXTURE_MIN_FILTER表示對紋理圖像進行放大和縮小變換,對應的值GL_NEAREST和GL_LINEAR表示如何進行放大和縮小,其中GL_NEAREST表示紋理映射圖像以中心位置為支點來進行放大和縮小,GL_LINEAR表示使用線性插值的方法對紋理圖像進行放大和縮?。畢?shù)GL_TEXTURE_WRAP_S和GL_TEXTURE_WRAP_T表示紋理在X方向和Y方向上的延展,取值GL_CLAMP表示只延展紋理圖像的邊界像素值,GL_REPEAT表示重復延展整個紋理圖像.

      2.3 映射方式

      一般情況下,三維物體通過設置光照表面會有某種顏色,如果將一張紋理映射圖像直接映射到此三維物體上,要考慮的問題是紋理圖像上的顏色是否要和此物體表面上的顏色進行混合,此過程所涉及的函數(shù)為[6]:

      glTexEnvf(GLenum target,GLenum pname,TYPE param)

      此函數(shù)的第一個參數(shù)target的值取GL_TEXTURE_ENV,第二個參數(shù)pname一般取GL-TEXTURE-ENV-MODE,參數(shù)pname所對的第三個參數(shù)param一般取GL-DECAL、GL-MODULATE或GL-BLEND表明怎樣進行混合,GL-DECAL模式下所有的效果都將取消,物體表面只顯示紋理顏色;GL-MODULATE模式下會根據(jù)當前的紋理顏色來調整物體表面的光照和明暗;GL-BLEND模式是將紋理顏色與光照顏色混合.

      2.4 紋理坐標函數(shù)

      紋理坐標函數(shù)為[6]:

      glTexCoord2f(GLfloats,GLfloat t)

      該函數(shù)中第一個參數(shù)s表示X軸方向上的坐標,第二個參數(shù)t表示Y軸方向上的坐標,X、Y軸上的坐標(s,t)表示紋理圖像上的相應位置,比如(0,0)表示紋理圖像上的左上點位置,(1,1)表示紋理圖像上的右下點位置,(0,1)表示紋理圖像上的左邊界的中間位置等等.當把紋理圖像粘貼到三維物體上時,要保證紋理圖像上的點正確地映射到三維物體的對應位置上,如果映射錯誤,則會產(chǎn)生紋理圖像顛倒或變形的可能.一般在進行紋理映射時,紋理坐標和三維物體的對應坐標要配對出現(xiàn).

      2.5 其他一些函數(shù)

      以上是進行紋理映射過程中必不可少的四個步驟,當然在進行紋理映射的過程中可能還要用到其他一些函數(shù),本小節(jié)再簡要地介紹兩個函數(shù).

      glGenTexture(GLsizein,GLuint*textures)

      該函數(shù)中的第一個參數(shù)n表示將要使用的紋理圖像的數(shù)量,第二個參數(shù)*textures表示指向這n個紋理圖像的指針,初始狀態(tài)下指向第一幅紋理圖像.通俗地說此函數(shù)表示生成n個紋理圖像并使用指針指向這n個紋理.

      glBindTexture(GLenum target,GLuint texture)

      該函數(shù)中的參數(shù)target同樣可以取GL_TEXTURE_1D或GL_TEXTURE_2D;參數(shù)texture表示選取特定的紋理,它的選取數(shù)量取決于函數(shù)glGenTexture中定義的紋理圖像的數(shù)量,通常函數(shù)glGenTexture與glBindTexture配合使用.

      3 試驗結果

      借助以上函數(shù),可以對不同的三維物體進行紋理映射,圖2中的(a)(b)為將自定義的紋理圖像映射到相應物體上的結果,其中圖2(a)為將紋理圖像映射到二維空間中的矩形物體上的結果,圖2(b)為將同樣的紋理圖像映射到三維空間中的矩形物體上的結果;圖2(c)為將現(xiàn)有的一副紋理圖片分別映射到三維立方體的六個面上的結果.

      圖2 紋理映射結果

      4 小結

      本文主要介紹了OpenGL中的有關紋理函數(shù)的使用方法,其中紋理定義函數(shù)、紋理控制函數(shù)、紋理坐標函數(shù)是重點,它們決定著整個紋理映射工作的成敗,通過實驗結果分析發(fā)現(xiàn)紋理映射可以在計算機中完美地重現(xiàn)真實物體的面貌,而且操作簡單,容易上手,因此紋理映射過程是進行三維物體重建過程中的重要階段.

      [1] 薛 安,馬靄乃,李天宏.基于OpenGL實現(xiàn)真實感地形表現(xiàn)的研究[J].中國圖像圖形學報,2001,6(8):800-805

      [2] 范 波,吳慧中.多面體表面紋理映射方法的研究[J].計算機研究與發(fā)展,1999,36(04):446-450

      [3] 郭 玲,王建宇等.真實感3D重建中的紋理映射技術[J].中國圖像圖形學報,2007,12(10):1881-1884

      [4] 段曉娟.基于OpenGL的紋理映射技術[J].長沙大學學報,2000,14(4):40-41

      [5] 禹仁貴,任 磊,王 寧.基于OpenGL的紋理映射的實現(xiàn)與應用[J].西南民族大學學報(自然科學版),2008,34(6):1261-1263

      [6] 廖朵朵.OpenGL變換、光照、紋理、動畫及特殊效果[J].微電腦世界,1996(11):151-153

      The Applications in the Reconstruction of Texture Mapping

      DU Limei

      (Department of Computer Science Changzhi University, Changzhi 046011, China)

      Given three-dimensional object model, Research on how to use the OpenGL texture mapping function, So that the texture image is mapped to the three-dimensional surface perfectly, And then simulate the appearance of real objects.The problem with this process is mainly research the Texture-defined functions, Texture-controlled functions, Texture-coordinated functions which are in the OpenGL.

      texture-defined function;texture-controlled function;texture-coordinated function

      2015-10-21 基金項目:長治學院校級科研課題(201419).

      杜麗美(1983-),女,山西大同人,碩士,長治學院計算機系講師,主要從事計算機圖形學、圖像處理等研究.

      1672-2027(2015)04-0054-04

      TP391.41

      A

      猜你喜歡
      紋理物體定義
      基于BM3D的復雜紋理區(qū)域圖像去噪
      軟件(2020年3期)2020-04-20 01:45:18
      深刻理解物體的平衡
      使用紋理疊加添加藝術畫特效
      我們是怎樣看到物體的
      TEXTURE ON TEXTURE質地上的紋理
      Coco薇(2017年8期)2017-08-03 15:23:38
      消除凹凸紋理有妙招!
      Coco薇(2015年5期)2016-03-29 23:22:15
      成功的定義
      山東青年(2016年1期)2016-02-28 14:25:25
      為什么同一物體在世界各地重量不一樣?
      修辭學的重大定義
      當代修辭學(2014年3期)2014-01-21 02:30:44
      懸浮的雞蛋
      思茅市| 孝义市| 胶州市| 新余市| 黔东| 五寨县| 宁明县| 怀来县| 长顺县| 鄂尔多斯市| 平乐县| 嵊泗县| 伊金霍洛旗| 滦南县| 靖江市| 旺苍县| 忻州市| 商河县| 临朐县| 筠连县| 米泉市| 廊坊市| 张家港市| 荥阳市| 广河县| 台北县| 陇南市| 比如县| 楚雄市| 德江县| 沅江市| 凤山县| 台江县| 开阳县| 台北县| 鹤壁市| 武冈市| 会东县| 耒阳市| 孟津县| 武宁县|