<listing id="vjp15"></listing><menuitem id="vjp15"></menuitem><var id="vjp15"></var><cite id="vjp15"></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><menuitem id="vjp15"></menuitem></video></cite>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<menuitem id="vjp15"><strike id="vjp15"></strike></menuitem>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"></strike></var>
<var id="vjp15"></var>
<var id="vjp15"></var>
<var id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></var>
<menuitem id="vjp15"></menuitem><cite id="vjp15"><video id="vjp15"></video></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></cite>
<var id="vjp15"></var>
<var id="vjp15"></var>
<menuitem id="vjp15"><span id="vjp15"><thead id="vjp15"></thead></span></menuitem>
<cite id="vjp15"><video id="vjp15"></video></cite>
<menuitem id="vjp15"></menuitem>

一種gpu上多層形狀特征融合的可視化方法

文檔序號:6515744閱讀:622來源:國知局
一種gpu上多層形狀特征融合的可視化方法
【專利摘要】本發明提出一種GPU上多層形狀特征融合的可視化方法。本發明的方法采用基于多級深度測試策略的改進k-buffer算法進行多片元的排序和收集,在此多層片元上進行幾何特征提取并結合非真實感繪制方法,形成風格化的多片元繪制技術,可以展現出單個模型或者大規模場景中多個模型前后以及中間多層幾何表面上的形狀特征。通過模型多層表面上的形狀特征,既可以表現多種透明、半透明物體的風格化繪制效果,又可便于用戶觀察模型的表面結構特征。實現起來只需在對模型場景在GPU中進行兩遍幾何繪制就可以獲得很好的風格化特征可視化效果,并可以達到實時速率。
【專利說明】—種GPU上多層形狀特征融合的可視化方法
【技術領域】
[0001]本發明涉及一種GPU上的模型可視化方法,具體涉及一種在GPU上進行多層表面形狀特征提取并以半透明/透明模式對多層特征進行風格化融合繪制的可視化方法,屬于計算機圖形學與可視化領域。
【背景技術】
[0002]非真實感/ 風格化繪制(Non-photorealistic or Stylized Rendering)是計算機圖形學與可視化的一大重要的研究領域,不同于真實感繪制力求對場景效果最真實的模擬,非真實感繪制常用于模擬一些藝術效果或有特定應用的效果,如卡通畫、鉛筆畫、水彩畫、科技插圖等。其常用方法是對場景信息進行視覺抽象,放棄不必要的細節,集中提取和描繪三維模型表面的主要形狀特征,如輪廓線(silhouettes/contours)和模型表面的脊線(ridges)、谷線(valleys)等。現有的非真實感繪制技術大都表現的是不透明物體的非真實感效果,即只提取模型上離視點最近的一層表面的形狀信息并進行風格化繪制,后面被遮擋的各層表面的形狀信息則被忽略,無法觀察到。目前有少數非真實感繪制方法可以展現物體多層的形狀特征及風格化繪制效果,如非真實感的體繪制(VolumeIllustration)是一類研究問題,但是僅限于對體數據模型的繪制。
[0003]多片元繪制
[0004]在模型的透明、半透明效果的繪制過程中,需要保證前后每層表面的顏色是按照正確的順序(如從后往前)融合在一起的,然而三角面片送入圖形流水線和光柵化產生片元的過程都是亂序的,所以就需要對三角形或片元按照深度值大小排序,以保證正確的融合順序,這類問題稱為順序獨立的透明效果(order-1ndependent transparency)(具體可參見 EVERITT, C.2001.1nteractive order-1ndependent transparency.Tech.rep., NVIDIACorporation.)問題。多片元(mult1-fragment)繪制技術是繪制順序獨立的透明效果的一類常用技術,它在每個像素處收集多層表面上的片元,對這些片元按深度值大小排序,然后按順序融合。除了透明現象,多片元技術還可用于體繪制(volume rendering)、體素構造表
7]\ (constructive solid geometry)等多種效果的繪制。
[0005]典型的多片元技術源于(具體可參見CARPENTER L.: The A-buffer, anantialiased hidden surface method.SIGGRAPH Comput.Graph.18, 3(1984),103 - 108.)提出的A-buffer的概念,其思想是在每個像素處建立一個片元列表,收集該像素處的所有片元,然后對片元列表內的片元排序;理論上每幀只需繪制一遍集合場景;但由于每個像素處的片元總數是無法確定的,所以也無法確定該為每個像素分配多少內存,因此在當時的GPU上無法實現。后來的R-buffer (具體可參見WITTENBRINK C.M.:R-buffer:apointerless a-buffer hardware architecture.1n HffffSJ 01: Proceedingsof the ACM SIGGRAPH/EUROGRAPHICS workshop on Graphics hardware (NewYork, NY, USA, 2001),ACM, pp.73 - 80.) , F-buffer (具體可參見 MARK ff.R.,PR0UDF00TK.:The f-buffer:a rasterization—order fifo buffer for mult1-pass rendering.In HWWS’01:Proceedings of the ACM SIGGRAPH/EUROGRAPHICS workshop on Graphicshardware (New York, NY, USA, 2001), ACM, pp.57 - 64.) , FreePipe (具體可參見 LIU
F., HUANG M.-C., LIU X.-Η., WU Ε.-H.:Freepipe:a programmable parallel renderingarchitecture for efficient mult1-fragment effects.1n I3D’ 10:Proceedingsof the2010ACM SIGGRAPH symposium on Interactive3D Graphics and Games(NewYork, NY, USA, 2010), ACM, pp.75 - 82.)是一些對圖形渲染流水線的改進方法,使其可應用A-buffer算法,但不適用于標準的圖形渲染流水線。(具體可參見MAMMEN, A.1989.Transparency and antialiasing algorithms implemented with the virtual pixelmaps technique.1EEE Computer Graphics and Applications9, 4, 43 - 55.) 和(具體可參見 EVERITT, C.2001.1nteractive order-1ndependent transparency.Tech.rep., NVIDIA Corporation.)分別提出及實現了深度剝離算法,此方法通過繪制多遍幾何場景,每遍繪制時分離出離視點最近一層的片元,最終達到多片元排序的效果;此算法對于層次復雜度為N的幾何場景需要繪制N遍,所以效率不高。(具體可參見BAVOILL., M YERS K.:Order independent transparency with dual depth peeling.Tech.rep.,NVIDIA Corporation, 2008.)提出的雙層深度剝離算法是對深度剝離算法的改進,每次幾何場景繪制可分離出最近和最遠兩層片元,效率是深度剝離算法的兩倍,仍需繪制多遍幾何場景。(具體可參見 MYERS, K.,BAV0IL,L.2007.Stencil routed A-Buffer.ACM SIGGRAPH2007Technical Sketch Program.)提出使用 DirectXlO 的多重采樣抗鋸齒緩存(Mult1-sample antialising)模擬A-buffer算法,但每遍場景繪制只能在每個像素處收集有限數量的片元,所以要收集齊所有片元仍需要繪制多遍幾何場景。(具體可參見 BAV0IL,L.,CALLAHAN, S.P.,LEF0HN, A.,A0L.D.C0MBA, J.,ANDSILVA, C.T.2007.Mult1-fragment effects on the GPU using the k-buffer.1n Proceedings ofthe2007symposium on Interactive3D graphics and games, 97 - 104.)提出 k-buffer算法,這是一種近似的A-buffer算法,在GPU上為每個像素分配固定大小的內存,繪制時在每個像素處固定收集至多k個片元,因此可以由單遍場景繪制完成,只是會忽略超出前k層的片元;此方法的問題在于有可能發生片元讀寫沖突,使繪制效果不準確。(具體可參見 Liu F,H`uang MC, Liu XH, Wu EH: Single Pass Depth Peeling viaCUDA Rasterizer.ACM SIGGRAPH2009Technical Talks.)中使用 CUDA 的原子操作解決了 k-buffer的片元讀寫沖突問題,但需要在CUDA編寫的渲染器上實現。(具體可參見 LIU F., HUANG M C., LIU XH.,WU EH.!Efficient depth peeling via bucket sort.1n HPGj 09!Proceedings of the Conference on High Performance Graphics2009(NewYork, NY, USA, 2009),ACM, pp.51 - 57.)提出基于桶排序的片元排序方法,此方法效率較快,只需單遍幾何場景繪制,但有可能發生桶內片元沖突,這時需采用多遍繪制或自適應劃分的方法減少桶內片元沖突的概率。微軟公司在其推出的DirectXll圖形與媒體規范中實現了 A-buffer算法,他們在GPU的緩沖區對象(buffer)中連續為每個像素分配一個存儲所有片元的數組空間,但由于像素處的片元總數仍然是無法預先確定的,所以此方法需要繪制兩遍幾何場景,第一遍場景繪制用于累計每個像素的片元總數,從而計算每個像素的片元數組在緩沖區中的偏移位置(offset),第二遍場景繪制則實際收集各像素處的所有片元到片元數組中。(具體可參見 YANG, J.,HENSLEY, J.,GROUN, H.,ANDTHIBIER0Z, N.2010.Real-time concurrent I inked list construction on the gpu.1n renderingTechniques2010:Eurographics Symposium on Rendering, Eurographics,vol.29)則采用并發鏈表(concurrent linked-list)的方法實現了 A-buffer算法,對每個像素處的所有片元構造一個鏈表存儲,這樣就無需實現知道每個像素的片元總數,只需單遍幾何場景繪制即可完成;此方法的問題在于鏈表結構不方便隨機存取任意片元,且存儲鏈表結點指針要占用一定空間。[Microsoft2010]和(具體可參見YANG, J., HENSLEY, J., GRllUN, H., ANDTHIBIEROZ, N.2010.Real-time concurrent linkedlist construction on the gpu.1n rendering Techniques2010:Eurographics Symposiumon Rendering, Eurographics, vol.29)的方法也都借助了較新GPU支持的原子操作功能。
[0006]非真實感/風格化繪制
[0007]非真實感/風格化繪制實現的效果和使用的方法種類繁多,其中一大類常用的方法就是提取模型的形狀特征,包括輪廓線(silhouettes/contours)和模型表面的脊線(ridges)、谷線(valleys)等。具體提取形狀特征的方法又可分為基于幾何空間(object-space)的和基于圖像空間(image-space)的。
[0008]基于幾何空間的方法通常通過微分幾何計算分析模型表面上的不連續性,以及模型和背景的分界等,如提示性輪廓線(suggestive contours)(具體可參見DeCarloD., Finkelstein A., Rusinkiewicz S., and Santella A., “Suggestive contoursfor conveying shape,” in Proceedings of ACM SIGGRAPH,2003,pp.848 - 855.)、脊谷線(ridge-valley lines)(具體可參見 Ohtake Y., Belyaev A., and SeidelΗ., Ridge-valley lines on meshes via implicit surface fitting, in Proceedingsof ACM SIGGRAPH,2004,pp.609 - 612.)、高亮線(highlight lines)(具體可參見DeCarlo D.and Rusinkiewicz S., “Highlight lines for conveying shape,,,inProceedings of NPARj 2007,pp.63 - 70.)、明顯脊線(apparent ridges)(具體可參見 Judd T., Durand F., and Adelson E., “Apparent ridges for line drawing,,,inProceedings of ACM SIGGRAPH,2007.)、PELs (photic extremum lines)(具體可參見Xie X., He Y., Tian F., Seah H.S., Gu X., and Qin H., “An effective illustrativevisualization framework based on photic extremum lines (PELs),,,IEEE Transactionson Visualization and Computer Graphics,vol.13,n0.6,pp.1328 - 1335,2007.)、劃分曲線(demarcating curves)(具體可參見 Kolomenkin Μ.,Shimshoni 1.,andTal A., “Demarcating curves for shape illustration,,,ACM Transactions onGraphics, vol.27,n0.5,2008.)、拉普拉斯線(LapIacian lines)(具體可參見 Zhang L,HeY., Xia J.Z., Xie X.X., Chen I , “Real-Time Shape Illustration Using LaplacianLines,,,IEEE Transactions on Visualization and Computer Graphics, Vol.17, N0.7,pp.993 - 1006,2011.)等。這些方法通常通過計算模型表面屬性的二階或三階導數產生形狀特征,當模型網格復雜時耗時比較大,尤其是計算三階導數的方法,較難達到實時速度。另外,基于幾何空間的方法還面臨考慮多重細節層(LODs,levels of detail)的問題,即特征線的數量、密度需根據觀察距離遠近作適應性調整。一些方法通過在預處理階段生成簡化網格來解決此問題(具體可參見JEONG K.,NI A., LEE S.,and MARKOSIAN L.2005.Detail control in line drawings of3D meshes.The Visual Computer21,8-10(September),698 - 706.Special Issue of Pacific Graphics2005.)(具體可參見 NI A., JEONGK.,LEE S., and MARKOSIAN L.2005.Mult1-scale line drawings from3D meshes.Tech.Rep.CSE-TR-510—05,Department of Electrical Engineering and ComputerScience,University of Michigan, July.)。
[0009]基于圖像空間的方法通常通過在圖像空間檢測一些場景屬性如深度值、物體 ID (具體可參見 SAIT0,T.,and TAKAHASHI, T.1990.Comprehensible renderingof3-d shapes.1n ACM SIGGRAPH’90,197 - 206.)、(具體可參見 HERTZMANN,A.1999.1ntroduction to3D Non-Photorealistic Rendering:Silhouettes and Outlines.1nACM SIGGRAPH99Course Notes.Course on Non-photorealistic Rendering, S.Green, Ed.ch.7.)、法向量(具體可參見DECAUDIN,P.1996.Cartoon looking rendering of3D scenes.Research Report2919, INRIAj June.)、(具體可參見 NIENHAUS,M.,and D0LLNER,J.2005.Blueprint Rendering and Sketchy Drawings.1n GPU Gems IIj M.Pharr,Ed.Addison-Wesley Professional, 235 - 252.)等的不連續性來得到形狀特征信息。基于圖像空間的方法天然地適合于產生LODs,因為檢測出的特征線的數量和密度依賴于3D物體投影到視口上的面積。基于圖像空間的方法還無需對模型網格進行復雜的微分幾何計算,計算時間只依賴于生成圖像的分辨率,因此速度較快,可以達到實時速度。然而,基于圖像空間的方法由于是在像素級別計算的,所以不利于根據模型的幾何空間屬性對特征線進行風格化繪制,而且容易產生像素級別的人工痕跡(pixel-level artifacts)。
[0010]多層非真實感繪制
[0011]目前有少數非真實感繪制方法可以展現物體多層的形狀特征及風格化繪制效果。如非真實感的體繪制(Volume Illustration)是一類研究問題,可以展現體數據模型內部空間的多層的形狀特征。如基于體數據的特征光暈(feature halos)(具體可參見SvakhineN.A.and Ebert D.S., “Interactive volume illustration and feature halos.,,inPacific Graphics,2003,pp.347 - 354)、線條幽(line drawings)(具體可參見 BurnsM.,Klawe J.,Rusinkiewicz S.,Finkelstein A.,and DeCarlo D.,“Line drawings fromvolume data,,,in Proceedings of ACM SIGGRAPH,2005,pp.512 - 518.),以及(具體可參見 Ebert D.and Rheingans P., “Volume iIlustration:non-photorealistic renderingof volume models,” in Proceedings of IEEE Visualization,2000,pp.195 - 202.)、(具體可參見 Nagy, Z.Schneider J., and Westermann R., “Interactive volumeillustration.,,in VMV,2002,pp.497 - 504.)、(具體可參見 Schein S.and Elber
G.,“Adaptive extraction and visualization of silhouette curves from volumetricdatasets, ” Vis.Comput.,vol.20,n0.4,pp.243 - 252,2004.)、(具體可參見 BrucknerS.and Groller M.E., “VolumeShop:An interactive system for direct volumeillustration, ” in IEEE Visualization2005, pp.671 - 678.)、(具體可參見 Chen W.,LuA., and Ebert D.S., uShape-aware volume illustration,,,in Computer GraphicsForum (Proceedings of Eurographics2007), vol.26, n0.3, 2007, pp.705 - 714.)、(具體可參見 Svakhine N.A.,Ebert D.S.,and Andrews W.M.,“Illustration-1nspired depthenhanced volumetric medical visualization,,,IEEE Transactions on Visualizationand Computer Graphics, vol.15,n0.1,pp.77 - 86,2009.)的工作等。由于體數據模型天然地根據體素在三維空間中的位置順序進行組織,所以在融合物體前后各表面的形狀特征及風格化效果時,無需再進行深度排序,可以自然地按從前往后或從后往前的順序融合。但對于沒有按位置順序組織的模型數據而言,則需要考慮對模型前后各表面的融合順序問題。

【發明內容】

[0012]本發明基于任意多邊形網格模型,多邊形網格就是一個多面體形體的外表面,是由頂點、便和面構成的一個集合。多邊形網格包含了網格頂點的幾何位置信息和網格的拓撲關系(該拓撲關系的數學定義又稱為廣義單純復形,需要滿足6個條件,由集合三元組K= (V, E, F)表示),結合了多片元繪制技術和非真實感繪制技術。使用多片元技術對模型表面上的片元按深度順序排序,提取模型各層表面的形狀描述符表示的形狀特征,然后再按順序融合各表面的形狀信息,形成結合多種透明、半透明風格化效果的可視化。本發明后續內容中所述“三角網格”是多邊形網格的一種,其定義為對于廣義單純復形K=(V,E, F),如果F中的所有面都有三角形,則K為三角單純復形,即三角網格。由于三角網格圖形與可視化處理中最常用的模型,本發明就以三角網格為例,陳述發明的相關內容,本發明中所有針對三角網格所實現的技術和相關內容,同樣適用于多邊形網格。
[0013]本發明的技術方案如下:
[0014]整個發明的思想是首先使用基于多級深度測試策略的改進k-buffer算法進行多片元的排序和收集,同時把計算形狀描述符Apparent Relief所需的主曲率和法向作為片元屬性存入k-buffer ;然后,找到片元的存儲位置不連續但是對應三維網格表面空間連續的片元并進行連接,在模型每一層表面的片元上進行Apparent Relief的卷積計算;最后根據卷積結果繼續計算出多層片元的Apparent Relief形狀描述符,并將其用于與多層特征展示相關的半透明或者透明物體的多種非真實感繪制效果生成。
[0015]本發明中多層形狀特征融合的可視化方法開始執行之前需要一個額外的預處理。預處理過程通過計算三角網格每個頂點的主曲率kl,k2,由于計算結果是視線無關的,所以在繪制循環開始前計算一次即可。
[0016]本發明一種GPU上多層形狀特征融合的可視化方法,其步驟包括:
[0017]I)對待可視化的多邊形網格表示的模型或場景,獲得任意觀察空間中所述網格模型中三角網格每個頂點上的主曲率kl,k2 ;
[0018]2)根據基于多級深度測試策略的改進的k-buffer算法將紋理綁定為圖像單元,通過進行第一遍GPU幾何繪制,實現收集所述網格模型中多層表面上的片元信息,同時將所述片元信息排序并將深度值z按順序通過原子比較操作存入k-buffer (z)中;所謂幾何繪制是指僅僅繪制模型的幾何信息(包含頂點幾何坐標,以及由頂點的拓撲連接關系所代表的面,不包含進行光照、明暗處理、紋理映射等操作,也不考慮模型表面的材質屬性等),是最基本的繪制。
[0019]3)根據基于多級深度測試策略的改進k-buffer算法將紋理綁定為圖像單元,通過進行第二遍GPU幾何繪制,實現再次收集所述網格模型中多層表面上的片元信息。通過在所述k-buffer (z)中查找深度值z相等的項判斷此片元在k-buffer中的位置,再將該步驟中所述片元的觀察空間中法向的前兩個分量nl,n2,主曲率kl,k2存入k-buffer (nl, n2, kl, k2)的相應位置完成第二遍GPU幾何繪制;[0020]4)在GPU中使用GPU圖像級繪制來標識所述k-buffer (nl, n2, kl, k2)中每個片元的上、下、左、右四個幾何表面鄰接片元分別在k-buffer中的所在的分層層號并將四個層號保存在紋理中,鏈接所述k-buffer中深度值z排序位置不連續但是幾何相鄰的片元;所謂圖像級繪制是指在一個繪制的過程中并不處理三維的幾何圖元信息,而是在片元處理器或者像素處理器中直接針對每個像素進行并行的處理,故稱為圖像級繪制。
[0021]5)在GPU中采用兩遍GPU圖像級繪制依次對每層鏈接后片元的nl,n2, kl, k2進行X方向上的卷積和I方向上的卷積,計算出多層片元的形狀描述符,使得分布存儲在不同片元層次但是幾何連續的形狀特征都能夠提取出來并相連構成完整的形狀描述(現有技術中的Apparent relief方法只能計算單層片元的形狀描述符);
[0022]6)根據多層形狀描述符提取的結果進行多層片元的非真實感/風格化繪制,實現各種效果的具體渲染后輸出可視化結果。
[0023]所述基于多級深度測試策略的改進的k-buffer算法,算法基本原理是通過把紋理對象綁定為紋理圖像單元,采用原子操作函數在著色器程序中對紋理顯存執行多種原子性的讀-修改-寫操作(本算法中的片元級插入排序操作即屬于其中的一種原子操作);當一個著色器線程對一個存儲位置執行原子操作時,其他著色器線程將無法訪問此位置,直到整個讀寫操作完成。
[0024]更進一步,基于多級深度測試策略的改進k-buffer算法的在GPU中的具體實現步驟如下:
[0025]I)先將k-buffer中的所有項初始化稱為一個可能的最大深度值,由于原子操作僅支持32位整型數據,將深度值z編碼成32位無符號整數;
[0026]2)光柵化階段對每個片元進行處理,設當前新片元的深度值為Z(l,k-buffer中對應像素位置的深度值存儲形式為一維線性數組,將Zci依次和k-buffer中對應像素位置的每一項的深度值z進行整數比較;
[0027]3)若zQ大于k-buffer中對應像素位置的當前項一維數組中存儲的深度值Zi,則該數組項內存儲的深度值Zi保持不變,用Ztl繼續和一維數組元素的下一項Zi+1比較;如此循環比較,直到Ztl小于某一項的深度值Zk時,把新片元的深度值Ztl插入了該數組項位置,而讀出該數組項的原值Zk,即交換了 Zci和一維數組中的數組項Zk的值;
[0028]4)繼續用新的Ztl值和后續的數組元素zk+1進行整數比較,由于k-buffer中該對應像素位置存儲的一維線性數組中存儲的值本身就是按照從小到大的順序進行排序的,所以以后的每次比較操作的結果都是Z0小于當前數組元素的Z值,因此算法會交換這兩個深度值;本步驟會進行指導遇到一個空的數組元素(即原子操作的返回值是初始化時的最大深度值),或者到達數組末尾,則循環結束。
[0029]5)如果直到循環結束都沒有找到能插入新片元的位置,則k-buffer已滿且新片元的深度值大于所有已存深度值,新片元不會被存入k-buffer ;同時所述元著色器的末尾丟棄該片元,不再將任何信息寫入幀緩沖區。
[0030]更進一步,所述GPU圖像級繪制來標識每個片元的上、下、左、右四個幾何表面鄰接片元分別在k-buffer中的分層層號并將這四個層號保存在紋理中的具體操作方法如下:
[0031]I)繪制一個視口大小的矩形,在片元著色器中,計算匹配當前像素的k-buffer里每個片元的四個幾何表面鄰接片元的層號;
[0032]2)匹配采用一種近似方法,設定一個深度差閾值thresh Δ Z,當相鄰像素上的某個片元和當前片元的的深度差小于這個閾值時,就認為這兩個片元在模型表面上是相連的;
[0033]3)如果相鄰像素處有兩個以上的片元和當前片元的深度差小于threshAZ,則可取深度差最小的一個或層號最接近的一個;如果沒有片元和該片元的深度差小于thresh Δ Z,則認為該片元在此方向上沒有鄰接片元,即它處于模型的輪廓處,層號記為_1。
[0034]4)對于每個片元,每個方向上的鄰接片元的層號可用Sbit存儲,上下左右四個方向可用32bit存儲,每個像素處需存儲最多k個片元,使用MRT技術將它們保存在一組紋理中。
[0035]更進一步,所述步驟5)中,分別進行X方向上的一維卷積和Y方向上的一維卷積,
[0036]I)第一遍在X方向上卷積時,對于當前片元根據上一步記錄的幾何表面鄰接片元層號,首先找到左邊的鄰接片元fleftl,然后再找到fleftl左邊的鄰接片元fleft2 ;`[0037]2)按照步驟I)依次類推,可以找到一串相連的片元,直到到達卷積核的邊界或某個片元沒有左鄰接片元為止,將第一遍卷積的結果利用MRT技術存儲在一組浮點型的紋理里,供第二遍卷積使用;
[0038]3)在y方向上的卷積時,先從中心往上鏈接每層片元同時加權到卷積結果,然后再從中間往下進行同樣操作;
[0039]4)在第二遍中采用當前像素處每個片元的卷積結果,計算出每個片元的形狀描述符。
[0040]更進一步,所述形狀描述符Apparent Relief為一個二維向量^的方向描述了模型表面的凹凸性質而^的長度描述了模型表面的彎曲程度,?的計算過程如下:
[0041]I)在模型空間計算;?的方向3即曲面的凹凸性質,算法首先計算出三角網格頂點的曲面主曲率kl和k2,令kl和k2分別對應于兩個坐標軸,向量I = <kl, 的方向即tTs的方向;
[0042]2)在圖像空間計算;J的長度L即曲面的彎曲程度,在圖像空間內計算法向在像素鄰域內的變化率,計算出的彎曲程度是視線相關;
[0043]3)結合—的方向5 = 和長度L,得到--
?S/I人 IS 二 D* L。
[0044]可優選地,所述多層的非真實感/風格化繪制在第二遍片元繪制處理中同時完成,通過結合透明、半透明效果的繪制方法,和Apparent Relief形狀描述符的非真實感繪制方法,實現了多種可以表現模型多層形狀特征的可視化效果。
[0045]對于某個像素,先計算其每層片元在該層表面上表現出的非真實感效果的顏色值,然后根據透明、半透明效果的繪制規律,將前后各層片元的非真實感效果的顏色值融合起來,最終得到結合了透明、半透明效果的多層非真實感繪制效果。
[0046]使用Apparent Relief形狀描述符實現風格化效果的方法是根據繪制風格定義一個叫做ARM (Apparent Relief Map)的紋理,并用形狀描述符的二維向量^作為紋理坐標讀
取紋理值(把$每個分量的值從[-1,I]映射到[O,I]以作為紋理坐標),讀到的紋理值可
以直接作為風格化繪制效果,也可以作為中間值,用于實現最終的風格化效果。
[0047]可優選地,通過突出展現模型前后多層表面的形狀特征,使用戶可以更好的觀察一個模型的結構,所述ARM在模型的形狀特征突出處(邊緣處、凹凸明顯處等)取值為1,而在模型表面的平坦處取值為0,所以用這個ARM可以很好地突出模型的形狀特征,而過濾掉平坦的部分。對于每層片元,從ARM讀出的紋理值作為其顏色的透明度α值,用預先設定的顏色作為其顏色的RGB值,這樣特征突出的位置繪制出的就是不透明的特定顏色,而不需要突出特征的位置繪制出就是完全透明的顏色;然后,本發明中用透明效果繪制中的α -混合的計算方法,按深度順序從后向前融合各層片元的NPR顏色,得到最終的繪制結果。本發明中還可以疊加模型本身光照的透明效果形成優選可視化方案1,如圖3 (a)—圖3 (c)所示是采用優選可視化方案I所生成的透明模型光照和特征融合效果圖。
[0048]可優選地,本發明中也可以用突出形狀特征的方法強化半透明效果的繪制。繪制了模型的半透明效果,本發明中使用亮色高亮最近一層表面的形狀特征,而使用黑色強化后面各層表面的形狀特征。在模擬半透明效果時,本發明中只考慮光線在半透明物體中的吸收,忽略散射效果。通過Beer-Lambert定律Ia=exp (-σ t, I)模擬半透明現象的環境光顏色,其中σ t是吸收系數,I是光在物體介質中穿過的距離,I可以通過累加每兩個相鄰層片元間的深度差求得。如果考慮到入射光線在物體表面的衰減,可以使用Schlick方程近似模擬Fresnel系數:Ft=1-(Ι-cos Θ )5,其中Θ是入射角,累積各表面的Fresnel系數并作用于環境光亮度Ia可模擬Fresnel現象。最后將半透明效果的顏色和各表面形裝特征處的顏色相融合,得到強化了形狀特征的半透明繪制效果形成優選可視化方案2,如圖4 (a)-圖4 (c)所示是采用優選可視化方案2所生成的半透明模型和特征融合效果圖。
[0049]可優選地,還可以通`過此系統實現其他的一些透明外觀的藝術風格化繪制效果。本發明中實現了兩種透明形式的卡通效果。本發明中計算出每層片元的卡通效果的顏色,然后再將各層卡通效果的顏色值用α-混合的方法融合起來,每層片元的透明度α值可用類似上一例的方法獲得,由于卡通效果在模型表面平坦的地方也是有顏色的,所以α值的下限可以設為一個大于O的值,以上形成優選可視化方案3,如圖5和圖6都是采用優選可視化方案3所生成的透明卡通風格化效果圖。
[0050]有益效果:
[0051]本發明提出一種完全在GPU上通過多層形狀特征提取并進行多層片元融合進行繪制的風格化可視化方法。本發明的方法結合現有的非真實感繪制技術和多片元繪制技術,可以展現出一個模型或者大規模場景中多個模型前后以及中間多層表面上的形狀特征。應用模型多層表面上的形狀特征,既可以表現多種透明、半透明物體的風格化繪制效果,又可便于用戶觀察模型的空間結構特征。實現起來只需在對模型場景中進行兩遍幾何模型繪制就可以獲得很好的風格化特征可視化效果,并可以達到實時速率。
【專利附圖】

【附圖說明】
[0052]圖1是模型可視系統實時在線繪制流程和所生成的GPU中間結果數據示意圖,箭頭的兩端分別表示了數據的輸入和輸出端。
[0053]圖2是幾何表面相鄰的片元在k-buffer中深度排序存儲位置不連續的問題示意圖。
[0054]圖3 Ca) 一圖3 (C)是采用優選可視化方案I所生成的透明模型光照和特征融合效果圖
[0055]圖4 Ca) 一圖4 (C)是采用優選可視化方案2所生成的半透明模型和特征融合效果圖。
[0056]圖5和圖6都是采用優選可視化方案3所生成的透明卡通風格化效果圖。
【具體實施方式】
[0057]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,可以理解的是,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0058]如圖1所示是模型可視系統實時在線繪制流程和所生成的GPU中間結果數據示意圖。采用如下方法進行多層形狀特征融合的可視化:
[0059]第一步:使用基于多級深度測試策略的改進k-buffer算法進行GPU多片元的排序和收集,同時把計算Apparent Relief所需的主曲率kl, k2和(轉換到觀察空間的)法向的前兩個分量nl, n2作為片元屬性存入k-buffer。
[0060]這一步的理想情況是通過一遍幾何場景繪制就同時完成片元排序和片元屬性的存儲,但在實際實現時本發明中`需要進行兩遍幾何模型/場景繪制。這是由于本發明中為了解決k-buffer的片元讀寫沖突問題,采用基于多級深度測試策略的改進k-buffer算法,即使用原子比較操作完成片元深度排序。如果采用一遍幾何場景繪制的話,在片元排序過程中,需要保證每個片元的前兩個分量nl,n2,主曲率kl,k2和深度值z —起在同一個原子操作中被讀寫和移動,由于目前OpenGL的原子比較操作只支持一個32位整型,如果把z, nl, n2, kl, k2五個浮點值壓縮存儲在一個32位整型里,精度是無法保證的,所以本發明中采取了繪制兩遍幾何場景的策略解決這一問題。
[0061]第一遍繪制不需要輸入任何額外的頂點屬性(除了頂點的坐標),把k個ΠΝΤ32型的紋理綁定為image Unit紋理圖像單元,在片元程序中,將深度值z編碼成32位無符號整數,使用原子比較操作完成片元排序并將z存入k-buffeHz)。本次繪制需要使用基于多級深度測試策略的改進k-buffer算法。
[0062]第二遍繪制則需將主曲率kl,k2和法向作為頂點屬性輸入流水線,光柵化過程中,對于每個新生成的片元,通過在k-buffer(z)中查找深度值相等的項判斷此片元在k-buffer中的位置,然后將它的nl, n2, kl, k2存入k-buffer (η I, n2, kl, k2)的相應位置;111,112沙1,1^2正好可以存儲在1^個1?84 FP32型的紋理里。由于每次片元程序只能更新k-buffer的一項并且需要保持其他項不變,所以第二遍繪制仍需把紋理綁定為ImageUnit。這是因為,如果使用MRT的話,片元程序必須輸出值到所有k個幀緩沖區,否則會產生未知的結果,這樣就需要先從紋理中讀取原來的k項,修改其中一項后,再把它們都輸出到MRT中,然而這時就又和原來的k-buffer算法一樣,會產生讀-修改-寫沖突的問題了。因此第二遍繪制仍然不能使用MRT,而需要把k-buffer (nl, n2, kl, k2)的紋理也綁定為ImageUnit紋理圖像單元,使用其支持的隨機寫功能(函數imageStore),這樣就可以將新片元的nl, n2, kl, k2寫入k-buffer的某一項而保持其他項不變了。另外,這兩遍幾何場景繪制都需要關閉多邊形表面剔除(GL_CULL_FACE)和深度測試(GL_DEPTH_TEST),以保證所有片元都能正確被收集。
[0063]第二步:在GPU中鏈接k-buffer中深度排序位置不連續但是幾何相鄰的片元。
[0064]這一步是為下一步的apparent relief及其卷積過程做準備。Apparent Relief算法需要在圖像空間內對nl, n2, kl, k2分別進行一次x方向上的一維卷積和一次y方向上的一維卷積,原算法的卷積針對的是離視點最近一層表面上的片元屬性,當擴展到多片元效果上,本發明中就需要在每一層表面上的片元間分別進行兩次卷積。一種直觀的想法是直接在k-buffer的每一層片元上做卷積,然而這會在一些輪廓處產生不準確的結果。對于相鄰的兩個像素,大多數情況下,它們在k-buffer中的同層片元在模型表面上也是處于同一層的、相連的,但是在一些輪廓處,k-buffer中層號相同的片元實際上在模型表面可能是處于不同層的、不相連的,而在模型表面上真正幾何相連的片元卻在k-buffer中處于不同層。如圖2所示,a, b, c分別表示穿過3個相鄰像素的射線,AO?A1、B0?B3、C0?C3則分別對應這三個像素處生成的片元。對于b和C,它們的k-buffer中層號相同的片元在模型表面上也是相連的;但是對于a和b就不一樣了,AO和B0、Al和BI雖然在k-buffer中是同層的,但在模型上卻是不相連的,而AO和B2、Al和B3才是在模型表面上相連的,應該在一起進行卷積運算。
[0065]如圖1所示標識(左,右,上,下)四個方向幾何相鄰的片元所在的位置的層號。圖中的箭頭表示數據的輸入輸出方向。為解決這個問題,本發明中使用一遍GPU圖像級繪制來標識每個片元的上、下、左、右四個方向的幾何鄰接片元分別在k-buffer中的哪一層,并將這四個層號保存在紋理中。具體方法是,繪制一個視口大小的矩形,在片元著色器中,計算匹配當前像素的k-buffer里每個片元的四個鄰接片元的層號,最后使用MRT技術將它們保存在一組紋理中。匹配的思想采用一種近似方法,設定一個深度差閾值thresh Λ Z,當相鄰像素上的某個片元和當前片元的的深度差小于這個閾值時,就認為這兩個片元在模型表面上是相連的,否則反之。如果相鄰像素處有兩個以上的片元和當前片元的深度差小于thresh Δ Z,則可取深度差最小的一個或層號最接近的一個;如果沒有片元和該片元的深度差小于thresh Δ Z,則認為該片元在此方向上沒有鄰接片元,即它處于模型的輪廓處,層號記為-1。對于每個片元,每個方向上的鄰接片元的層號可用8bit存儲,上下左右四個方向可用32bit存儲,每個像素處需存儲最多k個片元,所以所有的層號信息可以存儲在k個和視口相同大小的RGBA8類型的紋理內。此方法是一個近似準確的算法,相鄰片元匹配的是否準確取決于thresh Δ Z的大小,thresh Δ Z的合適大小需要根據模型的大小和精度變化,對于不同模型可調節threshAZ的大小以獲得更精確的結果。
[0066]第三步在GPU中進行卷積并最終計算出多層片元的形狀描述符apparentrelief ο本發明中使用兩遍GPU圖像級繪制流程依次對每層片元的nl, n2, kl, k2進行x方向上的一維卷積和y方向上的一維卷積。
[0067]第一遍卷積的結果利用MRT技術存儲在一組浮點型的紋理里,供第二遍卷積使用。在X方向上卷積時,對于當前片元,根據上一步記錄的鄰接片元層號,首先找到左邊的鄰接片元fleftl,然后再找到fleftl左邊的鄰接片元fleft2,依次類推,可以找到一串相連的片元,直到到達卷積核的邊界或某個片元沒有左鄰接片元為止;此過程中就可將每個片元的屬性和卷積核對應位置的權值相乘,并加到卷積結果上。然后再從中間的片元開始往右進行同樣的操作。在y方向上的卷積同理,先從中心往上鏈接每層片元同時加權到卷積結果,然后再從中間往下進行同樣操作。最后,可在第二遍中應用當前像素處每個片元的卷積結果,計算出每個片元的形狀描述符。
[0068]第四步根據多片元的形狀描述符進行多種風格化繪制。
[0069]這一步可以在上一步里的第二遍片元繪制處理中同時完成,實現各種效果的具體渲染方法。本發明中通過結合透明、半透明效果的繪制方法,和Apparent Relief形狀描述符的非真實感繪制方法,實現了多種可以表現模型多層形狀特征的非真實感繪制效果。本發明中的總體思路是,對于某個像素,先計算其每層片元在該層表面上表現出的非真實感效果的顏色值,然后根據透明、半透明效果的繪制規律,將前后各層片元的非真實感效果的顏色值融合起來,最終得到結合了透明、半透明效果的多層非真實感繪制效果。
[0070]使用Apparent Relief形狀描述符實現風格化效果的方法是根據繪制風格定義一
個叫做ARM (Apparent Relief Map)的紋理,并用形狀描述符的二維向量$作為紋理坐標讀
取紋理值(把;?每個分量的值從[-1,I]映射到[0,I]以作為紋理坐標),讀到的紋理值可
以直接作為風格化繪制效果,也可以作為中間值,用于實現最終的風格化效果。
[0071]本發明中可以通過突出展現模型前后多層表面的形狀特征,使用戶可以更好的觀察一個模型的結構。本發明中設計一個簡單的ARM,這個ARM在模型的形狀特征突出處(邊緣處、凹凸明顯處等)取值為1,而在模型表面的平坦處取值為0,所以用這個ARM可以很好地突出模型的形狀特征,而過濾掉平坦的部分。對于每層片元,本發明中用從ARM讀出的紋理值作為其顏色的透明度α值,用預先設定的顏色作為其顏色的RGB值,這樣特征突出的位置繪制出的就是不透明的特定顏色,而不需要突出特征的位置繪制出就是完全透明的顏色;然后,本發明中用透明效果繪制中的α-混合的計算方法,按深度順序從后向前融合各層片元的NPR顏色,得到最終的繪制結果。本發明中還可以疊加模型本身光照的透明效果。
[0072]本發明中也可以用突出形狀特征的方法強化半透明效果的繪制。繪制了模型的半透明效果,本發明中使用亮色高亮最近一層表面的形狀特征,而使用黑色強化后面各層表面的形狀特征。在模擬半透明效果時,本發明中只考慮光線在半透明物體中的吸收,忽略散射效果。通過Beer-Lambert定律Ia=exp(_ σ t, I)模擬半透明現象的環境光顏色,其中Ot是吸收系數,I是光在物體介質中穿過的距離,I可以通過累加每兩個相鄰層片元間的深度差求得。如果考慮到入射光線在物體表面的衰減,可以使用Schlick方程近似模擬Fresnel系數:Ft=l-(l-COS0)5,其中Θ是入射角,累積各表面的Fresnel系數并作用于環境光亮度Ia可模擬Fresnel現象。最后將半透明效果的顏色和各表面形裝特征處的顏色相融合,得到強化了形狀特征的半透明繪制效果。
[0073]本發明中還可以通過此系統實現其他的一些透明外觀的藝術風格化繪制效果。本發明中實現了兩種透明形式的卡通效果。本發明中計算出每層片元的卡通效果的顏色,然后再將各層卡通效果的顏色值用α-混合的方法融合起來,每層片元的透明度α值可用類似上一例的方法獲得,由于卡通效果在模型表面平坦的地方也是有顏色的,所以α值的下限可以設為一個大于O的值。
[0074]改進的多片元計算算法
[0075]為了能夠收集模型多層表面上的片元信息,并將其按深度順序存儲,本發明中借鑒k-buffer [Bavoi 12007]多片元算法思路。K_buffer算法的思想是,使用GPU上的多重渲染目標緩存(multiple render targets, MRTs)為視口上的每個像素分配一個大小固定為k的數組,包含k個可讀、寫的內存單元,可存儲該像素處最多k個片元的信息。具體的實現方法是將一組紋理綁定到巾貞緩沖區對象(Framebuffer Object, FB0)作為MRT,繪制幾何場景前關閉多邊形背面剔除(CULL_FACE)和深度測試(DEPTH_TEST);繪制幾何場景時,在GPU的片元著色器中對k-buffer的存儲單元進行讀-修改-寫操作(Read-Modify-ffrite, RMW):從紋理讀取k-buffer的數據,修改數據,然后以輸出顏色值到FBO的形式將數據寫回k-buffer。對于需按深度順序對片元排序的應用,如本發明中實現的順序獨立的透明現象和半透明現象,可在片元著色器中對k-buffer使用插入排序算法。繪制前先把k-buffer中所有的深度值初始化為一個可能的最大值,然后繪制一遍幾何場景,在片元著色器中把新片元按其深度值大小插入k-buffer的正確位置,以保持k-buffer中的片元按照深度值從小到大的順序排列。這樣只需一遍幾何場景繪制,就有序地收集了最多前k層片元的信息。隨后可以在圖像級的后處理繪制流程中融合收集的片元,實現所需的繪制效果。
[0076]盡管k-buffer算法可以在單遍幾何級繪制中完成對多片元的收集和排序,效率很高,但其本身存在一個片元讀寫沖突問題,導致繪制效果會在某些像素處出錯。這是由于GPU具有高度并行性,在k-buffer算法過程中,當同一像素處的多個片元的線程并行執行時,它們就有可能對紋理顯存的同一存儲位置同時進行讀寫(RMW)操作,當前GPU無法保證正確的讀寫順序,所以有可能產生錯誤的結果。Bavoil et al.在其論文中給出的解決方法是,在每幀繪制前將三角面片按其到視點的距離排序,并以此順序送入流水線,進一步地,也可將三角面片分批打包,每繪制一批刷新一次流水線,從而減少重疊的片元同時執行片元著色器程序的概率。但是這種方法只是減少了讀寫沖突出現的概率,并沒有徹底解決此問題,且每一幀在需CPU上執行排序算法,又分批刷新流水線,浪費了 GPU的高度并行能力,使得繪制效率嚴重下降。
[0077]本發明提出一種解決k-buffer片元讀寫沖突問題的方法,本發明方法使用OpenGIA O支持的對紋理顯存的原子操作功能,改進片元排序過程,可以徹底解決k-buffer的片元讀寫沖突問題。本方法采用多級深度測試策略,使用對紋理顯存的原子操作功能,適用于通用的OpenGL渲染管線。最新的GLSL提供了一系列的原子操作函數,通過把紋理對象綁定為”圖像單元”(Image Unit),這些函數可以在著色器程序中對紋理顯存執行多種原子性的讀-修改-寫操作。當一個著色器線程對一個存儲位置執行原子操作時,其他著色器線程將無法訪問此位置,直到整個讀寫操作完成。因此,使用原子操作可以保證當一個像素處的多個片元的著色器同時運行時,它們之間不會發生內存讀寫沖突,從而徹底解決k-buffer算法的片元讀寫沖突問題。
[0078]本發明中的具體實現方法是使用imageAtomicMin函數改進k-buffer的片元排序算法過程。imageAtomicMin函數的功能是,從紋理顯存的一個紋素中讀取一個32位整型數據,與另一個32位整型的參數數據進行比較,將其中較小者寫回該紋素位置,然后返回該紋素中原來存儲的值;整個操作是一個原子性的過程。待排序的片元深度值是浮點類型,然而原子操作目前只支持32位整型數據,所以本發明中使用HoatBitsToUint函數將深度值編碼成32位無符號整數存入紋理顯存,這個編碼值即是單精度浮點數在內存中的編碼表示,由于片元深度值都是非負的浮點數,因此其大小關系在編碼后仍然保持不變。
[0079]本發明采用GPU中基于多級深度測試策略的改進的k-buffer算法。I)先將k-buffer中的所有項初始化稱為一個可能的最大深度值,由于原子操作僅支持32位整型數據,將深度值z編碼成32位無符號整數;2)光柵化階段對每個片元進行處理(每個片元處的算法偽代碼如算法I所示),設當前新片元的深度值為Zci,將Zci依次和k-buffer中對應像素位置的每一項的深度值z進行整數比較,k-buffer中對應像素位置的深度值存儲形式為一維線性數組;3)若zQ大于k-buffer中對應像素位置的當前項一維數組中存儲的深度值Zi,則該數組項內存儲的深度值Zi保持不變,用Ztl繼續和一維數組元素的下一項zi+1比較;如此循環比較,直到Ztl小于某一項的深度值Zk時,把新片元的深度值Ztl插入了該數組項位置,而讀出該數組項的原值zk,即交換了 Ztl和一維數組中的數組項Zk的值;4)繼續用新的Z0值和后續的數組元素zk+1進行整數比較,由于k-buffer中該對應像素位置存儲的一維線性數組中存儲的值本身就是按照從小到大的順序進行排序的,所以以后的每次比較操作的結果都是Z0小于當前數組元素的Z值,因此算法會交換這兩個深度值;本步驟會進行指導遇到一個空的數組元素(即原子操作的返回值是初始化時的最大深度值),或者到達數組末尾,則循環結束。5)如果直到循環結束都沒有找到能插入新片元的位置,則k-buffer已滿且新片元的深度值大于所有已存深度值,新片元不會被存入k-buffer ;同時所述元著色器的末尾丟棄該片元,不再將任何信息寫入幀緩沖區。
[0080]算法I基于多級深度測試策略的改進k-buffer算法中的GPU片元排序算法
[0081]layout(sizelx32)uniform volatile uimage2D KBuffer[K];
[0082]KBufferInsertSort(float NewFragmentDepth)`[0083]I ivec2ImageCoord ^ ivec2(gl_FragCoord.xy);
[0084]2 uint Z ^ f1atBitsToUint(NewFragmentDepth);
[0085]3 for i — Oto K -1
[0086]4 ZOld — imageAtomicMin(KBuffer[i], ImageCoord, Z);
[0087]5 if Z01d==MAX_INT
[0088]6 break;
[0089]7 end
[0090]8 Z — max (Z, ZOld);
[0091]9 end
[0092]10 discard;
[0093]本發明中使用基于多級深度測試策略的改進k-buffer算法的繪制,取k=8,即收集了最多前8層片元(這是由于測試使用的GPU支持的Image Unit最大數量為8,而使用原子操作的方法要用一個Image Unit保存一層片元)。由此可見,通過使用原子操作改進后的k-buffer算法不會再出現片元深度排序錯誤的像素,所有像素都得到正確的繪制結果。
[0094]形狀特征提取算法
[0095]本發明中方法是幾何空間和圖像空間的混合式方法,在預處理階段計算模型的幾何屬性,然后在繪制時在圖像空間檢測形狀特征,結合了兩種方法的優點。本發明中使用一個形狀描述符來描述和提取模型表面的形狀信息。這種方法給圖像上的每個像素生成一個形狀描述符Apparent Relief,它的計算同時結合了模型空間(object space)和圖像空間(image space)的信息,是視線相關(view-dependent)的,且天然地具有LOD(level-of-detail)的特性。Apparent Relief只描述了模型表面的形狀屬性,并沒有確定最終的繪制風格。
[0096]Apparent Relief形狀描述符被定義為一個二維向量^,的方向描述了模型表面的凹凸性質;而;5的長度描述了模型表面的彎曲程度,是視線相關的。:?的計算過程分三
【權利要求】
1.一種GPU上多層形狀特征融合的可視化方法,其步驟包括: 1)對待可視化的多邊形網格表示的模型或場景,獲得任意觀察空間中所述網格模型中三角網格每個頂點上的主曲率kl,k2 ; 2)根據基于多級深度測試策略的改進的k-buffer算法將紋理綁定為圖像單元,通過進行第一遍GPU幾何繪制,實現收集所述網格模型中多層表面上的片元信息,同時將所述片元信息排序并將深度值z按順序通過原子比較操作存入k-buffer (z)中; 3)根據基于多級深度測試策略的改進k-buffer算法將紋理綁定為圖像單元,通過進行第二遍GPU幾何繪制,實現再次收集所述網格模型中多層表面上的片元信息;通過在所述k-buffer(z)中查找深度值z相等的項判斷此片元在k-buffer中的位置,再將該步驟中所述片元的觀察空間中法向的前兩個分量nl,n2,主曲率kl,k2存入k-buffer (nl, n2, kl, k2)的相應位置完成第二遍GPU幾何繪制; 4)在GPU中使用GPU圖像級繪制來標識所述k-buffer(nl, n2, kl, k2)中每個片元的上、下、左、右四個幾何表面鄰接片元分別在k-buffer中的所在的分層層號并將四個層號保存在紋理中,鏈接所述k-buffer中深度值z排序位置不連續但是幾何相鄰的片元得到每層鏈接后的片兀; 5)在GPU中采用兩遍GPU圖像級繪制依次對每層鏈接后片元的nl,n2,kl, k2進行x方向上的卷積和y方向上的卷積,計算出多層片元的形狀描述符; 6)根據多層片元的形狀描述符提取的結果進行多層片元的非真實感/風格化繪制,實現各種效果渲染后輸出可視化結果。
2.如權利要求1所述的GPU上多層形狀特征融合的可視化方法,其特征在于,基于多級深度測試策略的改進k-buffer算法的在GPU中的具體實現步驟如下: 1)先將k-buffer中的所有項初始化稱為一個可能的最大深度值,將深度值z編碼成32位無符號整數; 2)光柵化階段對每個片元進行處理,設當前新片元的深度值為Ztl,k-buffer中對應像素位置的深度值存儲形式為一 維線性數組,將Zci依次和k-buffer中對應像素位置的每一項的深度值z進行整數比較,根據不同的比較結果,采取Ztl和一維數組中的數組項z的不同交換策略; 3)如果直到循環結束都沒有找到能插入新片元的位置,則k-buffer已滿且新片元的深度值大于所有已存深度值,新片元不會被存入k-buffer ; 4)同時所述元著色器的末尾丟棄該片元,不再將任何信息寫入幀緩沖區。
3.如權利要求2所述的GPU上多層形狀特征融合的可視化方法,其特征在于,根據不同的比較結果,采取Ztl和一維數組中的數組項z的不同交換策略如下: 1)若zQ大于k-buffer中對應像素位置的當前項一維線性數組中存儲的深度值Zi,則該數組項內存儲的深度值Zi保持不變; 2)用Zci繼續和一維數組元素的下一項zi+1比較;如此循環比較,直到Zci小于某一項的深度值Zk時,把新片元的深度值Ztl插入了該數組項位置讀出該數組項的原值zk,即交換了Z0和一維數組中的數組項Zk的值; 3)繼續用新的Ztl值和后續的數組元素zk+1進行整數比較,以后的每次比較操作的結果都是Ztl小于當前數組元素的z值,即交換這兩個深度值。
4.如權利要求1所述的GPU上多層形狀特征融合的可視化方法,其特征在于,所述步驟4)中GPU圖像級繪制來標識每個片元的上、下、左、右四個幾何表面鄰接片元分別在k-buffer中的分層層號并將這四個層號保存在紋理中的具體操作方法如下: O繪制一個視口大小的矩形,在片元著色器中計算匹配當前像素的k-buffer里每個片元的四個幾何表面鄰接片元的層號; 2)匹配采用近似方法,設定一個深度差閾值threshΛ Z,當相鄰像素上的某個片元和當前片元的的深度差小于這個閾值時,就認為這兩個片元在所述網格模型表面上是相連的; 3)如果相鄰像素處有兩個以上的片元和當前片元的深度差小于threshΛ Ζ,則可取深度差最小的一個或層號最接近的一個;如果沒有片元和該片元的深度差小于thresh Λ Ζ,則認為該片元在此方向上沒有鄰接片元,即它處于網格模型的輪廓處,層號記為-1 ; 4)對于每個片元,每個方向上的鄰接片元的層號可用Sbit存儲,上下左右四個方向可用32bit存儲,每個像素處需存儲最多k個片元,使用MRT技術將它們保存在一組紋理中。
5.如權利要求1所述的GPU上多層形狀特征融合的可視化方法,其特征在于,所述步驟5)中,分別進行X方向上的一維卷積和I方向上的一維卷積的步驟如下: 1)第一遍在X方向上卷積時,對于當前片元根據上一步記錄的幾何空間鄰接片元層號,首先找到左邊的鄰接片兀fleftl,然后再找到fleftl左邊的鄰接片兀fleft2 ; 2)按照步驟I)依次類推,以找到一串相連的片元,直到到達卷積核的邊界或某個片元沒有左鄰接片元為止,將第一遍卷積的結果利用MRT技術存儲在一組浮點型的紋理里,供第二遍卷積使用; 3)在y方向上的卷積時,先從中心往上鏈接每層片元同時加權到卷積結果,然后再從中間往下進行同樣操作; 4)在第二遍中采用當前像素處每個片元的卷積結果,計算出每個片元的形狀描述符。
6.如權利要求1所述的GPU上多層形狀特征融合的可視化方法,其特征在于,所述形狀描述符Apparent Relief為一個二維向量5*的方向描述了網格模型表面的凹凸性質;而:?的長度描述了網格模型表面的彎曲程度。
7.如權利要求6所述的GPU上多層形狀特征融合的可視化方法,其特征在于,所述$的計算過程如下: 1)在網格模型空間計算^的方向3即曲面的凹凸性質,算法首先計算出三角網格頂點的曲面主曲率kl和k2,令kl和k2分別對應于兩個坐標軸,向量f = <kl,k2>l的方向即為$的方向; 2)在圖像空間計算;5的長度L即曲面的彎曲程度,在圖像空間內計算法向在像素鄰域內的變化率,計算出的彎曲程度是視線相關; 3)結合-的方向
8.如權利要求1所述的GPU上多層形狀特征融合的可視化方法,其特征在于,所述多層的非真實感/風格化繪制在第二遍片元繪制處理中同時完成。
9.如權利要求1所述的GPU上多層形狀特征融合的可視化方法,其特征在于,通過結合透明或者半透明效果的繪制方法或卡通效果以及Apparent Relief形狀描述符的非真實感繪制方法,實現各種效果渲染后輸出可視化結果。
10.如權利要求9所述的GPU上多層形狀特征融合的可視化方法,其特征在于,使用Apparent Relief形狀描述符實現風格化效果的方法如下: 1)根據繪制風格定義一個叫做ARM的紋理,并用形狀描述符的二維向量作為紋理坐標讀取紋理值把?每個分量的值從[-1,I]映射到[0,I]以作為紋理坐標; 2)讀取到的紋理值可以直接作為風格化繪制效果,也可以作為中間值,用于實現最終的風格化效果。
11.如權利要求10所述的GPU上多層形狀特征融合的可視化方法,其特征在于,所述ARM在網格模型的形狀特征突出處取值為1,而在網格模型表面的平坦處取值為0,所以用這個ARM可以很好地突出網格模型的形狀特征,而過濾掉平坦的部分。
12.如權利要求10所述的GPU上多層形狀特征融合的可視化方法,其特征在于,對于每層片元,從ARM讀出的紋理值作為其顏色的透明度α值,用預先設定的顏色作為其顏色的RGB值,所述特征突出的位置繪制出的就是不透明的特定顏色,而不需要突出特征的位置繪制出就是完全透明的顏色;然后采用透明效果繪制中的α-混合的計算方法,按深度順序從后向前融合各層片元的NPR顏色,得到最終的繪制結果。
13.如權利要求9所述的GPU上多層形狀特征融合的可視化方法,其特征在于,所述半透明效果用突出形狀特征的方法強化半透明效果的繪制: 1)使用亮色高亮最近一層表面的形狀特征,而使用黑色強化后面各層表面的形狀特征; 2)在模擬半透明效果時,通過Beer-Lambert定律模擬半透明現象的環境光顏色; 3)使用Schlick方程近似模擬Fresnel系數表征入射光線在物體表面的衰減:最后將半透明效果的顏色和各表面形裝特征處的顏色相融合,得到強化了形狀特征的半透明繪制效果。
14.如權利要求9所述的GPU上多層形狀特征融合的可視化方法,其特征在于,通過計算出每層片元的卡通效果的顏色,然后再將各層卡通效果的顏色值用α-混合的方法融合起來,從ARM讀出的紋理值作為其顏色的每層片元透明度α值,實現透明形式的卡通效果。
【文檔編號】G06T15/00GK103500463SQ201310488566
【公開日】2014年1月8日 申請日期:2013年10月17日 優先權日:2013年10月17日
【發明者】李勝, 王菁, 汪國平 申請人:北京大學
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
韩国伦理电影