本發(fā)明涉及可視化,特別涉及一種歷史文化遺產(chǎn)數(shù)字化展示方法。
背景技術(shù):
歷史文化遺產(chǎn)的數(shù)字化展示技術(shù)包括基于VR技術(shù)的真實(shí)感渲染、沉浸式投影、基于多媒體信息集成展示的數(shù)字博物館等。數(shù)字博物館營造數(shù)字化展示系統(tǒng),用戶可通過電子書、視聽光盤、網(wǎng)頁瀏覽、虛擬體驗(yàn)等方式來瀏覽、訪問文物古跡等歷史文化遺產(chǎn)的數(shù)字資源。高性能可編程圖形處理器、并行處理器、高效存儲、協(xié)同計(jì)算等新技術(shù)為海量場景數(shù)據(jù)的處理提供了強(qiáng)大的計(jì)算與存儲資源。數(shù)據(jù)獲取的便捷,資源的豐富,計(jì)算能力的進(jìn)步,存儲效能的提升,這些新技術(shù)進(jìn)一步拓展了VR的應(yīng)用范疇。傳統(tǒng)的歷史文化遺產(chǎn)場景數(shù)據(jù)采取大多是基于地面定點(diǎn)采集點(diǎn),通過普通相機(jī)的多點(diǎn)拍攝或利用場景相機(jī)的方式獲來獲取定點(diǎn)場景影像或視頻數(shù)據(jù),數(shù)據(jù)采集完成后再通過專用軟件進(jìn)行數(shù)據(jù)處理以達(dá)到場景發(fā)布和瀏覽的要求。傳統(tǒng)的方法由于缺少高精度采集點(diǎn)的坐標(biāo)數(shù)據(jù),往往只能采用自定義矢量圖的示意方式進(jìn)行展現(xiàn),缺少了數(shù)據(jù)展示的空間真實(shí)感。此外,大規(guī)模、高精度的原始場景數(shù)據(jù)所帶來的海量計(jì)算數(shù)據(jù),給現(xiàn)有的處理器資源、存儲系統(tǒng)在實(shí)時(shí)處理方面帶來巨大挑戰(zhàn)。高分辨率場景數(shù)據(jù)必然產(chǎn)生涵蓋豐富表面細(xì)節(jié)的TB級大規(guī)模場景分層模型,這已經(jīng)超出當(dāng)前計(jì)算機(jī)系統(tǒng)的實(shí)時(shí)處理能力。同時(shí),基于3D場景的應(yīng)用往往還要處理大量的業(yè)務(wù)邏輯,包括場景內(nèi)容的組織調(diào)度、模型對象的屬性變化計(jì)算、資源的分配管理等。用戶與場景應(yīng)用的實(shí)時(shí)交互處理以及應(yīng)用自身的業(yè)務(wù)邏輯處理緊密耦合,給整個(gè)應(yīng)用系統(tǒng)帶來沉重負(fù)擔(dān),最終影響到系統(tǒng)的實(shí)時(shí)性。
技術(shù)實(shí)現(xiàn)要素:
為解決上述現(xiàn)有技術(shù)所存在的問題,本發(fā)明提出了一種歷史文化遺產(chǎn)數(shù)字化展示方法,包括:
對基礎(chǔ)元素和模型文件進(jìn)行解析,將模型文件處理成數(shù)據(jù)流;將基礎(chǔ)元素發(fā)送至場景分層模型重建進(jìn)程,由主處理器和圖形處理器的協(xié)同處理來實(shí)現(xiàn)場景數(shù)據(jù)的編碼傳輸與可視化;
將場景中元素組織成場景樹;在場景數(shù)據(jù)的分層模型之上實(shí)施模型簡化;查找場景分層模型頂點(diǎn)索引,計(jì)算場景分層模型頂點(diǎn)拓?fù)洌鶕?jù)誤差度量進(jìn)行網(wǎng)格頂點(diǎn)合并,重建原始網(wǎng)格的近似表示;
將渲染對象進(jìn)行優(yōu)先級排序,將渲染狀態(tài)一致的對象進(jìn)行批處理渲染,然后對于場景的時(shí)空連貫性進(jìn)行統(tǒng)一平滑處理。
優(yōu)選地,所述重建網(wǎng)格拓?fù)浣票硎?,進(jìn)一步包括:在渲染時(shí)進(jìn)行視場判斷、細(xì)節(jié)層次選擇和可見性判斷,對處于視場之外的不可見面片進(jìn)行刪除。
優(yōu)選地,在所述重建網(wǎng)格拓?fù)浣票硎局?,還包括對場景分層模型的頂點(diǎn)進(jìn)行拓?fù)潢P(guān)系索引和緩存。
優(yōu)選地,所述場景分層模型通過以下方式構(gòu)建:對原始數(shù)據(jù)進(jìn)行分區(qū)存儲;然后基于場景的幾何特征,建立場景數(shù)據(jù)區(qū)的索引,并組織成多叉樹結(jié)構(gòu);通過多叉樹構(gòu)成支持大規(guī)模數(shù)據(jù)的場景分層模型。
優(yōu)選地,所述場景分層模型在運(yùn)行時(shí),將場景數(shù)據(jù)區(qū)索引讀入內(nèi)存,根據(jù)渲染節(jié)點(diǎn)選取策略調(diào)用選中的多叉樹節(jié)點(diǎn)集合,然后載入對應(yīng)原始場景數(shù)據(jù)。
優(yōu)選地,所述場景分層模型根據(jù)局部的場景幾何特征而采用不同的分辨率來渲染。
優(yōu)選地,還包括將所有原始場景數(shù)據(jù)按統(tǒng)一格式進(jìn)行劃分和重組,通過裁剪和插值的方式對數(shù)據(jù)尺寸進(jìn)行規(guī)范化處理,形成一系列場景分區(qū)集合,為每個(gè)原始數(shù)據(jù)定義一個(gè)頭文件,記錄數(shù)據(jù)的關(guān)鍵信息;場景數(shù)據(jù)的實(shí)體由所述頭文件所指示。
優(yōu)選地,在內(nèi)存中維護(hù)一個(gè)包含每層選取的所需調(diào)度的場景分區(qū)索引文件,對于不參與細(xì)分過程的多叉樹節(jié)點(diǎn),以及細(xì)節(jié)層次選取過程中記錄父節(jié)點(diǎn)分辨率的信息節(jié)點(diǎn),不調(diào)度外存中對應(yīng)的場景分區(qū)。
本發(fā)明相比現(xiàn)有技術(shù),具有以下優(yōu)點(diǎn):
本發(fā)明提出了一種歷史文化遺產(chǎn)數(shù)字化展示方法,解決了傳統(tǒng)多層次模型存在的數(shù)據(jù)冗余及存儲和調(diào)度低效的問題,保證不同細(xì)節(jié)等級之間以及不同場景分區(qū)間的平滑過渡,既能夠?yàn)榈谌綉?yīng)用提供預(yù)先重建的離線大規(guī)模場景分層模型,也能夠集成在其它應(yīng)用中,提供實(shí)時(shí)3D場景重建。
附圖說明
圖1是根據(jù)本發(fā)明實(shí)施例的歷史文化遺產(chǎn)數(shù)字化展示方法的流程圖。
具體實(shí)施方式
下文與圖示本發(fā)明原理的附圖一起提供對本發(fā)明一個(gè)或者多個(gè)實(shí)施例的詳細(xì)描述。結(jié)合這樣的實(shí)施例描述本發(fā)明,但是本發(fā)明不限于任何實(shí)施例。本發(fā)明的范圍僅由權(quán)利要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細(xì)節(jié)以便提供對本發(fā)明的透徹理解。出于示例的目的而提供這些細(xì)節(jié),并且無這些具體細(xì)節(jié)中的一些或者所有細(xì)節(jié)也可以根據(jù)權(quán)利要求書實(shí)現(xiàn)本發(fā)明。
本發(fā)明的一方面提供了一種歷史文化遺產(chǎn)數(shù)字化展示方法。圖1是根據(jù)本發(fā)明實(shí)施例的歷史文化遺產(chǎn)數(shù)字化展示方法流程圖。
本發(fā)明首先基于根據(jù)歷史文化遺產(chǎn)場景重建及可視化的流程,將數(shù)字化展示系統(tǒng)劃分為資源模塊、場景模塊、渲染模塊和交互模塊,資源模塊用于對基礎(chǔ)元素和模型文件的管理。資源管理包括對資源的分類,數(shù)據(jù)文件解析,資源加載/卸載。支持多種不同的模型文件類型,包括二維紋理,材質(zhì),3D模型文件,并將模型文件處理成數(shù)據(jù)流提交給場景模塊。
資源模塊定義了資源抽象類,在該類中定義了資源的場景屬性和操作:資源的狀態(tài)、名稱、大小、組別。對于常用資源,采用了繼承資源抽象類的形式,通過資源抽象類提供公共接口,在具體類中實(shí)現(xiàn)特定方法。資源模塊定義了數(shù)據(jù)加載類,在處理大規(guī)模場景數(shù)據(jù)時(shí),直接將基礎(chǔ)元素發(fā)送場景分層模型重建進(jìn)程,由主處理器/圖形處理器協(xié)同處理來實(shí)現(xiàn)大規(guī)模場景數(shù)據(jù)的編碼傳輸與可視化。
場景模塊負(fù)責(zé)整個(gè)3D場景的重建、場景數(shù)據(jù)的編碼傳輸和場景漫游。將場景中所有的元素組織成場景樹進(jìn)行管理調(diào)度,每個(gè)模型是場景樹中的一個(gè)節(jié)點(diǎn),整個(gè)場景是根節(jié)點(diǎn),模型是葉子節(jié)點(diǎn)。場景模塊以資源模塊提交的數(shù)據(jù)流作為輸入,首先對紋理影像數(shù)據(jù)和3D進(jìn)行解析,重建其對應(yīng)的分層模型。在場景數(shù)據(jù)的分層模型之上,實(shí)施模型簡化。模型簡化根據(jù)場景分層模型的幾何特征重建其網(wǎng)格拓?fù)浣票硎?,在渲染時(shí)進(jìn)行視場判斷、細(xì)節(jié)層次選擇和可見性判斷。對處于視場之外的不可見面片進(jìn)行刪除。模型簡化以誤差度量作為控制條件重建模型的網(wǎng)格表示;此外,場景模塊還解析基礎(chǔ)場景,重建基礎(chǔ)場景分層模型,查找場景分層模型頂點(diǎn)索引,計(jì)算場景分層模型頂點(diǎn)拓?fù)?,?jì)算模型頂點(diǎn)誤差,根據(jù)誤差度量進(jìn)行網(wǎng)格頂點(diǎn)合并,重建原始網(wǎng)格的近似表示以及3D網(wǎng)格表面的平滑處理。上述工作完成之后,整個(gè)3D場景分層模型的簡化表示重建完畢,再對場景分層模型的頂點(diǎn)進(jìn)行拓?fù)潢P(guān)系索引和緩存,實(shí)現(xiàn)場景內(nèi)容的初步重建。
渲染模塊采用流程化設(shè)計(jì)架構(gòu)。在底層API的繼承類中實(shí)現(xiàn)光照渲染算法,用戶通過與該類交互實(shí)現(xiàn)渲染進(jìn)程。所有場景對象的渲染進(jìn)行到最終的光柵化之前,緩存頂點(diǎn)獲取索引數(shù)據(jù),實(shí)現(xiàn)頂點(diǎn)緩沖和索引緩沖。將場景模塊提交給渲染模塊的渲染對象送入到優(yōu)先級排序類中,將渲染狀態(tài)一致的對象進(jìn)行批處理渲染,然后對于場景的時(shí)空連貫性進(jìn)行統(tǒng)一平滑處理。
交互模塊對體感傳感器所采集的肢體動(dòng)作數(shù)據(jù)進(jìn)行預(yù)處理和特征提取,再進(jìn)行預(yù)測或者特征識別,利用識別到的體感姿勢,將場景分層模型傳送給各個(gè)圖形處理器節(jié)點(diǎn)來控制場景漫游和渲染。
本發(fā)明的方法首先對原始數(shù)據(jù)進(jìn)行分區(qū)存儲方式;然后基于場景的幾何特征,建立場景數(shù)據(jù)區(qū)的索引,并組織成多叉樹結(jié)構(gòu);通過多叉樹構(gòu)成支持大規(guī)模數(shù)據(jù)的場景分層模型。在運(yùn)行時(shí),渲染進(jìn)程將場景數(shù)據(jù)區(qū)索引讀入內(nèi)存,根據(jù)渲染節(jié)點(diǎn)選取策略調(diào)用選中的多叉樹節(jié)點(diǎn)集合,然后載入對應(yīng)原始場景數(shù)據(jù)。在運(yùn)行時(shí)調(diào)度過程中始終是輕量和快速的,能夠在不增加外存物理存儲的同時(shí),大大減少運(yùn)行時(shí)載入內(nèi)存的數(shù)據(jù)量,并降低內(nèi)外存交互操作頻率。
在提取并保留原始場景數(shù)據(jù)關(guān)鍵信息的前提下,將所有原始場景數(shù)據(jù)按統(tǒng)一格式進(jìn)行劃分和重組,通過裁剪和插值的方式對數(shù)據(jù)尺寸進(jìn)行規(guī)范化處理,形成一系列方形結(jié)構(gòu)場景分區(qū)集合。為每個(gè)原始數(shù)據(jù)定義一個(gè)頭文件,頭文件記錄該數(shù)據(jù)的關(guān)鍵信息,并指示了數(shù)據(jù)分區(qū)的子區(qū)數(shù)目、偏移、標(biāo)識符和坐標(biāo)。分層原始場景數(shù)據(jù)的實(shí)體是由頭文件所指示的、不同尺寸的一系列數(shù)據(jù)分區(qū)鏈?zhǔn)酱鎯稀?/p>
對于場景幾何特征變化劇烈的區(qū)域,通常需要較高分辨率的模型數(shù)據(jù)來模擬,另一方面,表面特征變化比較平緩的區(qū)域,則加大簡化粒度,而無需維護(hù)這兩個(gè)細(xì)節(jié)等級之間的過渡冗余數(shù)據(jù)。
對于本發(fā)明的每個(gè)數(shù)據(jù)分區(qū),以自頂向下的方式重建層次模型,最頂層為最低細(xì)節(jié)等級的層次,隨后逐步細(xì)分,最底層為分層場景數(shù)據(jù)。細(xì)分的過程通過計(jì)算表面特征來控制,將表面特征量化為對表面粗糙度的計(jì)算。表面特征變化復(fù)雜定義為表面粗糙度高,反之則定義為表面粗糙度低。表面粗糙度作為場景節(jié)點(diǎn)的一個(gè)評價(jià)因子,場景節(jié)點(diǎn)評價(jià)高于給定閾值,就不再增加該場景節(jié)點(diǎn)的分辨率,停止細(xì)分;否則,進(jìn)一步細(xì)分場景分辨率,并且保留多級細(xì)節(jié)層次索引,用于根據(jù)視點(diǎn)進(jìn)行場景數(shù)據(jù)調(diào)度。在運(yùn)行時(shí),選中多叉樹某個(gè)節(jié)點(diǎn),節(jié)點(diǎn)評價(jià)函數(shù)給出評價(jià)閾值,以決定對該節(jié)點(diǎn)進(jìn)行細(xì)分或合并操作,并根據(jù)所需的細(xì)節(jié)等級對外存中的原始分層場景分區(qū)數(shù)據(jù)進(jìn)行調(diào)度。
本發(fā)明在內(nèi)存中維護(hù)一個(gè)包含每層選取的所需調(diào)度的場景分區(qū)索引文件,對于不參與細(xì)分過程的多叉樹節(jié)點(diǎn),以及細(xì)節(jié)層次選取過程中記錄父節(jié)點(diǎn)分辨率的信息節(jié)點(diǎn),不調(diào)度外存中對應(yīng)的場景分區(qū),避免分辨率層次改變中的冗余數(shù)據(jù)調(diào)度。根據(jù)上述索引文件讀取分區(qū)存儲子模型中的頭文件,由頭文件記錄去調(diào)度外存中的對應(yīng)數(shù)據(jù)。分區(qū)調(diào)度和場景數(shù)據(jù)的更新操作都是通過級聯(lián)式的索引來實(shí)現(xiàn)的,不會給系統(tǒng)造成I/O阻塞。
在視覺平滑處理中,本發(fā)明實(shí)現(xiàn)對場景可視化中空間連貫性和時(shí)間連貫性的統(tǒng)一處理。結(jié)合不同的場景細(xì)節(jié)層次間的過渡與鄰接分區(qū)邊界的細(xì)節(jié)等級匹配關(guān)系,給頂點(diǎn)實(shí)時(shí)分配時(shí)間和空間的權(quán)值,確保在分區(qū)渲染過程中實(shí)現(xiàn)對同一分區(qū)內(nèi)部的不同分辨率細(xì)分等級間以及不同分區(qū)之間的時(shí)空連貫性。即從可視化處理的層面出發(fā),對畫面閃爍的消除統(tǒng)一到平滑權(quán)值的計(jì)算分配上來進(jìn)行。
假設(shè)兩個(gè)鄰接的場景分層模型為Ti和Ti+1,重建各自對應(yīng)的過渡分區(qū)T(α),使T(0)=Ti,T(1)=Ti+1,α是與時(shí)間狀態(tài)相關(guān)的連續(xù)變量,定義為平滑權(quán)值。當(dāng)進(jìn)行不同的細(xì)節(jié)等級切換時(shí),任意時(shí)刻頂點(diǎn)的空間位置表示為
V’=α·V+(1-α)·V0
其中V和V0為兩個(gè)不同細(xì)節(jié)等級的場景分層模型對應(yīng)的頂點(diǎn)空間位置。
令△V=V-V0以簡化計(jì)算,△V表示某級細(xì)節(jié)模型的頂點(diǎn)與其相鄰低分辨率模型中對應(yīng)頂點(diǎn)的空間位置差值;定義w=1-α為頂點(diǎn)的平滑權(quán)值,則可簡化表示為:
V’=V-w△V
對于平滑權(quán)值的計(jì)算,w=1-α根據(jù)時(shí)間控制參數(shù)和頂點(diǎn)所在的平面坐標(biāo)vg確定;若vg位于場景分層模型的過渡區(qū)域,則w=l(wn-wt)/h+wt;否則w=wt;其中h是過渡區(qū)域?qū)挾鹊亩攘浚琹是頂點(diǎn)vg到過渡區(qū)域內(nèi)邊界的距離;wt是時(shí)間控制的平滑權(quán)值;wn是反映相鄰場景分層模型細(xì)節(jié)等級關(guān)系的平滑權(quán)值。
wt的計(jì)算以某細(xì)節(jié)等級的整個(gè)場景分層模型為單位進(jìn)行,有:
wt=min((D-Dmin)/max(Dmax-Dmin),1)
D∈[Dmin,Dmax]為場景分層模型的包圍體上距觀察視點(diǎn)最近的點(diǎn)與觀察視點(diǎn)的距離。Dmin和Dmax是頂點(diǎn)過渡區(qū)間。在該區(qū)間內(nèi),wt為細(xì)節(jié)層次權(quán)值,控制場景分層模型隨著觀察視點(diǎn)的運(yùn)動(dòng)進(jìn)行細(xì)節(jié)等級的層次漸進(jìn),從而避免畫面中閃爍現(xiàn)象的產(chǎn)生。
為實(shí)現(xiàn)空間連貫性,確定邊界平滑權(quán)值wn:
d和dn表示場景分層模型及其鄰接模型的細(xì)節(jié)等級。若鄰接模型分辨率低于當(dāng)前模型的分辨率,則邊界平滑權(quán)值wn設(shè)定為1,這樣使得邊界頂點(diǎn)位置和鄰接較低細(xì)節(jié)等級模型的對應(yīng)位置完全相同。反之,若鄰接模型分辨率高于或等于當(dāng)前模型的分辨率,則wn設(shè)定為0。
在實(shí)現(xiàn)中,首先將調(diào)度的場景分層模型組織成頂點(diǎn)緩沖對象的形式,然后提交到圖形處理器的頂點(diǎn)著色器,進(jìn)行渲染和可視化過程中的視覺平滑處理。具體流程如下:
步驟1.對于每個(gè)頂點(diǎn)的網(wǎng)格坐標(biāo)vg,首先計(jì)算出細(xì)節(jié)層次權(quán)值wt和邊界平滑權(quán)值wn,提交給頂點(diǎn)著色器;
步驟2.計(jì)算出場景分層模型中頂點(diǎn)平滑權(quán)值w,同時(shí)對平滑權(quán)值進(jìn)行修正,以避免邊界權(quán)值參與頂點(diǎn)插值計(jì)算;
步驟3.通過修正后的頂點(diǎn)平滑權(quán)值,計(jì)算出當(dāng)前頂點(diǎn)空間坐標(biāo),進(jìn)行坐標(biāo)合成和觀察視點(diǎn)變換;
步驟4.輸出符合觀察坐標(biāo)系的頂點(diǎn)坐標(biāo),送交下一步的渲染處理。
本發(fā)明在大規(guī)模3D場景渲染的光照算法中,只對屏幕空間所選定的多叉樹節(jié)點(diǎn)執(zhí)行光線投射,進(jìn)行離散遍歷,遍歷終止的條件是獲取光線與場景分層模型采樣點(diǎn)的交點(diǎn)。針對該采樣點(diǎn),調(diào)入相應(yīng)的正射影像紋理進(jìn)行各向異性插值,所得到的像素值賦予該點(diǎn)并送入圖形渲染管線進(jìn)行渲染。這些像素的分布和幾何關(guān)系由場景多叉樹節(jié)點(diǎn)評價(jià)函數(shù)確定。這樣能避免對所有的分區(qū)都做一次相交測試,執(zhí)行的相交運(yùn)算大大減少,又能利用相鄰像素之間的相關(guān)性進(jìn)行圖形硬件加速。當(dāng)視點(diǎn)改變而引起射線方向變化時(shí),通過更新變換矩陣來快速調(diào)整光線矢量。這樣只需明確射線方程,就可以從頂點(diǎn)紋理中迅速確定交點(diǎn),無需再遍歷整個(gè)光線投射的渲染隊(duì)列,從而簡化了光線矢量隨視點(diǎn)改變的計(jì)算,進(jìn)一步提高了渲染性能。在頂點(diǎn)著色器中實(shí)現(xiàn)一個(gè)頂點(diǎn)求值函數(shù)作為底層渲染管線與上層應(yīng)用程序之間的調(diào)用接口,渲染器則通過頂點(diǎn)求值函數(shù)實(shí)現(xiàn)對待渲染數(shù)據(jù)的接收處理。這使得進(jìn)入圖形管線進(jìn)行渲染的頂點(diǎn)與上層應(yīng)用程序的輸入分離,渲染器作為獨(dú)立的程序完全在圖形處理器中實(shí)現(xiàn),與具體的應(yīng)用程序松散耦合。上層應(yīng)用只需要完成初始化配置,通過調(diào)用頂點(diǎn)求值函數(shù)提交相應(yīng)的數(shù)據(jù),即可實(shí)現(xiàn)快速渲染。
在網(wǎng)格表面平滑處理方面,本發(fā)明將頂點(diǎn)vi和頂點(diǎn)的全部光照L(vi)看作變量來求解能量函數(shù)最小化的解:
其中θ,η,是權(quán)重因子,用新的頂點(diǎn)vi’代替上一次的vi迭代求解上述能量最小化問題,直到兩次的差在預(yù)設(shè)閾值內(nèi)。
n(vi)為頂點(diǎn)vi的法向量,N為模型中頂點(diǎn)總數(shù);為頂點(diǎn)vi移動(dòng)之前的初始位置,為相應(yīng)法向量。
其中是頂點(diǎn)vi環(huán)鄰接頂點(diǎn)的均值,確保更新后的網(wǎng)格保持平滑。
其中E是網(wǎng)格中所有邊的集合,ci是頂點(diǎn)vi在圖像中對應(yīng)像素的平均強(qiáng)度。部分是強(qiáng)度誤差,用于測量算法計(jì)算的反射強(qiáng)度與捕獲的圖像平均強(qiáng)度之間的差;部分是梯度誤差,用于測量算法計(jì)算的反射光強(qiáng)度與捕獲的圖像平均強(qiáng)度之間的梯度。
對比初始和平滑調(diào)整后的重建模型,有一些初始模型上的頂點(diǎn)和可視外殼上的頂點(diǎn)位置接近,初始模型和平滑調(diào)整后的模型是正切的,則認(rèn)為這些滿足條件的頂點(diǎn)是和真實(shí)模型上頂點(diǎn)坐標(biāo)是一致的,將這些頂點(diǎn)標(biāo)識出來作為已知點(diǎn),在迭代過程中保持這些點(diǎn)的坐標(biāo)固定不變。依次對上述最小化問題增加新的約束,然后將所有頂點(diǎn)的一個(gè)子集作為最小化求解的變量,得到更精確的求解結(jié)果。
完成場景重建與實(shí)時(shí)渲染后,為進(jìn)一步提高用戶沉浸感交互體驗(yàn),在交互模塊中改進(jìn)現(xiàn)有的體感交互模式。首先對體感傳感器采集的動(dòng)作數(shù)據(jù)進(jìn)行預(yù)處理和特征提取,再進(jìn)行預(yù)測或者識別。以下實(shí)施例以構(gòu)造肢體特征向量間夾角方式對傳感器所提供肢體節(jié)點(diǎn)進(jìn)行特征表達(dá):
(1)對傳感器提供的位置相近的肢體節(jié)點(diǎn)進(jìn)行合并,將其簡化為15個(gè)肢體節(jié)點(diǎn)。(2)對用到的特征向量進(jìn)行構(gòu)造,肢體四肢節(jié)點(diǎn)上選取8組特征向量來表示。(3)選取相鄰特征向量間的夾角為特征表達(dá)。
肢體動(dòng)作識別包括肢體動(dòng)作表示、識別算法的選取、樣本訓(xùn)練、動(dòng)作匹配,具體步驟如下:
(1)將這五個(gè)漫游控制動(dòng)作表示為一段時(shí)間間隔內(nèi)的關(guān)鍵幀姿勢特征量的序列,包含平抬左手、平抬右手、拍手、向前走、向后退五個(gè)動(dòng)作。對于某一動(dòng)作具體表示方法為Act(ges1,ges2...gesn),其中g(shù)es為第i關(guān)鍵幀時(shí)肢體姿勢特征量,n為關(guān)鍵幀數(shù)。
(2)確定BP神經(jīng)網(wǎng)絡(luò)感知器的權(quán)值系數(shù)W=(wk1,wk2,...,wkm),使系統(tǒng)對一個(gè)特定的樣本X=(x1,x2,...,xm)產(chǎn)生期望值d,輸出yk為:
其中f()為激活函數(shù)。
1)對權(quán)值系數(shù)Wij設(shè)置非零隨機(jī)數(shù)。
2)輸入一個(gè)樣本X=(x1,x2,...,xn),以及相應(yīng)的期望輸出Y=(y1,y2,...,yn)。
3)求各層學(xué)習(xí)誤差dik,對于輸出層k=m:
dim=Xim(1-Xim)(Xim-Yi)
對于其他各層:
4)修正權(quán)值系數(shù)Wij,公式為:
Wij(t+1)=Wij(t)-λdikXik-1,0≤λ≤1
(3)識別每個(gè)動(dòng)作包含的n個(gè)連續(xù)肢體姿勢特征量表示,而每個(gè)姿勢特征量由u組肢體特征表達(dá)表示,將BP神經(jīng)網(wǎng)絡(luò)中輸入層的節(jié)點(diǎn)數(shù)設(shè)置為n×u個(gè);輸出層節(jié)點(diǎn)數(shù)即為需要識別的動(dòng)作個(gè)數(shù);再常由輸入層節(jié)點(diǎn)數(shù)與輸出層節(jié)點(diǎn)數(shù)估計(jì)隱含層節(jié)點(diǎn)數(shù),使用[-1,1]之間的隨機(jī)值來對權(quán)值參數(shù)和閾值進(jìn)行初始化。
(4)通過訓(xùn)練和測試構(gòu)造的最終的BP神經(jīng)網(wǎng)絡(luò)模型。
在特征識別完成之后,將場景分層模型通過網(wǎng)絡(luò)從主處理器傳送給各個(gè)圖形處理器節(jié)點(diǎn),使各個(gè)圖形處理器節(jié)點(diǎn)中各維持一份場景分層模型的副本;將初始虛擬投影參數(shù)配置文件通過網(wǎng)絡(luò)從主處理器傳送給各個(gè)圖形處理器節(jié)點(diǎn),使各個(gè)圖形處理器節(jié)點(diǎn)中各維持一份初始虛擬投影參數(shù)配置文件的副本;初始虛擬投影參數(shù)配置文件描述渲染3D場景時(shí)使用的虛擬投影的參數(shù);
加載場景分層模型,并根據(jù)初始虛擬投影參數(shù)配置文件的內(nèi)容設(shè)置光線跟蹤渲染程序的虛擬投影參數(shù);將渲染3D場景時(shí)使用的虛擬投影的整個(gè)畫面像素區(qū)域分為N塊,將每塊視為一個(gè)子區(qū)域,N個(gè)子區(qū)域與N個(gè)圖形處理器節(jié)點(diǎn)一一對應(yīng),所有子區(qū)域拼接在一起即構(gòu)成完整的虛擬投影的畫面像素區(qū)域;對N個(gè)圖形處理器節(jié)點(diǎn)中的每一個(gè),確定每個(gè)子區(qū)域的起始行號、結(jié)束行號、起始列號和結(jié)束列號,并利用子區(qū)域與圖形處理器節(jié)點(diǎn)的一一對應(yīng)關(guān)系,將從所有圖形處理器節(jié)點(diǎn)發(fā)來的像素顏色值拼接成完整的虛擬投影的畫面,并將該畫面顯示在顯示器上;
利用體感傳感器獲取參與用戶的景深數(shù)據(jù),令VR1表示從右臂關(guān)節(jié)指向右手關(guān)節(jié)的向量,令VR2表示從右臂關(guān)節(jié)指向右肩關(guān)節(jié)的向量;令VL1表示從左肩關(guān)節(jié)指向左臂關(guān)節(jié)的向量,令VL2表示從肩中央關(guān)節(jié)指向腰關(guān)節(jié)的向量,令VL3表示從左手關(guān)節(jié)指向左臂關(guān)節(jié)的向量;令RB等于VR1與VR2的夾角;令LB等于VL1與VL2的夾角,令LA等于VL1與VL3的夾角;讀取體感傳感器輸出的連續(xù)的30幀參與用戶的景深數(shù)據(jù),判斷其中是否存在一幀景深數(shù)據(jù)滿足:根據(jù)對景深數(shù)據(jù)的追蹤結(jié)果計(jì)算得到的RB小于30度;如果滿足,判斷其中是否存在一幀景深數(shù)據(jù)滿足:根據(jù)對景深數(shù)據(jù)的追蹤結(jié)果計(jì)算得到的LB大于80度,且根據(jù)對景深數(shù)據(jù)的追蹤結(jié)果計(jì)算得到的LA大于130度;如果仍然滿足,則對每個(gè)圖形處理器節(jié)點(diǎn),將3D場景中的與用戶進(jìn)行交互的場景資源朝著虛擬投影所在位置平移一個(gè)大小為STATUS×ΔL的位移,ΔL表示平移長度,為大于零的實(shí)數(shù),變量STATUS是從主處理器發(fā)給圖形處理器節(jié)點(diǎn)的標(biāo)志位;其中,STATUS=1表示與用戶進(jìn)行交互的場景資源被平移后更靠近虛擬投影所在位置,STATUS=-1表示與用戶進(jìn)行交互的場景資源被平移后更遠(yuǎn)離虛擬投影所在位置,STATUS=0表示與用戶進(jìn)行交互的場景資源位置不變。
綜上所述,本發(fā)明提出了一種歷史文化遺產(chǎn)數(shù)字化展示方法,解決了傳統(tǒng)多層次模型存在的數(shù)據(jù)冗余及存儲和調(diào)度低效的問題,保證不同細(xì)節(jié)等級之間以及不同場景分區(qū)間的平滑過渡,既能夠?yàn)榈谌綉?yīng)用提供預(yù)先重建的離線大規(guī)模場景分層模型,也能夠集成在其它應(yīng)用中,提供實(shí)時(shí)3D場景重建。
顯然,本領(lǐng)域的技術(shù)人員應(yīng)該理解,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算系統(tǒng)來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算系統(tǒng)上,或者分布在多個(gè)計(jì)算系統(tǒng)所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算系統(tǒng)可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲在存儲系統(tǒng)中由計(jì)算系統(tǒng)來執(zhí)行。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
應(yīng)當(dāng)理解的是,本發(fā)明的上述具體實(shí)施方式僅僅用于示例性說明或解釋本發(fā)明的原理,而不構(gòu)成對本發(fā)明的限制。因此,在不偏離本發(fā)明的精神和范圍的情況下所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。此外,本發(fā)明所附權(quán)利要求旨在涵蓋落入所附權(quán)利要求范圍和邊界、或者這種范圍和邊界的等同形式內(nèi)的全部變化和修改例。