




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、三維場景的組織與繪制一. 三維場景的組織與管理場景圖是一種將場景中的各種數(shù)據(jù)以圖的方式組織在一同的場景數(shù)據(jù)管理方式。它是一個K-樹,場景圖中的每一個節(jié)點(diǎn)都是數(shù)據(jù)的存儲構(gòu)造,父結(jié)點(diǎn)會影響子結(jié)點(diǎn) 。 每個節(jié)點(diǎn)信息包括:1場景的組織構(gòu)造信息,如父節(jié)點(diǎn)或子節(jié)點(diǎn)的句柄;2支持繪制流程的各種信息,如節(jié)點(diǎn)在當(dāng)前幀中能否繪制的標(biāo)識,節(jié)點(diǎn)的包圍體等;3描畫表現(xiàn)本身所需的各類特征屬性信息,如位置坐標(biāo)、變換矩陣以及顏色、材質(zhì)等。 1. 基于場景圖的表達(dá)與管理場景圖BVH是最常用的數(shù)據(jù)構(gòu)造簡單容易了解Simple to understand編程簡單不過它僅僅存儲幾何信息繪制不僅僅是幾何信息場景在BVH根底上擴(kuò)展了 :
2、光照Lights紋理Textures變換Transforms更多.例:模擬一個星系 恒星 | 旋轉(zhuǎn) / 行星1 行星 | | 旋轉(zhuǎn) 旋轉(zhuǎn) / / 衛(wèi)星A衛(wèi)星B 衛(wèi)星C衛(wèi)星D 渲染恒星保管當(dāng)前矩陣 運(yùn)用第一個旋轉(zhuǎn) 渲染行星1保管當(dāng)前矩陣運(yùn)用第二個旋轉(zhuǎn)渲染衛(wèi)星A渲染衛(wèi)星B恢復(fù)我們保管的矩陣渲染行星2保管當(dāng)前矩陣運(yùn)用行星2的旋轉(zhuǎn)渲染衛(wèi)星C渲染衛(wèi)星D恢復(fù)我們保管的矩陣恢復(fù)我們保管的矩陣 恒星 | 旋轉(zhuǎn) / 行星1 行星 | | 旋轉(zhuǎn) 旋轉(zhuǎn),搖擺 / / 衛(wèi)星A衛(wèi)星B 衛(wèi)星C衛(wèi)星D行星A搖擺渲染恒星保管當(dāng)前矩陣運(yùn)用旋轉(zhuǎn)保管當(dāng)前矩陣運(yùn)用搖擺渲染行星A保管當(dāng)前矩陣運(yùn)用旋轉(zhuǎn)渲染衛(wèi)星A渲染衛(wèi)星B恢復(fù)矩陣恢復(fù)矩陣
3、恢復(fù)矩陣運(yùn)用旋轉(zhuǎn)渲染行星2保管當(dāng)前矩陣運(yùn)用行星2的旋轉(zhuǎn)渲染衛(wèi)星C渲染衛(wèi)星D恢復(fù)我們保管的矩陣恢復(fù)我們保管的矩陣場景繪制過程根據(jù)游戲的需求,更新場景中的部分構(gòu)造,從下到上;場景圖的剔除繪制過程:要修正一個行星的位置,只需修正星結(jié)點(diǎn)的屬性,不更改任何子節(jié)點(diǎn)的屬性.場景圖普通包含以下節(jié)點(diǎn):幾何節(jié)點(diǎn)變換節(jié)點(diǎn)平移,旋轉(zhuǎn),縮放開關(guān)節(jié)點(diǎn)經(jīng)過當(dāng)前形狀對子節(jié)點(diǎn)進(jìn)展選擇的節(jié)點(diǎn)把場景中的物體按照繪制形狀分類,對一樣形狀的物體設(shè)置一次形狀;形狀切換是一個比較耗時的運(yùn)算;繪制形狀包括:紋理映射的參數(shù)設(shè)置材質(zhì)參數(shù),包括泛光、漫射光等各類其他渲染方式:多邊形插值、交融等半條命2. 基于繪制形狀的場景管理建立形狀樹按形狀集進(jìn)
4、展排序遵照“盡量使形狀轉(zhuǎn)換最少按深度優(yōu)先遍歷形狀樹,依次繪制由于可見性檢測、求交、碰撞等都可歸結(jié)為空間關(guān)系的計(jì)算。對每個物體建立包圍體;對場景建立包圍體層次樹;快速判別一個點(diǎn)能否在物體的凸包圍體中。3. 基于景物包圍體的場景組織常用的場景物體包圍體包圍球AABB包圍盒OBB包圍盒平行六邊包圍體K對平行六面包圍體二.優(yōu)化場景繪制的幾何剖分技術(shù)常用的三種:1.BSP樹二叉空間平分樹運(yùn)用于深度排序,碰撞檢測,繪制,節(jié)點(diǎn)裁減和可見性判別,加速三維場景的遨游;空間中的恣意平面把空間分成兩部分:一份為二地空間剖分方法;不斷遞歸下去,終了的條件:空間中沒有物體了;剖分的深度到達(dá)了指定的數(shù)值就停下BSP樹的建
5、立先對物體建立包圍體構(gòu)造,然后以包圍體為單位建立場景的BSP樹;剖分方式:均勻剖分:適于場景中物體分布均勻平行坐標(biāo)軸剖分:室內(nèi)游戲選取場景中面積最大和遮擋物體最多的面:判別物體與剖分面的關(guān)系稍擔(dān)任BSP Binary Space Partitioning樹兩種類型:沿軸Axis-aligned沿多邊形(Polygon-aligned) 總體思想:用平面劃分多邊形把幾何排序后存放到它所屬的空間遞歸 ,直到都完成假設(shè)按某種方式遍歷,可以得到沿一個軸排序的幾何對于沿多邊形的方法很準(zhǔn)確沿軸的方法那么結(jié)果是近似的沿軸BSP 樹 (1)僅能沿x,y或產(chǎn)生一個分裂面最小的 box沿面分裂沿面分裂沿面分裂沿軸
6、BSP 樹(2)每個內(nèi)部節(jié)點(diǎn)擁有一個分割面 ;葉子具有幾何信息與BVH 比不同提供閉合空間,并且有序BV層次能用任何方式構(gòu)造無序;BVHs 可以運(yùn)用任何所需求的BV類型ABCDEPlane 0Plane 1aPlane 1bPlane 201aAB1bC2DE沿軸BSP 樹粗略排序沿視點(diǎn)測試平面從根遞歸測試?yán)^續(xù)從當(dāng)前面從前向后排序eye01aAB1bC2DE11a1b202345沿多邊形BSP樹用同樣的方法-但給的是準(zhǔn)確排序BSP樹的遍歷:深度優(yōu)先廣度優(yōu)先BSP樹局限性:不太適宜動態(tài)場景構(gòu)造時間長常用于地形繪制;以包圍四邊形逼近場景,然后迭代地一分為四。均勻剖分:適于場景中物體分布均勻平行坐標(biāo)
7、軸剖分:室內(nèi)游戲選取場景中面積最大和遮擋物體最多的面:判別物體與剖分面的關(guān)系稍擔(dān)任最大的優(yōu)點(diǎn):層次剔除 2. 四叉樹長方體遞歸地剖分為八個長方體;構(gòu)建時間比BSP樹短,容易運(yùn)用。常用于視域裁剪、碰撞檢測。 3. 八叉樹比較技術(shù)名稱適用場景構(gòu)建復(fù)雜度實(shí)用性二叉樹尺寸不大的室內(nèi)場景復(fù)雜大部分游戲引擎四叉樹室外地形一般僅用于地形繪制八叉樹大規(guī)模室內(nèi)空間場景一般復(fù)雜游戲引擎均勻八叉樹分布均勻的三維場景簡單少量三維游戲引擎三. 游戲場景的幾何優(yōu)化空間數(shù)據(jù)構(gòu)造用來加快渲染和各種查詢?yōu)槭裁葱枨蟾斓乃俣?圖形硬體6個月速度翻倍!我們總不滿足屏幕分辨率: 3000 x1500真實(shí)感: 全局光照幾何復(fù)雜度: 無
8、上界!場景的幾何優(yōu)化LOD在不影響畫面視覺效果情況下,逐漸簡化景物外表的細(xì)節(jié)來減少場景的幾何復(fù)雜性;四類:簡單取舍型設(shè)置閾值,小于那么不繪平滑過渡型大于上限,正常繪制;小于,不繪;中間,線性過渡靜態(tài)LOD型估計(jì)算同一物體的多個不同精度的版本,根據(jù)不同間隔切換運(yùn)用不同的物體騰躍:添加霧化效果1. 層次細(xì)節(jié)技術(shù)(LOD)動態(tài)LOD型在場景遨游過程中動態(tài)地根據(jù)相機(jī)的位置和物體的重要性動態(tài)簡化網(wǎng)格;簡化算法:基于頂點(diǎn)的刪除基于邊的刪除:定義代價函數(shù),刪除代價最小的邊基于面的刪除漸進(jìn)網(wǎng)格和延續(xù)多分辨率繪制在不同的間隔處從視點(diǎn))運(yùn)用不同的層次細(xì)節(jié)離視點(diǎn)更近出,運(yùn)用更多的三角形目的:有些看不見的可以不繪制從
9、而加快繪制速度2. 快速可見性判別與消隱類型物體層的算法:場景聚類技術(shù)決議相對于視點(diǎn)面的前后陳列二叉樹和八叉樹,入口技術(shù),潛在可見集,單物體分塊頂點(diǎn)層算法:頂點(diǎn)剔除算法反面剔除視域剔除裁剪面剔除象素層的算法:圖像空間排序深度緩沖消隱層次緩沖消隱時空銜接性不同的剪切技術(shù)view frustumdetailbackfaceportalocclusion基于入口技術(shù)的可見性判別適用于室內(nèi)游戲根據(jù)單元與單元之間的鄰接圖,經(jīng)過深度遍歷建立單元與單元的入口序列,從而得到單元對單元的可見性集合。入口技術(shù)的優(yōu)點(diǎn):方便定義場景:可方便地動態(tài)創(chuàng)建和修正場景快速繪制基于入口技術(shù)的裁剪Images courtesy
10、of David P. Luebke and Chris Georges平均: 裁減去 20-50% 多邊形加速: from slightly better to 10 times基于入口技術(shù)的裁剪舉例上面的建筑中球是要畫的對象基于入口技術(shù)的裁剪算法(1)分割帶有門的單元 (建立圖)對于每一幀:定位視點(diǎn)的位置,并把整個場景2D AABB初始化* 繪制當(dāng)前單元用帶有w.r.t. AABB 的視點(diǎn)六面體裁減方法對最近的單元遍歷 (經(jīng)過門戶)遍歷門戶的 AABB & AABB 交叉Goto *遮擋面剔除技術(shù)基于陰影體的遮擋剔除選擇遮擋體,生成一個陰影體:尺寸最大的多邊形或多個三角形組成的一個大的凸包
11、;利用包圍盒測試與遮擋體的關(guān)系基于視點(diǎn)的遮擋剔除對多個遮擋體,按重要性排序遮擋裁剪主要思想: 完全在另一個后的物體可以被裁剪效率問題很難處理這個領(lǐng)域有很多研討例如最終圖像闡明 “入口裁剪屬于遮擋裁剪類型背向面裁剪簡單的方法是剖其背叛視點(diǎn)的面用于: 閉合面 (例如: 球 sphere)不論能否我們只知道這個面能否可見 (例如: 室內(nèi)的墻)兩種方法 (屏幕空間, 視空間)背向面裁剪(續(xù))通常用API完成OpenGL: glCullFace(GL_BACK);D3D:SetRenderState(D3DRS_CULLMODE, TRUE); 怎樣確定是背向面?首先, 必需有一個延續(xù)朝向的多邊形mus
12、t have consistently oriented polygons, e.g., counterclockwise012front facing012back facingTwo ways in different spaces:screen space102front012backeyefrontbackeye spaceHow to cull backfacesView-Frustum CullingBound every “natural group of primitives by a simple volume (e.g., sphere, box)If a bounding
13、 volume (BV) is outside the view frustum, then the entire contents of that BV is also outside (not visible)Can we accelerate view frustum culling further?Do what we always do in graphicsUse a hierarchical approach, e.g., a spatial data structure (BVH, BSP, scene graph)Which stages benefits?Geometry
14、and Rasterizer Bus between CPU and GeometryExample of Hierarchical View Frustum CullingrootcameraOcclusion culling algorithmUse some kind of occlusionrepresentation ORfor each object g do: if( not Occluded(OR ,g) render(g); update(OR ,g); end;end;Target: urban scenerydense occlusionviewer is about 2
15、 meters above groundAlgorithm:Process scene in front-to-back using a quad treeMaintain a piecewise constant horizonCull objects against horizonAdd visible objects occluding power to the horizonOcclusion Horizon:A simple algorithmOcclusion testing with occlusion horizonsTo process tetrahedron (which
16、is behind grey objects):find axis-aligned box of projectioncompare against occlusion horizonculledUpdate horizonWhen an object is considered visible:Add its “occluding power to the occlusion representationOcclusion Culling with DirectX9 實(shí)現(xiàn)IDirect3DQuery9 函數(shù):Render every objects bounding mesh For eve
17、ry object: Begin query Re-render the bounding mesh End query Retrieve occlusion query data. If the pixels visible are greater than zero, the object should be rendered. Otherwise, the object should be occluded from rendering. Step 1: A bounding mesh is usedStep 2:Object Declaration For the occlusion
18、process, interfaces of LPDIRECT3DQUERY9, LPD3DXRENDERTOSURFACE, LPDIRECT3DSURFACE9, and LPDIRECT3DTEXTURE9 need to be declared. Setting up the Occlusion Objects The query itself must be created, along with the texture and the render-to-surface. D3DUSAGE_RENDERTARGET is used during the creation of the textureThe surface itself is obtained through the GetSurfaceLevel() function of LPDIRECT3DTEXTURE9. Culling the Objects First, the LPD3DXRENDERTOSURFACE is activated and cleared. Second, every ob
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 眾籌股東合同范例6
- 南匯食品運(yùn)輸合同范例
- 三年級數(shù)數(shù)學(xué)解決問題教案
- 叉車裝卸合同范本
- 加工木門合同范本
- 單位用品批發(fā)合同范本
- 付款分期合同范本
- 制造師證書掛靠合同范本
- 《童年的秘密》讀書心得體會
- 司機(jī) 勞動合同范本
- 電廠應(yīng)急救援培訓(xùn)
- 智慧能源島解決方案
- 做最好的教師讀書分享
- 眼底疾病課件教學(xué)課件
- 二元一次方程組應(yīng)用題(50題)
- 出生證警示教育培訓(xùn)
- KYC高客營銷培訓(xùn)
- 通信工程建設(shè)標(biāo)準(zhǔn)強(qiáng)制性條文匯編(2023版)-定額質(zhì)監(jiān)中心
- 《現(xiàn)代家政導(dǎo)論》電子教案 4.2模塊四項(xiàng)目二家政教育發(fā)展認(rèn)知
- 現(xiàn)代家政導(dǎo)論-課件 5.2.2認(rèn)識我國家政服務(wù)業(yè)
- DB11∕512-2017 建筑裝飾工程石材應(yīng)用技術(shù)規(guī)程
評論
0/150
提交評論