青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天行健 君子當(dāng)自強(qiáng)而不息

3D圖形數(shù)學(xué)(1)

新建網(wǎng)頁 1

 

圖形管道概述

我們將討論渲染一幅帶有基本光照的單個(gè)圖像的大體過程,這里不考慮動畫和全局光照,如陰影和輻射度。

此外,注意這里只從概念上講解通過圖形管道的數(shù)據(jù)流,其順序并不是固定的。實(shí)踐中,我們也許會為了性能的優(yōu)化而并行或亂序執(zhí)行一些任務(wù)。比如,考慮到不同的渲染API,我們可能首先變換和照明所有頂點(diǎn),然后才進(jìn)一步的處理(進(jìn)行裁剪和剔除),或者會并行處理二者,也可能在背面剔除之后再進(jìn)行光照會得到更高效率。

還有一個(gè)我們將不詳細(xì)討論的要點(diǎn),即工作負(fù)擔(dān)如何在CPU與渲染硬件間分配。正確地組織渲染任務(wù),以求得最大的并行效果對高效渲染是至關(guān)重要的。

考慮上述簡化,就得到了圖形管道中數(shù)據(jù)流的概況,如下所示:

(1)建立場景:開始渲染之前,需要預(yù)先設(shè)定對整個(gè)場景有效的一些選項(xiàng)。比如,要建立攝像機(jī)位置,或者更具體些,要選擇進(jìn)行渲染的出發(fā)點(diǎn)---視點(diǎn),渲染的輸出---視圖。還需要設(shè)定光照與霧化選項(xiàng),同時(shí)準(zhǔn)備z緩沖。

(2)可見性檢測:選好了攝像機(jī),就必須檢測場景中哪些物體是可見的。可見性檢測對實(shí)時(shí)渲染極為重要,因?yàn)槲覀儾辉敢饫速M(fèi)時(shí)間去渲染那些根本看不到的東西。

(3)設(shè)置物體級的渲染狀態(tài):一旦發(fā)現(xiàn)某物體潛在可見,就到了把它實(shí)際繪制出來的時(shí)候。每個(gè)物體的渲染設(shè)置可能是不同的,在渲染該物體的任何片元之前,首先要設(shè)置上述選項(xiàng),最常見的此類選項(xiàng)是紋理映射。

(4)幾何體的生成與提交:接著實(shí)際向API提交幾何體,通常提交的數(shù)據(jù)是種種形式的三角形,或是獨(dú)立的三角形,或是索引三角網(wǎng)格與三角帶。此階段,我們可能會應(yīng)用LOD,或者漸進(jìn)式生成幾何體。

(5)變換與光照:一旦渲染API得到了三角形數(shù)據(jù),由模型空間向攝像機(jī)空間的頂點(diǎn)坐標(biāo)轉(zhuǎn)換與頂點(diǎn)光照計(jì)算即開始。

(6)背面剔除與裁剪:然后,那些背對攝像機(jī)的三角形被去除("背面剔除");三角形在視椎外的部分也被去除,稱作裁剪---這可能導(dǎo)致產(chǎn)生多于三個(gè)邊的多邊形。

(7)投影到屏幕空間:在3D裁剪空間中經(jīng)裁剪產(chǎn)生的多邊形,被投影到輸出窗口的2D屏幕空間里。

(8)光柵化:當(dāng)把裁剪后的多邊形轉(zhuǎn)換到屏幕空間后,就到了光柵化階段。光柵化指計(jì)算應(yīng)繪制三角形上的哪些像素的過程,并為接下來的像素著色階段提供合理的插值參數(shù)(如光照和紋理映射坐標(biāo))。

(9)像素著色:最后,在管道的最后階段計(jì)算三角形的色彩,此過程稱作"著色"。接著把這些顏色寫至屏幕,這是可能需要alpha混合與z緩沖。

下面的偽代碼描述了渲染管道,為了達(dá)到概觀的目的,大量細(xì)節(jié)被省去了。同時(shí),由于渲染平臺和API的不同,實(shí)踐中會有許多不同的形式。

    Listing 15.1: Pseudocode for the graphics pipeline
   
   
// First, figure how to view the scene
   
setupTheCamera();
   
   
// Clear the zbuffer
   
clearZBuffer();
   
   
// Setup environmental lighting and fog
   
setGlobalLightingAndFog();
   
   
// Get a list of objects that are potentially visible
   
potentiallyVisibleObjectList = highLevelVisibilityDetermination(scene);
   
   
// Render everything we found to be potentially visible
   
for (all objects in potentiallyVisibleObjectList) 
    {
        
// Perform lower-level VSD using bounding volume test
   
    if (!object.isBoundingVolumeVisible()) 
            
continue;
   
        
// Fetch or procedurally generate the geometry
   
    triMesh = object.getGeometry()
   
        
// Clip and render the faces
   
    for (each triangle in the geometry) 
        {
            
// Transform the vertices to clip space, and perform vertex-level lighting
   
        clipSpaceTriangle = transformAndLighting(triangle);
   
            
// Is the triangle backfacing?
   
        if (clipSpaceTriangle.isBackFacing()) continue;
   
            
// Clip the triangle to the view volume
   
        clippedTriangle = clipToViewVolume(clipSpaceTriangle);
   
            
if (clippedTriangle.isEmpty()) 
                
continue;
   
            
// Project the triangle onto screen space and rasterize
   
        clippedTriangle.projectToScreenSpace();
   
            
for (each pixel in the triangle) 
            {
                
// Interpolate color, zbuffer value, and texture mapping coords
   
                // Perform zbuffering and alpha test
   
            if (!zbufferTest()) 
                    
continue;
   
                
if (!alphaTest()) 
                    
continue;
   
                
// Shade the pixel.
   
            color = shadePixel();
   
                
// Write to the frame buffer and zbuffer
   
            writePixel(color, interpolatedZ);
            }
        }
    }

設(shè)定視圖參數(shù)

渲染場景之前,首先必須建立攝像機(jī)和輸出窗口。即必須決定從哪個(gè)位置進(jìn)行觀察渲染(視點(diǎn)位置、方向、縮放)以及把渲染結(jié)果送到哪里(屏幕上的目標(biāo)矩形區(qū)域)。上述二者中,輸出窗口較為簡單,故先討論輸出窗口。

 

指定輸出窗口

我們不一定要把圖像渲染到整個(gè)屏幕。比如,一個(gè)分屏的多人游戲,每個(gè)玩家只占據(jù)顯示屏幕的一部分。輸出窗口即指輸出設(shè)備中圖像將要渲染到的那部分,如圖15.1所示:

窗口位置由左上角像素(winPosxwinPosy給出,整數(shù)winResxwinResy是以像素為單位的窗口大小,如此定義,使用窗口大小而不是右下角的坐標(biāo),可避免整數(shù)像素坐標(biāo)系帶來一些麻煩。同時(shí)要注意窗口的實(shí)際物體大小和像素大小的區(qū)別。

要知道我們不一定在屏幕上渲染,也許只是將渲染結(jié)果保存到一個(gè)TGA文件里,或是AVI的一幀,也許只是渲染到一個(gè)紋理上---作為主渲染器的一個(gè)子過程而已,因此,名詞"幀緩沖"一般指用來保存我們正渲染圖像的那塊內(nèi)存。

 

像素縱橫比

不管是渲染到屏幕還是緩沖區(qū),我們必須知道像素的縱橫比。它是像素高對寬的比值,一般為1("方形"像素),不過并非總是如此。下面給出其計(jì)算公式(公式5.1):

pixPhys指像素物理尺寸。一般來說,度量單位并無關(guān)系,比例才是重要的。devPhys是顯示設(shè)備的物理高與寬比,尺寸可能是英寸、英尺、picas等,但也只有比例才是重要的。比如,標(biāo)準(zhǔn)的桌面顯示器,尺寸各異但卻擁有相同的比值4:3---視區(qū)寬大于高約33%。另一個(gè)常見比例是高清晰電視和DVD上的16:9。整數(shù)devResxdevResy是x、y方向的像素比,如640 x 480devResx=640,devResy=480。

如前所述,比值為1的方形像素最為常見。如標(biāo)準(zhǔn)桌面顯示器,有4:3的物理縱橫比,而許多常見解析度:320 x 240640 x 480800 x 600,1024x 7681600 x 1200也都是4:3,因此像素是方形的。

注意計(jì)算中未用到窗口的尺寸及位置,這是合理的,窗口性質(zhì)不影響像素的物理屬性。但是,窗口尺寸在視場問題中十分重要,而位置對攝像機(jī)到屏幕的映射是關(guān)鍵。

 

是攝像機(jī)可見的空間體積,看上去像截掉頂部的金字塔,如圖15.2所示:

視錐是由6個(gè)裁剪面圍成的。構(gòu)成視錐的4個(gè)側(cè)面稱為上、左、下、右面,它們對應(yīng)著輸出窗口的四邊。為防止物體離攝像機(jī)過近,設(shè)置近剪面,從而去除金字塔形的頂端。同理,也設(shè)置了視野的遠(yuǎn)端,因?yàn)樘h(yuǎn)的物體實(shí)際上太小而不可見,故可有效而安全地去掉。

 

視場與縮放

攝像機(jī)同其他物體一樣有位置和朝向,同時(shí)它還具有"視場"這一額外的屬性。另一名詞"縮放"你也許已經(jīng)很熟悉,直觀上,你早就知道放大和縮小。但拉近時(shí),物體顯大;拉遠(yuǎn)時(shí),物體顯小,這太常見了。

視場是視錐所截的角。實(shí)際上需要兩個(gè)角:分別對應(yīng)水平視場和垂直視場。這里只在2D中討論其中一個(gè),圖15.3從上方顯示了視錐,精確的展示了水平視場角,坐標(biāo)軸的標(biāo)記用的是攝像機(jī)空間。

縮放表示物體實(shí)際大小和物體在90視場中顯示大小的比。所以大比值表示放大,小比值表示縮小。比如,2.0的縮放表示物體在屏幕上比用90視場時(shí)大兩倍。縮放的幾何解釋如圖15.4所示:

應(yīng)用基本三角知識,就能推導(dǎo)出縮放和視場角之間的轉(zhuǎn)換公式:

在3D中,需要兩個(gè)縮放值,一個(gè)水平的,一個(gè)垂直的。可以隨意給值,但如果二者比例不恰當(dāng),圖像便像被拉伸過似的(好比寬銀幕電影在電視上播出)。為了維持恰當(dāng)?shù)谋壤s放要和輸出窗口的尺寸對應(yīng):

假設(shè)輸出為正常比例,許多渲染引擎允許僅用一個(gè)視場角(或zoom)設(shè)定攝像機(jī),然后自動計(jì)算另一個(gè)。例如,可以指定水平視場角,自動計(jì)算垂直視場角,反之亦然;或者指定視場角中較大的一個(gè),自動計(jì)算較小的。

posted on 2008-03-04 19:47 lovedday 閱讀(2310) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


公告

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

隨筆分類(178)

3D游戲編程相關(guān)鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲午夜精品一区二区三区他趣| 久久综合国产精品| 久久久精品日韩| 欧美激情精品久久久久久久变态 | aa国产精品| 国产中文一区二区| 欧美一区二区三区在线看 | 欧美h视频在线| 免费观看一区| 国产在线高清精品| 欧美欧美在线| 亚洲欧美视频一区| 久久视频国产精品免费视频在线| 在线精品国产欧美| 国产欧美日韩免费看aⅴ视频| 亚洲狼人综合| 日韩视频永久免费观看| 国内自拍亚洲| 一区二区三区www| 一区二区三区精密机械公司 | 免费观看成人| 一区二区三区精品国产| 欧美在线黄色| 一本色道久久综合亚洲精品小说| 久久青草欧美一区二区三区| 亚洲欧洲一区二区在线观看| 亚洲国产精品高清久久久| 国产精品日韩欧美一区| 久久亚洲精品一区| 国产精品毛片a∨一区二区三区|国 | 亚洲影视中文字幕| 久久精品国产2020观看福利| 亚洲精选在线| 国模私拍视频一区| 国产精品视频网站| 国产精品一二三四| 国产一区二区三区久久| 激情五月综合色婷婷一区二区| 欧美中文字幕在线播放| 久久久999精品| 亚洲精品国产精品乱码不99按摩| 亚洲先锋成人| 久久激情网站| 欧美一区二区三区视频在线观看| 欧美一区二区三区电影在线观看| 欧美一级播放| 欧美精品一区二区三区在线看午夜 | 在线精品视频免费观看| 欧美午夜视频在线| 国产亚洲激情在线| 国产日本亚洲高清| 国语自产精品视频在线看8查询8| 99re亚洲国产精品| 欧美一区二区三区日韩视频| 久久午夜精品一区二区| 美女诱惑黄网站一区| 欧美专区福利在线| 国产精品一区二区三区四区| 99香蕉国产精品偷在线观看| 久久九九有精品国产23| 亚洲午夜精品国产| 久久精品国产第一区二区三区最新章节 | 国产亚洲永久域名| 激情亚洲网站| 久久精品国产成人| 亚洲精品激情| 免费观看欧美在线视频的网站| 欧美另类女人| 国产一区二区三区四区| 午夜亚洲影视| 亚洲经典三级| 亚洲一区二区三区中文字幕在线| 欧美午夜精品理论片a级大开眼界| 激情五月综合色婷婷一区二区| 老色批av在线精品| 99re6这里只有精品视频在线观看| 久久噜噜亚洲综合| 国产精品丝袜久久久久久app| 欧美精品激情在线观看| 国产真实乱子伦精品视频| 亚洲男人的天堂在线观看| 麻豆精品精品国产自在97香蕉| 久久久99精品免费观看不卡| 国产日韩欧美一区| 亚洲欧美中日韩| 久久久久久亚洲精品不卡4k岛国| 99日韩精品| 亚洲国产精品va| 国产日韩亚洲欧美| 亚洲在线网站| 国产亚洲欧美日韩美女| 久久久久久高潮国产精品视| 久久精品一区二区三区不卡牛牛| 亚洲精品一区在线观看香蕉| 欧美在线免费观看| 亚洲欧美中文字幕| 亚洲高清三级视频| 欧美成人一品| 欧美激情一区二区久久久| 国内揄拍国内精品久久| 亚洲一区二区免费看| 一区二区三区日韩欧美精品| 久久精品日产第一区二区三区| 日韩午夜剧场| 久久精品91久久香蕉加勒比| 亚洲国产专区校园欧美| 激情久久婷婷| 久久都是精品| 嫩模写真一区二区三区三州| 国产在线欧美日韩| 欧美大片在线观看一区| 亚洲高清精品中出| 国产亚洲va综合人人澡精品| 亚洲欧美怡红院| 久久久一二三| 一区二区三区在线免费视频| 亚洲视频一二| 欧美国产在线观看| 亚洲国产毛片完整版| 久久综合成人精品亚洲另类欧美| 免费日韩视频| 正在播放亚洲一区| 国内久久婷婷综合| 欧美三级中文字幕在线观看| 亚洲主播在线播放| 免费不卡中文字幕视频| 中文网丁香综合网| 久久久久国色av免费观看性色| 欧美一级专区| 国产精一区二区三区| 麻豆91精品91久久久的内涵| 亚洲免费精品| 老司机免费视频一区二区三区| 黄色成人在线免费| 欧美日韩国产首页| 欧美了一区在线观看| 狂野欧美激情性xxxx| 久久综合九色| 欧美日韩国产大片| 美女视频黄 久久| 久久精品国产视频| 久久婷婷国产综合精品青草| 香蕉尹人综合在线观看| 亚洲欧洲一区二区三区在线观看 | 另类春色校园亚洲| 亚洲欧美激情诱惑| 欧美在线看片| 亚洲欧美日韩精品久久亚洲区| 久久久久网站| 亚洲精品国产欧美| 亚洲成色777777在线观看影院| 国产精品一区免费视频| 欧美激情综合在线| 欧美日韩日本国产亚洲在线| 一区二区三区四区精品| 亚洲国产成人精品久久| 中文在线不卡视频| 亚洲午夜在线| 亚洲一区国产| 国产偷自视频区视频一区二区| 亚洲电影第1页| 91久久国产精品91久久性色| 永久免费毛片在线播放不卡| 91久久极品少妇xxxxⅹ软件| 欧美视频免费在线| 欧美国产视频一区二区| 久久超碰97人人做人人爱| 麻豆亚洲精品| 欧美亚一区二区| 黑丝一区二区三区| 99精品国产高清一区二区| 久久九九精品99国产精品| 日韩视频在线免费观看| 欧美日本精品| 在线视频国产日韩| 欧美在线视频免费观看| 欧美国产日产韩国视频| 欧美不卡激情三级在线观看| 久久理论片午夜琪琪电影网| 亚洲高清视频的网址| 久久亚洲欧洲| 久久久久高清| 亚洲国产婷婷香蕉久久久久久99| 欧美mv日韩mv国产网站app| 欧美一级专区| 国产精品一国产精品k频道56| 久久er精品视频| 亚洲精品日韩精品| 欧美日韩综合网| 欧美一区二区播放| 日韩视频永久免费观看| 久久夜色精品国产| 精品99一区二区三区| 亚洲色图自拍| 国产精品美女主播| 亚洲欧美日韩天堂一区二区| 亚洲欧美日韩一区| 国产欧美在线| 亚洲视频自拍偷拍| 久久国产免费|