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

天行健 君子當(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>
            欧美大胆成人| 欧美美女操人视频| 欧美视频一区在线观看| 亚洲综合99| 久久精品综合一区| 一区二区三区视频观看| 久久精品人人做人人爽| 亚洲裸体在线观看| 欧美一区二区日韩一区二区| 亚洲国产导航| 亚洲直播在线一区| 亚洲美女91| 亚洲欧美一区二区三区在线| 亚洲国产精彩中文乱码av在线播放| 亚洲免费激情| 在线观看日韩| 亚洲欧美国产77777| 亚洲伦理中文字幕| 久久精品国产精品| 午夜精品剧场| 欧美日韩性视频在线| 久久久另类综合| 国产精品久久久久久久app| 亚洲成色www8888| 国产精品少妇自拍| 亚洲精品国产日韩| 亚洲激情在线观看| 欧美专区在线观看一区| 亚洲一级高清| 欧美国产精品| 免费欧美日韩| 国产亚洲高清视频| 亚洲午夜激情网页| 亚洲一区不卡| 欧美日韩亚洲一区二| 亚洲国产欧美日韩| 亚洲国产欧美在线| 亚洲国内在线| 亚洲午夜精品一区二区三区他趣| 国产一区二区在线观看免费播放| 一区二区日韩精品| 宅男噜噜噜66国产日韩在线观看| 老司机aⅴ在线精品导航| 久久久久久久91| 国产情人综合久久777777| 亚洲一级二级| 午夜在线成人av| 国产精品视频大全| 亚洲在线电影| 欧美在线日韩精品| 国产手机视频一区二区| 欧美一区二区三区四区在线观看地址 | 国产精品日本一区二区| 99在线精品免费视频九九视| 夜夜嗨av色一区二区不卡| 欧美激情 亚洲a∨综合| 亚洲激情中文1区| 一区二区日韩精品| 国产精品久久久久久av福利软件| 中文在线资源观看视频网站免费不卡| 中文国产一区| 国产精品欧美风情| 欧美一激情一区二区三区| 久久九九全国免费精品观看| 韩国三级电影久久久久久| 久久综合久色欧美综合狠狠| 欧美大片91| 亚洲欧洲美洲综合色网| 欧美人与性动交cc0o| 在线一区观看| 久久精品视频网| 亚洲激情成人网| 欧美三区视频| 久久成人免费日本黄色| 欧美激情四色 | 久久精品在线观看| 亚洲国产成人av好男人在线观看| 日韩视频在线观看免费| 国产精品电影网站| 久久精品人人做人人爽| 亚洲国产精品黑人久久久| 亚洲性视频网站| 国内精品视频在线播放| 欧美精品三级日韩久久| 亚洲欧美影院| 亚洲激情网址| 久久精品二区亚洲w码| 亚洲欧洲一区二区三区久久| 欧美深夜福利| 久久久久在线| 宅男在线国产精品| 麻豆国产精品777777在线| 一区二区免费在线视频| 国内精品久久久久影院色| 欧美精品一区二区在线观看| 午夜亚洲精品| 亚洲精品中文字幕有码专区| 久久精品一区二区| 亚洲视频综合在线| 在线观看精品一区| 国产精品美女999| 裸体一区二区| 午夜老司机精品| 99亚洲视频| 欧美日韩免费一区二区三区视频| 欧美性猛交99久久久久99按摩| 亚洲制服丝袜在线| 亚洲精品欧美一区二区三区| 国产女人18毛片水18精品| 欧美精品日韩三级| 久热精品视频在线| 亚洲欧美在线一区| 99精品久久久| 亚洲国产免费看| 久久人人97超碰人人澡爱香蕉| 亚洲性视频h| 99精品欧美| 亚洲动漫精品| 国产综合香蕉五月婷在线| 国产精品男女猛烈高潮激情| 欧美日韩一本到| 欧美77777| 久久综合久久综合这里只有精品| 亚洲欧美三级在线| 亚洲视频免费| 亚洲视频香蕉人妖| 夜夜精品视频一区二区| 亚洲精品视频二区| 亚洲国产综合在线| 亚洲电影免费观看高清完整版在线观看| 久久免费偷拍视频| 久久久久www| 久久男人资源视频| 另类人畜视频在线| 免费观看在线综合色| 老牛嫩草一区二区三区日本| 久久久午夜电影| 久久综合色播五月| 美女黄毛**国产精品啪啪| 久久久久久一区| 久久久免费av| 男男成人高潮片免费网站| 欧美成人官网二区| 欧美激情一区二区三区| 亚洲国产成人午夜在线一区| 亚洲国产女人aaa毛片在线| 亚洲国内精品在线| 欧美大片一区二区| 久久资源在线| 欧美中日韩免费视频| 久久9热精品视频| 久久爱www久久做| 欧美日韩和欧美的一区二区| 国产一区二区在线免费观看 | 久久久久久久网站| 久久偷看各类wc女厕嘘嘘偷窃| 久久久美女艺术照精彩视频福利播放| 久久久久国产精品一区二区| 美日韩精品免费观看视频| 亚洲第一视频| 日韩一级欧洲| 香蕉久久夜色精品| 麻豆精品在线播放| 欧美欧美全黄| 国产女主播一区| 有码中文亚洲精品| 一区二区欧美在线| 久久久.com| 亚洲精品一区二区三区在线观看| 中文精品视频一区二区在线观看| 欧美一区二区大片| 欧美二区在线播放| 国产精品日韩一区二区| 亚洲国产一区二区精品专区| 激情一区二区三区| 一区二区三区欧美激情| 久久国产主播| 亚洲老司机av| 欧美一区二区三区四区在线观看| 欧美成黄导航| 国产欧美日本| 这里只有视频精品| 亚洲专区在线| 欧美成人免费网| 国产欧美日韩三级| 亚洲精品免费在线| 欧美主播一区二区三区| 亚洲全黄一级网站| 久久精品国产亚洲aⅴ| 欧美午夜理伦三级在线观看| 在线免费观看视频一区| 亚洲欧美国产高清| 亚洲国产成人porn| 久久激情五月激情| 国产精品久久久久久户外露出| 亚洲人成在线观看一区二区| 久久黄色小说| 中文精品一区二区三区| 欧美freesex交免费视频| 激情成人av|