欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種三維場景中海量模型實時陰影的顯示方法

文檔序號:9728095閱讀:574來源:國知局
一種三維場景中海量模型實時陰影的顯示方法
【技術領域】
[0001]本發(fā)明屬于計算機三維態(tài)勢顯示處理領域,具體地說是一種三維場景中海量模型 實時陰影的顯示方法。
【背景技術】
[0002] 實時陰影仿真技術是增加虛擬場景真實感的關鍵技術,在三維游戲、虛擬訓練系 統(tǒng)、三維地理信息系統(tǒng)等方面有著廣泛的應用。其中,陰影是比較常用的一種仿真技術,近 年來該技術提出的算法很多,整體性能在向好的方向發(fā)展,同時仿真的效果也越來越真實, 但在海量模型的實時陰影處理方面均存在一些效率上的瓶頸。本發(fā)明通過充分解析三維模 型數(shù)據(jù)結構,應用陰影形成理論以及底層渲染引擎的工作原理,對陰影的構建算法進行了 改進,大幅提升了海量模型實時陰影的處理效率。
[0003] 通常情況下,在三維場景中,傳統(tǒng)的陰影計算算法都是直接遍歷每個面,再記錄并 統(tǒng)計每個面的鄰接邊,后續(xù)再在鄰接邊中篩選出輪廓邊,計算量大、效率低,如圖4所示。另 外當前通用的陰影處理都是按照統(tǒng)一的全球日出日落時間,從而導致在不同季節(jié)、不同地 區(qū)的陰影顯示與實際情況不相符,影響了陰影的真實性。

【發(fā)明內容】

[0004] 本發(fā)明的目的在于提供一種三維場景中海量模型實時陰影的顯示方法,該方法可 以在三維場景中,根據(jù)模型的位置和時間,通過優(yōu)化陰影的生成算法,提升陰影的生成效 率,能快速地實現(xiàn)海量模型數(shù)據(jù)的實時陰影計算,能真實地表現(xiàn)模型的陰影效果。
[0005] 本發(fā)明公開了一種三維場景中海量模型實時陰影的顯示方法,包括:
[0006] 步驟1,陰影創(chuàng)建;
[0007] 步驟2,形成模型陰影體;
[0008] 步驟3,構建陰影體;
[0009] 步驟4,對陰影體進行渲染。
[0010] 本發(fā)明步驟1陰影創(chuàng)建中,加載并解析模型,獲取模型的網格節(jié)點,從網格節(jié)點中 提取模型坐標空間的坐標信息(X、Y、Z)、點信息和面結構信息,計算每個面的法向量 Normal,,其中i表示面的索引序號,形成對應面結構信息,每個面最多有三個鄰接面,若沒 有鄰接面則法向量賦空,由此得到模型所處位置。
[0011] 本發(fā)明步驟2形成模型陰影中,根據(jù)模型所處位置,計算太陽位置以及太陽光方 向,將太陽位置坐標轉換到模型坐標空間,對模型的每個面進行向光性計算,并進行共享邊 的計算,針對每個鄰接邊,構建陰影。
[0012] 本發(fā)明步驟2包括:
[0013] 步驟2.1,根據(jù)模型所在位置的經煒度信息Lng與Lat計算日出與日落時間,計算太 陽位置以及太陽光方向,:
[0014] 記當前時間為T,分別為年、月、日、時、分、秒,將T表示為:
[0015] T= {Year,Month、Day、Hours、Minute、Second};
[0016] 記當前時區(qū)為Tzone,Tzone由偏離率Bias與標準偏離率StandardBias組成,將 Tzone表亦為:
[0017] Tzone = {Bias,StandardBias};
[0018] 記日出時間為Tsunrise,日落時間為Tsunset,各由兩個元素組成,分別為小時、分,將 Tsunrise 與 T sunset 表示為:
[0019] Tsunrise= {Hour,Minute},
[0020] Tsunrise. η· = 24 · 0*cos(Lat*PI/l 80)+Tzone .Bias/24.0+cos(Lat*PI/l 80 )/360;
[0021] 其中1^"也(3.11。虹為日出時間中的小時項,?1為標準圓周率、了20116.81 &8為時區(qū)的偏 離率;
[0022] 日出時間中的分鐘項T_rise · Minute = 60 · 0* (T_rise · Hour/24);
[0023] Tsunset= {Hour,Minute},
[0024] 日落時間中的小時項Tsunset · Hour = 24 · 0*cos(Lat*PI/180)+Tzone · Bias/24 · 〇-cos(Lat*PI/180)/360;
[0025] 日落時間中的分鐘項T sunset. Minute = 60.0*(T sunset. Hour/24);
[0026] 若T的時、分均在日出與日落時間范圍內,即Tsunset.HouKT.Hou rs〈Tsunrise.H·, Tsunset · Η〇??!处?· MinUte^T'sumrise.Minute ? 則繼續(xù)以下過程計算太陽位置:
[0027] 記太陽位置Veclight = {x,y,z},Veclight.x,Veclight.y,Veclight.z分別代表 世界坐標下三個方向的分量,單位為米,貝太陽光方向向量Dirlight的計算過程如下:
[0028] L=sqrt(Veclight.x*Veclight. x+Vecl ight .y*Veclight.y+Veclight.z* Veclight.z));
[0029]
[0030] L為中間參數(shù),sqrt為開根號;
[0031 ]步驟2.2,將太陽位置坐標轉換到目標模型坐標空間:
[0032] 記太陽位置向量為Veclight,進行如下步驟:
[0033] 計算放縮轉換矩陣Matscale,用于保持物體的大小與實際比例一致:
[0034]
[0035]計算偏移矩陣Mattrans,用于使模型放置在正確的位置:
[0036]
[0037] 上式中V. X,V. y,V. z分別代表模型的空間坐標位置,單位為米;
[0038]根據(jù)模型的經經煒度計算旋轉矩陣Matrcitate,用于使模型保持正向:
[0039]
[0040]上式中l(wèi)ng、lat分別為模型的經煒度;
[0041 ] 記目標模型矩陣為MaU-i,目標模型矩陣的逆矩陣為MatInvers_dei,
[0042] Mcltmodel-Miltr〇tatel*M£ltscale*M£lttrans,
[0043] Mcltinversemodel-Mcltmodel ;
[0044] 符號表示逆矩陣,;
[0045] 進行賦值操作,將Vecl ight在Matinvers_dei做轉換,公式為;
[0046] Vecl ight = Vecl ight*MatinverseM〇dei;
[0047] 步驟2.3,計算輪廓邊:
[0048] 遍歷每個基本面即原始模型的三角面片,計算其法向量與太陽光方向夾角,判斷 其向光性,依次計算基本面的三條邊El、E2、E3所對應的鄰接面的向光性,若鄰接面的向光 性與基本面的向光性不一致,則判定兩者之間的公共邊為輪廓邊;若基本面的指定邊沒有 鄰接面,則直接判定該邊為輪廓邊;
[0049]計算出當前面的法向量之后,根據(jù)光源位置判斷當前面是否是背光面,如果當前 面面對光源時j <a 則cost(a)〈0,即當前面法向量與入射光線方向向量的點積小于 〇;所以只有法向量與與入射光線的點積大于〇,即c〇st(a)>0時,表示該面背對光源,記面的 向光性為FaceLight:
[0050]
[0051] 上式中,j表示面的索引序號當太陽光入射角與面向量之間的夾角大于90度且小 于180度時,其為向光面,否則為背光面;
[0052] 步驟2.4,獲取共享邊:
[0053]如果三角面片A的三個頂點序號為{Vo JhVd,三角面片A的鄰接面的頂點序號為 {AdjVo、AdjVi、AdjV2},則鄰接邊AdjEdge的計算算法如下:
[0054]
[0055]上述公式中,k表示公共邊索引,記三角面A的三個頂點為,其相鄰的三 角面B的頂點為0心飛〇^(^飛1^(^飛2},在三角面4與8不重合的情況下,則兩個三角面片之間 最多只有一個公共邊;若A與B重合,則二者有三個公共邊,此時只取三角面A做向光性分析, 對三角面B不做處理;若三角面A與B相離,則二者沒有公共邊。
[0056]本發(fā)明步驟3針對每個鄰接邊,構建陰影:
[0057] 記每條輪廓邊的兩個頂點為V^Vs,光照方向向量為Vllght,則別在地面上的 投影點V3、V4計算過程如下:
[0058] V3 = Vi-Viight,
[0059] V4=V2-Viight〇
[0060] 本發(fā)明步驟4對陰影進行渲染:對形成的陰影進行渲染,再通過模板技術對陰影著 色。
[0061 ]本發(fā)明與現(xiàn)有技術相比具有以下的優(yōu)點:
[0062] 1)對陰影體的形成算法
當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
剑河县| 山西省| 鹤峰县| 新乡县| 偃师市| 漾濞| 镇平县| 天水市| 黑河市| 建阳市| 宿州市| 莒南县| 来宾市| 万载县| 英超| 正安县| 扎兰屯市| 通道| 巴中市| 五大连池市| 荃湾区| 怀远县| 正安县| 梅州市| 承德县| 西丰县| 巴彦淖尔市| 余庆县| 克什克腾旗| 任丘市| 三江| 肥东县| 金塔县| 响水县| 类乌齐县| 福建省| 五原县| 绥滨县| 双牌县| 颍上县| 冕宁县|