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

        ?

        基于Python語言的圖形二維紋理映射實驗設(shè)計

        2023-06-07 19:13:35李津潘海梅
        科技風(fēng) 2023年15期

        李津 潘海梅

        摘要:計算機圖形學(xué)作為一門本科專業(yè)選修課程,實驗課程以C語言為主。隨著計算機編程語言的發(fā)展和普及,Python語言已成為重要的科研和開發(fā)工具。為提高學(xué)生對Python語言運用的能力,設(shè)計一個基于Python語言的計算機圖形學(xué)實驗:二維紋理映射原理探究實驗。實驗的目的是將紋理圖案疊加到圖形的表面,增強圖形的細節(jié)信息。首先,將紋理圖案從二維空間映射到三維景物空間。在此基礎(chǔ)上,將紋理信息與物體表面在三維空間進行插值映射。最后,將映射后的圖形映射回二維屏幕坐標系中。本文將介紹算法原理并設(shè)計對應(yīng)的實驗?;赑ython語言的圖形紋理映射實驗可以幫助學(xué)生深刻理解并掌握計算機圖形學(xué)中紋理映射的相關(guān)理論知識,強化學(xué)生運用Python語言解決實際問題的能力,從而增強學(xué)生的實踐能力、創(chuàng)新能力以及探索能力。

        關(guān)鍵詞:計算機圖形學(xué);二維紋理映射;Catmull算法;Blinn算法;Python語言

        計算機圖形學(xué)是計算機科學(xué)與技術(shù)、自動化、軟件工程等專業(yè)中重要的專業(yè)選修課程,是目前計算機學(xué)科中最活躍的分支之一[1]。計算機圖形學(xué)不僅是計算機動畫等應(yīng)用的理論基礎(chǔ),并服務(wù)于計算機輔助設(shè)計與制造、虛擬現(xiàn)實、增強現(xiàn)實等一系列產(chǎn)業(yè),并提供核心技術(shù)和算法支持[2]。計算機圖形學(xué)課程涉及大量數(shù)學(xué)知識,同時需要扎實的編程基礎(chǔ),學(xué)習(xí)計算機圖形學(xué)是對基礎(chǔ)課程學(xué)習(xí)的綜合運用。

        隨著計算機技術(shù)的普及,越來越多非計算機專業(yè)的學(xué)生也需要使用編程語言來進行科學(xué)技術(shù)、統(tǒng)計和繪圖等。Python作為極易入門的編程語言,具有簡單易學(xué)、免費開源、可移植性強等優(yōu)點,非常適合學(xué)生在本科階段學(xué)習(xí)并熟練運用。

        為了幫助學(xué)生深入理解計算機圖形學(xué)中圖形紋理映射的相關(guān)知識,做到理論學(xué)習(xí)與實踐相結(jié)合,提高學(xué)生對Python語言的實踐能力,并進一步提高學(xué)生的學(xué)習(xí)興趣和創(chuàng)新能力,本文設(shè)計基于Python語言的二維圖形紋理映射實驗。該實驗適用于本科計算機圖形學(xué)課程中圖形紋理映射章節(jié)的實驗教學(xué)。

        1紋理映射相關(guān)知識元

        在進行圖形紋理映射實驗之前,需要深入了解中斷相關(guān)的知識元,本文實驗涉及二維圖形紋理映射,本節(jié)分別對這相關(guān)的知識元進行了簡述。

        1.1紋理映射

        紋理映射也稱紋理貼圖,它試圖通過一種合適的算法為待映射的模型表面上的每個三維頂點分配一個顏色值,從而達到將空間紋理圖案疊加到圖形的表面,增強圖形的細節(jié)信息的效果。

        1.2?紋理映射基本算法

        紋理映射算法的核心是確定屏幕像素中可見表面覆蓋的紋理區(qū)域,基于已知物體表面參數(shù)信息,在不規(guī)則或者曲面的物體表面,實現(xiàn)將空間中的紋理渲染到物體表面的過程。常見的紋理映射算法包括Catmull算法[3]和?Blinn算法[4]。

        1.2.1?Catmull算法

        Catmull算法一般采用雙線插值的方法,該算法通過遞歸分割對曲面進行連續(xù)分割,直到每一個子曲面只包含一個像素中心。然后將子曲面中心的參數(shù)值映射到紋理空間中,使各像素可見的子曲面對應(yīng)于紋理空間中的指定區(qū)域。最后取紋理空間中交點處的紋理圖像值確定的像素平均紋理顏色作為該圖像中心可見點的紋理屬性[6]。原理如圖1所示:

        圖1??Catmull算法的基本過程

        在實際處理過程中,Catmull算法中還考慮了多個子曲面對應(yīng)的平均紋理對像素的共同影響。進而解決細分生成的子曲面可能無法準確覆蓋在屏幕上所有的像素區(qū)域和多個子曲面也可能包含在一個像素中的問題。在這里,我們假設(shè)像素e所對應(yīng)的景物表面上的可見區(qū)域中包含有n個子曲面,則像素e的光亮度可通過計算和像素e相關(guān)的各個子曲面對其光亮度的貢獻值得出,計算公式如下:

        其中,為n個子曲面的平均光亮度,為各個子曲面在像素e中的投影面積(Se)與整個像素的面積(S1+S2+…Sn)之比。

        雖然使用Catmull方法省去了紋理空間和物體之間的逆變換過程,但由于算法在計算各子曲面片在每一個像素內(nèi)的可見區(qū)域及投影面積采用的是解析方法,因此會占用大量的存儲空間,計算復(fù)雜,時間耗費大。

        1.2.2?Blinn算法

        Blinn算法可以將像素表示的區(qū)域投影在景物表面上,然后利用映射到紋理空間的曲面得到相應(yīng)的紋理屬性。

        Blinn的原始凹凸貼圖算法在紋理的每個紋理元素上存儲了兩個用來描述曲面上各點朝向的有符號的值bu和bv,這兩個值對應(yīng)的是沿u和v圖像軸改變法線的量。

        Blinn方法的提出有效克服了Catmull方法的缺點,因此,一般的紋理映射過程中,為達到更令人滿意的結(jié)果,我們可以根據(jù)實際使用的需求將Blinn算法與Catmull算法結(jié)合使用。

        1.3?兩步法紋理映射技術(shù)

        紋理映射技術(shù)主要是針對由多邊形組成的不規(guī)則物體表面紋理映射處理的技術(shù),此次實驗采用兩步法紋理映射法實現(xiàn)二維紋理映射。

        兩步紋理映射技術(shù)的核心是借助一個中間映射媒介來完成從紋理空間到景物空間的表面紋理映射處理工作,其基本過程可用下面兩個步驟來完成:

        (1)將二維紋理空間映射到某個三維中間媒介表面:

        (2)將這個三維中間媒介表面映射到目標景物表面:

        在這里,將O映射和S映射的復(fù)合得到紋理空間到景物空間的紋理映射可表示為:

        根據(jù)上述過程,考慮例如平面,柱面,立方體以及球面等常見的中介幾何,可建立四種中介表面到景物表面的映射關(guān)系。

        2基于Python的紋理映射綜合實驗設(shè)計

        2.1實驗?zāi)康?/p>

        (1)通過基于python語言的二維紋理映射實驗幫助學(xué)生掌握二維紋理映射原理,以及二維紋理映射實現(xiàn)過程,深入理解二維紋理映射相關(guān)知識元。

        (2)通過實驗加深對紋理映射技術(shù)和紋理映射算法的理解,掌握二維紋理映射的程序編寫過程。

        2.2實驗環(huán)境準備

        二維紋理映射實驗基于python+OpenGL的環(huán)境。先安裝anacode,pycharm等各類python編譯平臺,再配置pyOpenGL庫。該實驗環(huán)境具體搭建步驟可參考win10+Anaconda3+python3.6+openGL+pyCharm安裝和配置。

        2.3實驗內(nèi)容與實驗步驟

        2.3.1實驗內(nèi)容

        (1)?指定圖像紋理坐標,用索引指定頂點屬性。

        (2)?指定解析方式并啟動頂點屬性。

        (3)?設(shè)置紋理對象,包括定義和綁定紋理對象,設(shè)置wrap和filter參數(shù),并加載紋理。

        (4)?著色器中使用紋理對象,在著色器中,對兩個紋理的顏色進行混合。

        2.3.2實驗步驟

        步驟1:指定紋理坐標,包括頂點坐標、頂點位置和頂點顏色的處理。

        步驟2:指定解析方式并啟動頂點屬性。

        (1)創(chuàng)建并綁定VBO和EBO。

        (2)將頂點數(shù)據(jù)傳送到GPU。

        (3)指定解析方式和頂點屬性。

        步驟3:設(shè)置紋理對象。

        (1)創(chuàng)建與綁定紋理對象。

        (2)設(shè)置WRAP參數(shù)。

        (3)設(shè)置Filter參數(shù)。

        (4)加載紋理。

        步驟4:著色器中使用紋理對象,通過著色器完成圖像的渲染將兩個紋理單元混合。

        3二維紋理映射實驗具體過程

        3.1指定紋理坐標

        使用索引指定頂點屬性數(shù)據(jù),屬性數(shù)據(jù)包括頂點位置,頂點顏色和頂點紋理等。

        3.2指定解析方式并啟動頂點屬性

        在指定紋理坐標后,我們還需要指定紋理坐標的解析方式,將頂點屬性綁定到頂點著色器中的屬性變量中。

        3.2.1?創(chuàng)建并綁定VBO和EBO

        通過創(chuàng)建VBO和EBO兩個緩沖對象,分別存儲頂點數(shù)據(jù)和索引數(shù)據(jù)。

        3.2.2?將頂點數(shù)據(jù)傳送到GPU

        在OpenGL程序中指定或者加載的數(shù)據(jù)是存儲在CPU中的,為了加快圖形渲染,我們將頂點屬性數(shù)據(jù)傳送到GPU。

        3.2.3?指定解析方式和頂點屬性

        通過設(shè)置glVertexAttribPointer(index,?size,?type,?normalized,?stride,?pointer)函數(shù)指定解析方式并啟動頂點屬性。

        3.3配置紋理對象

        3.3.1?創(chuàng)建與綁定紋理對象

        由于此次實驗圖像是像素的2D數(shù)組,紋理通過調(diào)用glGenTextures()函數(shù)來生成紋理對象,同時調(diào)用glBindTexture()函數(shù)將其綁定到二維紋理中。

        3.2.2?設(shè)置WRAP參數(shù)

        在繪制操作期間,紋理中的像素將使用紋理坐標來檢索顏色信息。當紋理坐標不在[0,0]到[1,1]范圍時,可通過以下四種選項來控制:

        GL_REPEAT:?形成重復(fù)的模式,忽略坐標整數(shù)部分。

        GL_MIRRORED_REPEAT:紋理重復(fù),當坐標的整數(shù)部分為奇數(shù)時會被鏡像。

        GL_CLAMP_TO_EDGE:坐標夾在0和1。

        GL_CLAMP_TO_BORDER:超出范圍的坐標被賦予指定的邊框顏色。

        3.2.3?設(shè)置Filter參數(shù)

        當使用紋理坐標映射到紋素數(shù)組時,可能會由于紋理坐標與紋素不能完全匹配,使得紋理圖像被拉伸超過原始大小而縮小的情況。此時可通過對紋理坐標進行取整,使用最佳逼近點來獲取紋素值,即最近鄰濾波(GL_NEAREST)。又或者通過每個紋素位置附近一組紋素的加權(quán)平均值來確定最終的紋素值,即線性濾波(GL_LINEAR)。

        3.2.4?加載紋理

        調(diào)用glTexImage2D(GL_TEXTURE_2D,?0,?GL_RGB,?2,?2,?0,?GL_RGB,?GL_FLOAT,?pixels)函數(shù)定義紋理圖像的格式,寬度和高度等信息。

        3.4著色器中使用紋理對象

        紋理對象首先通過頂點著色器傳遞紋理坐標,再使用uniform變量向片元著色器傳遞紋理單元的索引號獲得最終的最終的紋素。對于著色器,采用的是GLSL語言編寫的程序,每一個著色器程序?qū)ο罂梢园鄠€著色器對象,使用著色器需要包含以下3個步驟:

        步驟1:創(chuàng)建和編譯著色器對象。

        步驟2:?創(chuàng)建著色器程序?qū)ο?,鏈接多個著色器對象到著色器程序中。

        步驟3:在繪制場景時啟動著色器程序。

        結(jié)語

        本文根據(jù)計算機圖形學(xué)紋理映射實驗的實踐教學(xué)需求,設(shè)計了基于python語言的二維紋理映射實驗,既可以幫助學(xué)生理解掌握紋理映射知識元,也可以將理論知識對應(yīng)到紋理映射過程實驗中進行深入理解。為了使學(xué)生深刻掌握計算機圖形學(xué)中紋理映射基礎(chǔ)理論與實踐,本文涉及的兩步法紋理映射技術(shù)是紋理映射方法的一種,其核心是通過一個中間媒介完成紋理映射工作,此外,過程性紋理映射技術(shù)也是紋理映射技術(shù)的常用方法之一。學(xué)生通過參與實驗過程及實驗結(jié)果分析,可以加深對二維紋理映射過程的理解,鍛煉學(xué)生的實踐能力以及創(chuàng)新能力。

        參考文獻:

        [1]肖文芳,黃稚霆,歐俊宏,等.基于人工智能的計算機視覺研究領(lǐng)域發(fā)展現(xiàn)狀研究——基于多種可視化工具的比較分析[J].科技創(chuàng)新與應(yīng)用,2022,12(36):27-30.

        [2]宋丹,楊?,李茂林,等.人工智能在學(xué)前教育中的應(yīng)用淺探[J].今日科苑,2019(10):31-42.

        [3]董荻.人工智能與教育的融合——智能機器人在學(xué)前教育領(lǐng)域的應(yīng)用[J].教育教學(xué)論壇,2019(31):1-2.

        [4]徐蒙蒙.?學(xué)前教育與兒童發(fā)展的因果效應(yīng)[D].哈爾濱工業(yè)大學(xué),2021.

        [5]劉玉.兒童原創(chuàng)繪本創(chuàng)作在學(xué)前教育專業(yè)中的意義與應(yīng)用[J].現(xiàn)代職業(yè)教育,2022(37):129-131.

        基金項目:2022年陜西師范大學(xué)校級教改項目:OBE理念下大數(shù)據(jù)技術(shù)和課程思政相融合的教學(xué)改革與實踐;2023年教育部產(chǎn)學(xué)合作協(xié)同育人項目:人工智能專業(yè)的大數(shù)據(jù)技術(shù)教學(xué)實驗實訓(xùn)平臺建設(shè)(220904615273340)

        作者簡介:李津(1991—??),男,漢族,陜西西安人,博士,講師,研究方向:包括多模態(tài)學(xué)習(xí)、數(shù)據(jù)壓縮與檢索、人工智能教育。

        成年女人免费v片| 蜜桃一区二区免费视频观看| 日韩av一区二区无卡| 精品日韩一级免费视频| 97人人超碰国产精品最新| 精品久久久久久久久免费午夜福利| 麻豆久久久国内精品| 国产一品二品三区在线观看| 无套内谢老熟女| 免费看久久妇女高潮a| 人妻av一区二区三区av免费| 久久精品国产亚洲av热东京热| 久久久99精品成人片| 欧洲人妻丰满av无码久久不卡| 韩国一级成a人片在线观看| 国产91精品自拍视频| 国产中文三级全黄| 日本午夜免费福利视频| 夜夜未满十八勿进的爽爽影院| 中文人妻无码一区二区三区信息 | 精品少妇人妻av无码久久| 人妻熟妇乱又伦精品视频app| 偷拍区亚洲区一区二区| 一区二区高清视频免费在线观看| 亚洲sm另类一区二区三区| 国产av无码专区亚洲av手机麻豆| 男女上床视频免费网站| 亚洲综合日韩一二三区| 欧洲多毛裸体xxxxx| 国内揄拍国内精品少妇国语 | 视频一区视频二区亚洲| 国产精品女同久久久久电影院| 久久亚洲中文字幕无码| 97久久成人国产精品免费| 风韵犹存丰满熟妇大屁股啪啪| 欧美精品v国产精品v日韩精品| 国产精品免费久久久久影院| a√无码在线观看| 日本av亚洲中文字幕| 亚洲av无码成人专区片在线观看 | 亚洲精品中文字幕乱码影院|