国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種三維體數(shù)據(jù)可視化方法及裝置制造方法

      文檔序號:6512466閱讀:198來源:國知局
      一種三維體數(shù)據(jù)可視化方法及裝置制造方法
      【專利摘要】本申請?zhí)峁┝艘环N三維體數(shù)據(jù)可視化方法和裝置。其中一種三維體數(shù)據(jù)可視化方法,包括:獲取用戶輸入的三維體數(shù)據(jù)的加載信息,生成對應的加載區(qū)域;確定加載區(qū)域的顯示分辨率以及顯示分辨率下需要加載到加載區(qū)域的數(shù)據(jù)塊;對加載區(qū)域進行裁剪,得到加載區(qū)域包括的所有可視數(shù)據(jù)塊;依據(jù)視景體和顯示分辨率,分別計算每個可視數(shù)據(jù)塊在顯示屏幕的空間位置;在每個可視數(shù)據(jù)塊的空間位置加載對應的可視數(shù)據(jù)塊,從而在顯示屏幕的空間位置加載全部的可視數(shù)據(jù)塊后,在顯示屏幕上展示一個三維圖形,實現(xiàn)以三維圖形方式展示三維體數(shù)據(jù)的部分區(qū)域。進一步,顯示分辨率下加載到加載區(qū)域的數(shù)據(jù)量小于三維體數(shù)據(jù)的數(shù)據(jù)量,在后續(xù)加載過程中可以加快加載效率。
      【專利說明】一種三維體數(shù)據(jù)可視化方法及裝置
      【技術(shù)領域】
      [0001]本申請涉及數(shù)據(jù)處理【技術(shù)領域】,特別涉及一種三維體數(shù)據(jù)可視化方法及裝置。
      【背景技術(shù)】
      [0002]三維體數(shù)據(jù)是一個三維均勻分布的數(shù)據(jù)集合,即由三維網(wǎng)格組成的結(jié)構(gòu)化數(shù)據(jù)集合。體繪制是針對三維體數(shù)據(jù)進行繪制與顯示的三維圖形應用技術(shù),是科學計算可視化和計算機圖形學的一個重要的研究領域,對于由各種類型的三維設備、科學仿真等產(chǎn)生的體數(shù)據(jù)集的可視化是一種非常重要的技術(shù)。
      [0003]其中三維體數(shù)據(jù)中的最小元素稱為體素。通常情況下,這些三維體數(shù)據(jù)可以分別表示不同數(shù)據(jù)源的各種屬性,如可以用三維體數(shù)據(jù)表示醫(yī)學掃描和地震數(shù)據(jù)采集的各種屬性。
      [0004]基于此本申請?zhí)峁┝艘环N三維體數(shù)據(jù)可視化方法及裝置,用以將三維體數(shù)據(jù)的某部分區(qū)域以三維圖形方式進行展示。

      【發(fā)明內(nèi)容】

      [0005]本申請所要解決的技術(shù)問題是提供一種三維體數(shù)據(jù)可視化方法和裝置,用以將三維體數(shù)據(jù)的某部分區(qū)域以三維圖形方式進行展示。技術(shù)方案如下:
      [0006]一方面,本申請實施例提供一種三維體數(shù)據(jù)可視化方法,包括:
      [0007]獲取用戶輸入的三維體數(shù)據(jù)的加載信息,生成所述加載信息對應的加載區(qū)域;
      [0008]確定所述加載區(qū)域的顯示分辨率以及所述顯示分辨率下需要加載到所述加載區(qū)域的數(shù)據(jù)塊,其中所述數(shù)據(jù)塊是對所述三維體數(shù)據(jù)進行均分采樣后得到的具有所述顯示分辨率且具有相同體素的數(shù)據(jù)塊;
      [0009]對所述加載區(qū)域進行裁剪,得到所述加載區(qū)域包括的所有可視數(shù)據(jù)塊,其中所述可視數(shù)據(jù)塊是加載到加載區(qū)域的數(shù)據(jù)塊中在視景體內(nèi)可見的數(shù)據(jù)塊;
      [0010]依據(jù)所述視景體和所述顯示分辨率,分別計算每個所述可視數(shù)據(jù)塊在顯示屏幕的空間位置;
      [0011]在每個所述可視數(shù)據(jù)塊的空間位置加載對應的所述可視數(shù)據(jù)塊。
      [0012]優(yōu)選地,確定所述加載區(qū)域的顯示分辨率包括:
      [0013]獲取所述加載區(qū)域的最外層在視圖區(qū)域的投影區(qū)域,其中所述視圖區(qū)域是顯示屏幕內(nèi)可供圖形顯示的最大范圍;
      [0014]計算所述投影區(qū)域和所述視圖區(qū)域的比值;
      [0015]依據(jù)公式D=RX (L-1)得到所述加載區(qū)域的顯示分辨率,其中L為分辨率的級數(shù),R為比值,且當R大于I時將其設置為I。
      [0016]優(yōu)選地,對所述加載區(qū)域進行裁剪,得到所述加載區(qū)域包括的所有可視數(shù)據(jù)塊,包括:
      [0017]將所述加載區(qū)域的每個數(shù)據(jù)塊的八個頂點的坐標和所述視景體的坐標進行對比;
      [0018]如果所述數(shù)據(jù)塊的至少一個頂點的坐標包括在所述視景體的坐標內(nèi),則將所述數(shù)據(jù)塊作為所述可視區(qū)域的可視數(shù)據(jù)塊。
      [0019]優(yōu)選地,依據(jù)所述視景體和所述顯示分辨率,分別計算每個所述可視數(shù)據(jù)塊的空間位置,包括:
      [0020]依據(jù)所述視景體的坐標系和所述加載區(qū)域的坐標系,對所述可視數(shù)據(jù)塊的坐標進行轉(zhuǎn)換,得到基于所述視景體的坐標系的可視數(shù)據(jù)塊的坐標;
      [0021]依據(jù)所述顯示分辨率,將所述基于所述視景體的坐標系的可視數(shù)據(jù)塊的坐標轉(zhuǎn)換為所述可視數(shù)據(jù)塊在顯示屏幕中的空間位置;
      [0022]在每個所述可視數(shù)據(jù)塊的空間位置加載對應的所述可視數(shù)據(jù)塊,包括:獲取各個所述可視數(shù)據(jù)塊的景深;依據(jù)景深由遠及近的順序,依次在所述可視數(shù)據(jù)塊的空間位置上加載對應的所述可視數(shù)據(jù)塊。
      [0023]優(yōu)選地,獲取用戶輸入的三維體數(shù)據(jù)的加載信息,生成所述加載信息對應的加載區(qū)域,包括:
      [0024]獲取用戶輸入的三維實體數(shù)據(jù)的加載區(qū)域信息以及邏輯標志信息,其中所述加載區(qū)域信息是所述加載區(qū)域的大小信息,所述邏輯標志信息用于控制所述加載區(qū)域的形狀;
      [0025]依據(jù)所述加載區(qū)域信息和所述邏輯標志信息,生成所述加載區(qū)域。
      [0026]另一方面,本申請實施例提供一種三維體數(shù)據(jù)可視化裝置,包括:
      [0027]生成單元,用于獲取用戶輸入的三維體數(shù)據(jù)的加載信息,生成所述加載信息對應的加載區(qū)域;
      [0028]確定單元,用于確定所述加載區(qū)域的顯示分辨率以及所述顯示分辨率下需要加載到所述加載區(qū)域的數(shù)據(jù)塊,其中所述數(shù)據(jù)塊是對所述三維體數(shù)據(jù)進行均分采樣后得到的具有所述顯示分辨率且具有相同體素的數(shù)據(jù)塊;
      [0029]裁剪單元,用于對所述加載區(qū)域進行裁剪,得到所述加載區(qū)域包括的所有可視數(shù)據(jù)塊,其中所述可視數(shù)據(jù)塊是加載到加載區(qū)域的數(shù)據(jù)塊中在視景體內(nèi)可見的數(shù)據(jù)塊;
      [0030]計算單元,用于依據(jù)所述視景體和所述顯示分辨率,分別計算每個所述可視數(shù)據(jù)塊在顯示屏幕的空間位置;
      [0031]加載單元,用于在每個所述可視數(shù)據(jù)塊的空間位置加載對應的所述可視數(shù)據(jù)塊。
      [0032]優(yōu)選地,所述確定單元包括:
      [0033]獲取子單元,用于獲取所述加載區(qū)域的最外層在視圖區(qū)域的投影區(qū)域,其中所述視圖區(qū)域是顯示屏幕內(nèi)可供圖形顯示的最大范圍;
      [0034]第一計算子單元,用于計算所述投影區(qū)域和所述視圖區(qū)域的比值;
      [0035]第二計算子單元,用于依據(jù)公式D=RX (L-1)得到所述加載區(qū)域的顯示分辨率,其中L為分辨率的級數(shù),R為比值,且當R大于I時將其設置為I ;
      [0036]確定子單元,用于確定所述顯示分辨率下需要加載到所述加載區(qū)域的數(shù)據(jù)塊。
      [0037]優(yōu)選地,所述裁剪單元具體用于:將所述加載區(qū)域的每個數(shù)據(jù)塊的八個頂點的坐標和所述視景體的坐標進行對比;如果所述數(shù)據(jù)塊的至少一個頂點的坐標包括在所述視景體的坐標內(nèi),則將所述數(shù)據(jù)塊作為所述可視區(qū)域的可視數(shù)據(jù)塊。
      [0038]優(yōu)選地,所述計算單元具體用于:依據(jù)所述視景體的坐標系和所述加載區(qū)域的坐標系,對所述可視數(shù)據(jù)塊的坐標進行轉(zhuǎn)換,得到基于所述視景體的坐標系的可視數(shù)據(jù)塊的坐標;依據(jù)所述顯示分辨率,將所述基于所述視景體的坐標系的可視數(shù)據(jù)塊的坐標轉(zhuǎn)換為所述可視數(shù)據(jù)塊在顯示屏幕中的空間位置。
      [0039]所述加載單元具體用于:獲取各個所述可視數(shù)據(jù)塊的景深;依據(jù)景深由遠及近的順序,依次在所述可視數(shù)據(jù)塊的空間位置上加載對應的所述可視數(shù)據(jù)塊。
      [0040]優(yōu)選地,所述生成單元具體用于:獲取用戶輸入的三維實體數(shù)據(jù)的加載區(qū)域信息以及邏輯標志信息,依據(jù)所述加載區(qū)域信息和所述邏輯標志信息,生成所述加載區(qū)域,其中所述加載區(qū)域信息是所述加載區(qū)域的大小信息,所述邏輯標志信息用于控制所述加載區(qū)域的形狀。
      [0041]與現(xiàn)有技術(shù)相比,本申請包括以下優(yōu)點:
      [0042]本申請實施例提供的三維體數(shù)據(jù)可視化方法首先獲取用戶輸入的三維體數(shù)據(jù)的加載信息,生成加載信息對應的加載區(qū)域;其次確定加載區(qū)域的顯示分辨率以及該顯示分辨率下需要加載到加載區(qū)域的數(shù)據(jù)塊,對加載區(qū)域進行裁剪,得到其包括的視景體內(nèi)可見的數(shù)據(jù)塊作為可視數(shù)據(jù)塊,然后依據(jù)視景體和顯示分辨率,分別計算每個視景體的在顯示屏幕的空間位置,在每個可視數(shù)據(jù)塊的空間位置加載對應的可視數(shù)據(jù)塊,從而在顯示屏幕的空間位置加載全部的可視數(shù)據(jù)塊后,在顯示屏幕上展示一個三維圖形,實現(xiàn)以三維圖形方式展示三維體數(shù)據(jù)的部分區(qū)域。
      [0043]進一步,顯示分辨率下加載到加載區(qū)域的數(shù)據(jù)量小于三維體數(shù)據(jù)的數(shù)據(jù)量,在后續(xù)加載過程中可以加快加載效率。
      【專利附圖】

      【附圖說明】
      [0044]為了更清楚地說明本申請實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
      [0045]圖1是本申請?zhí)峁┑囊环N三維體數(shù)據(jù)可視化方法的一種流程圖;
      [0046]圖2是本申請?zhí)峁┑囊环N八叉樹的示意圖;
      [0047]圖3是本申請?zhí)峁┑囊环N數(shù)據(jù)采集示意圖;
      [0048]圖4是本申請?zhí)峁┑囊暰绑w不意圖;
      [0049]圖5是本申請?zhí)峁┑囊环N加載區(qū)域的示意圖;
      [0050]圖6是本申請?zhí)峁┑牧硪环N加載區(qū)域的示意圖;
      [0051]圖7是本申請?zhí)峁┑脑僖环N加載區(qū)域的示意圖;
      [0052]圖8是本申請?zhí)峁┑脑僖环N加載區(qū)域的示意圖;
      [0053]圖9是本申請?zhí)峁┑脑僖环N加載區(qū)域的示意圖;
      [0054]圖10 (a)是本申請?zhí)峁┑脑僖环N加載區(qū)域的示意圖;
      [0055]圖10 (b)是本申請?zhí)峁┑脑僖环N加載區(qū)域的示意圖;
      [0056]圖10 (C)是本申請?zhí)峁┑脑僖环N加載區(qū)域的示意圖;
      [0057]圖10 (d)是本申請?zhí)峁┑脑僖环N加載區(qū)域的示意圖;
      [0058]圖10 (e)是本申請?zhí)峁┑脑僖环N加載區(qū)域的示意圖;[0059]圖10 (f)是本申請?zhí)峁┑脑僖环N加載區(qū)域的示意圖;
      [0060]圖11是本申請?zhí)峁┑南鄼C參數(shù)與視景體的對應關(guān)系示意圖;
      [0061]圖12是本申請?zhí)峁┑囊环N三維體數(shù)據(jù)可視化裝置的結(jié)構(gòu)示意圖;
      [0062]圖13是本申請?zhí)峁┑囊环N三維體數(shù)據(jù)可視化裝置的子結(jié)構(gòu)示意圖。
      【具體實施方式】
      [0063]首先對本申請實施例提供的三維體數(shù)據(jù)可視化方法進行簡單說明,可以包括:
      [0064]獲取用戶輸入的三維體數(shù)據(jù)的加載信息,生成所述加載信息對應的加載區(qū)域;
      [0065]確定所述加載區(qū)域的顯示分辨率以及所述顯示分辨率下需要加載到所述加載區(qū)域的數(shù)據(jù)塊,其中所述數(shù)據(jù)塊是對所述三維體數(shù)據(jù)進行均分采樣后得到的具有所述顯示分辨率且具有相同體素的數(shù)據(jù)塊;
      [0066]對所述加載區(qū)域進行裁剪,得到所述加載區(qū)域包括的所有可視數(shù)據(jù)塊,其中所述可視數(shù)據(jù)塊是加載到加載區(qū)域的數(shù)據(jù)塊中在視景體內(nèi)可見的數(shù)據(jù)塊;
      [0067]依據(jù)所述視景體和所述顯示分辨率,分別計算每個所述可視數(shù)據(jù)塊在顯示屏幕的空間位置;
      [0068]在每個所述可視數(shù)據(jù)塊的空間位置加載對應的所述可視數(shù)據(jù)塊。
      [0069]當顯示屏幕的空間位置加載全部的可視數(shù)據(jù)塊后,在顯示屏幕上展示一個三維圖形,實現(xiàn)以三維圖形方式展示三維體數(shù)據(jù)的部分區(qū)域。進一步,顯示分辨率下加載到加載區(qū)域的數(shù)據(jù)量小于三維體數(shù)據(jù)的數(shù)據(jù)量,在后續(xù)加載過程中可以加快加載效率。
      [0070]下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
      [0071]請參閱圖1,其示出了本申請實施例提供的一種三維體數(shù)據(jù)可視化方法的流程圖,可以包括以下步驟:
      [0072]步驟101:獲取用戶輸入的三維體數(shù)據(jù)的加載信息,生成加載信息對應的加載區(qū)域。
      [0073]可以理解的是:用戶希望在電子設備的顯示屏幕上以三維圖形展示三維體數(shù)據(jù)的某部分區(qū)域時,則在電子設備內(nèi)輸入三維體數(shù)據(jù)的加載信息,該加載信息用于控制所要加載區(qū)域的大小和形狀。其中加載信息可以包括:加載區(qū)域信息以及邏輯標志信息,其中加載區(qū)域信息是加載區(qū)域的大小信息,邏輯標志信息用于控制加載區(qū)域的形狀。電子設備可以依據(jù)加載區(qū)域信息和邏輯標志信息,生成加載區(qū)域。
      [0074]步驟102:確定加載區(qū)域的顯示分辨率以及所述顯示分辨率下所述加載區(qū)域包括的數(shù)據(jù)塊。
      [0075]其中,加載區(qū)域的顯示分辨率是加載區(qū)域在顯示屏幕中的分辨率,其可以通過視圖區(qū)域與在視圖區(qū)域內(nèi)的投影所構(gòu)成的區(qū)域確定。視圖區(qū)域是顯示屏幕內(nèi)可供圖形顯示的最大范圍。如果把圖形顯示過程看做是繪畫,那么視圖區(qū)域相當于繪畫用的畫布大小。在視圖區(qū)域內(nèi)的投影所構(gòu)成的區(qū)域是加載區(qū)域在視圖區(qū)域投影后得到的投影區(qū)域,該投影區(qū)域可以等于所述視圖區(qū)域,也可以占視圖區(qū)域的部分區(qū)域。[0076]在本申請實施例中,加載區(qū)域在視圖區(qū)域的投影區(qū)域是加載區(qū)域的最外層在視圖區(qū)域的投影區(qū)域。確定加載區(qū)域的顯示分辨率的過程可以是:
      [0077]首先獲取加載區(qū)域的最外層在視圖區(qū)域的投影區(qū)域;其次計算投影區(qū)域和視圖區(qū)域的比值,如Dl是以像素為單位得到的投影區(qū)域面積,D2是以像素為單位得到的視圖區(qū)域面積,計算Dl與D2的比值作為投影區(qū)域和視圖區(qū)域的比值R=D1/D2。然后依據(jù)公式D=RX (L-1)得到加載區(qū)域的顯示分辨率,其中L為分辨率的級數(shù),該分辨率的級數(shù)是設備能夠提供顯示的分辨率的最大等級數(shù),當比值R大于I時將其設置為1,否則按照R的實際取值進行顯示分辨率的計算。從顯示分辨率的計算公式可以看出,隨著比值R的增加,顯示分辨率從O至L-1分辨率逐級增加,O級分辨率最低,L-1級分辨率最高。
      [0078]本領域技術(shù)人員公知的,數(shù)據(jù)量越大其要求的顯示分辨率越大,加載區(qū)域作為三維體數(shù)據(jù)的部分區(qū)域,其顯示分辨率小于三維體數(shù)據(jù)的顯示分辨率,因此在確定顯示分辨率后,還需要進一步確定該顯示分辨率下需要加載到加載區(qū)域的數(shù)據(jù)塊。由于顯示分辨率下加載到加載區(qū)域的數(shù)據(jù)量小于三維體數(shù)據(jù)的數(shù)據(jù)量,所以在后續(xù)加載過程中可以加快加載效率。
      [0079]在本申請實施例中加載到加載區(qū)域的數(shù)據(jù)塊是對三維體數(shù)據(jù)進行均分采樣后得到的具有顯示分辨率且具有相同體素的數(shù)據(jù)塊。其過程可以是:先以預設體素對三維體數(shù)據(jù)進行均分,得到與三維體數(shù)據(jù)具有相同顯示分辨率的數(shù)據(jù)塊;然后再對這些數(shù)據(jù)塊進行
      采樣得到比三維體數(shù)據(jù)的顯示分辨率低一級的顯示分辨率下的數(shù)據(jù)塊,......,依次類推,直
      至得到最低級的顯示分辨率下的數(shù)據(jù)塊。
      [0080]以基于八叉樹存儲三維體數(shù)據(jù)為例,如圖2所示以,八叉樹結(jié)構(gòu)對三維數(shù)據(jù)進行分塊,分塊得到的數(shù)據(jù)塊作為八叉樹的葉子節(jié)點中的數(shù)據(jù),并存儲到八叉樹文件中。八叉樹中同一層節(jié)點的數(shù)據(jù)塊的分辨率相同,且上一層節(jié)點的數(shù)據(jù)塊通過對下一層節(jié)點的數(shù)據(jù)塊采樣得到。
      [0081]在圖3中示出了如何從下一層節(jié)點的數(shù)據(jù)塊采樣得到上一層節(jié)點的數(shù)據(jù)塊。需要注意的是:在進行采樣時,需要從下一層節(jié)點中隸屬于上一層節(jié)點的子節(jié)點的數(shù)據(jù)塊中采樣,所謂隸屬是指上一層節(jié)點是下一層節(jié)點中八個節(jié)點的父節(jié)點,而這八個節(jié)點是該父節(jié)點的子節(jié)點。在圖2所示的八叉樹中,上下層節(jié)點的隸屬關(guān)系采用箭頭標注,如第二層節(jié)點的第一個節(jié)點,第三層節(jié)點中的第一至八個節(jié)點是隸屬于該節(jié)點的子節(jié)點,第二層節(jié)點的第一個節(jié)點從這八個子節(jié)點中進行數(shù)據(jù)塊采樣,得到第二層第一個節(jié)點的數(shù)據(jù)塊。
      [0082]由于上一層節(jié)點是從隸屬于其的下一層的八個節(jié)點中采樣得到數(shù)據(jù)塊,所以上一層節(jié)點的數(shù)據(jù)塊的分辨率小于下一層節(jié)點的數(shù)據(jù)塊的分辨率。并且最后一層所有節(jié)點的數(shù)據(jù)塊包括全部三維數(shù)據(jù)。
      [0083]步驟103:對加載區(qū)域進行裁剪,得到加載區(qū)域包括的所有可視數(shù)據(jù)塊,其中可視數(shù)據(jù)塊是加載到加載區(qū)域的數(shù)據(jù)塊中在視景體內(nèi)可見的數(shù)據(jù)塊。
      [0084]可以理解的是:可視區(qū)域是通過觀察點可以查看到的區(qū)域,以相機作為觀察器件為例進行說明,相機的光束匯聚點可以作為觀察點,相機所匯聚的光束在空間形成一個以觀察點為頂點的椎體,且該椎體被前裁剪平面和后裁剪平面裁剪,在前裁剪平面和后裁剪平面之間形成一個棱錐,該棱錐所在區(qū)域稱為視景體,如圖4所示。
      [0085]其中,前裁剪平面稱為投影平面,視景體內(nèi)的觀察對象都被投影到該投影平面上,因此,投影平面處于棱錐范圍內(nèi)的區(qū)域稱為可見區(qū)域,即位于視景體內(nèi)的觀察對象全部可見;而投影平面處于棱錐范圍以外的區(qū)域稱為不可見區(qū)域,即位于視景體外的觀察對象不可見。
      [0086]當觀察對象為加載區(qū)域包括的數(shù)據(jù)塊時,完全位于視景體內(nèi)部的數(shù)據(jù)塊完全可見;部分位于視景體內(nèi)部的數(shù)據(jù)塊部分可見;其余數(shù)據(jù)塊為完全不可見。對于完全可見和部分可見的數(shù)據(jù)塊作為可視數(shù)據(jù)塊載入內(nèi)存,否則不載入內(nèi)存。這樣可進一步減少載入內(nèi)存數(shù)據(jù)塊塊的數(shù)量,僅將可視區(qū)域內(nèi)的數(shù)據(jù)塊載入內(nèi)存,降低不必要的數(shù)據(jù)塊對內(nèi)存的消耗。
      [0087]確定數(shù)據(jù)塊完全落到視景體內(nèi)的判斷標準是:數(shù)據(jù)塊的八個頂點都在視景體六個面以內(nèi)。確定數(shù)據(jù)塊部分落到視景體內(nèi)的判斷標準是:數(shù)據(jù)塊的至少有一個頂點在視景體六個面以內(nèi)。確定數(shù)據(jù)塊完全未落到視景體內(nèi)的判斷標準是:數(shù)據(jù)塊的所有頂點全部在視景體六個面以外。
      [0088]也就是說,確定數(shù)據(jù)塊為可視數(shù)據(jù)塊的判斷標準是:數(shù)據(jù)塊的至少一個頂點在視景體的六個面以內(nèi)。確定數(shù)據(jù)塊不是可視數(shù)據(jù)塊的判斷標準是:數(shù)據(jù)塊的所有頂點全部在視景體六個面以外。在實際判斷過程中可以通過坐標對比,過程如下:
      [0089]將加載區(qū)域的每個數(shù)據(jù)塊的八個頂點的坐標和視景體的坐標進行對比;如果所述數(shù)據(jù)塊的至少一個頂點的坐標包括在視景體的坐標內(nèi),則將所述數(shù)據(jù)塊作為所述可視區(qū)域的可視數(shù)據(jù)塊。
      [0090]其中頂點的坐標包括在視景體的坐標內(nèi)滿足條件:視景體由六個面包圍而成,每個面通過面的法向量確定面的里側(cè)和外側(cè)。面的里側(cè)是指處于視景體內(nèi)部的一側(cè),面的外側(cè)處于視景體外部的一側(cè)。當頂點處于面法向量指向的那一側(cè)(里側(cè))時,頂點坐標代入平面方程時其方程值為正,反之為負。據(jù)此,當頂點坐標代入六個平面方程皆為正時,則該頂點處于視景體內(nèi)部;否則,該頂點處于視景體外部。
      [0091]步驟104:依據(jù)視景體和顯示分辨率,分別計算每個可視數(shù)據(jù)塊在顯示屏幕的空間位置。
      [0092]具體過程可以是:依據(jù)視景體的坐標系和加載區(qū)域的坐標系,對可視數(shù)據(jù)塊的坐標進行轉(zhuǎn)換,得到基于視景體的坐標系的可視數(shù)據(jù)塊的坐標;依據(jù)顯示分辨率,將基于視景體的坐標系的可視數(shù)據(jù)塊的坐標轉(zhuǎn)換為可視數(shù)據(jù)塊在顯示屏幕中的空間位置。
      [0093]步驟105:在每個可視數(shù)據(jù)塊的空間位置加載對應的可視數(shù)據(jù)塊。
      [0094]可以理解的是:加載可視數(shù)據(jù)塊時可以按照可視數(shù)據(jù)塊的景深進行加載。如依據(jù)景深由遠及近的順序,依次在可視數(shù)據(jù)塊的空間位置上加載對應的可視數(shù)據(jù)塊,即按照每個可視數(shù)據(jù)塊的景深,優(yōu)先加載景深大即遠處的可視數(shù)據(jù)塊,然后再加載景深小即近處的可視數(shù)據(jù)塊,以避免可視數(shù)據(jù)塊的遮擋問題。
      [0095]在本申請實施例中,可視數(shù)據(jù)塊的景深按照由遠及近順序保存在子塊鏈表中,該子塊鏈表是一個維護加載的數(shù)據(jù)塊信息的鏈表,在每次加載過程中都會根據(jù)加載區(qū)域裁剪和顯示分辨率動態(tài)創(chuàng)建子塊鏈表。并且子塊鏈表并不存儲實際的數(shù)據(jù)塊,在加載完成后釋放子塊鏈表以達到節(jié)省加載所需內(nèi)存的目的。在子塊鏈表中記錄的數(shù)據(jù)塊信息可以包括:數(shù)據(jù)塊的尺寸,數(shù)據(jù)塊的景深以及數(shù)據(jù)塊與子塊鏈表的鏈表頭之間的偏移量。
      [0096]需要說明的一點是:在上述本申請實施例中,邏輯標志采用宏定義方式,如下所示:
      [0097]ENABLE_X0=0xl,
      [0098]ENABLE_Y0=0x2,
      [0099]ENABLE_Z0=0x4,
      [0100]INVERT_0=0x8,
      [0101]ENABLE_Xl=0xl0,
      [0102]ENABLE_Yl=0x20,
      [0103]ENABLE_Zl=0x40,
      [0104]INVERT_l=0x80,
      [0105]ENABLE_X2=0xl00,
      [0106]ENABLE_Y2=0x200,
      [0107]ENABLE_Z2=0x400,
      [0108]INVERT_2=0x800,
      [0109]0R_SELECT=0xl000,
      [0110]INVERT_0UTPUT=0x2000,
      [0111]SUB_V0LUME=ENABLE_X0|ENABLE_Y0|ENABLE_Z0,
      [0112]EXCLUS10N_B0X=SUB_V0LUME|INVERT_0UTPUT,
      [0113]CR0SS=ENABLE_X0|ENABLE_Y0|ENABLE_Y11ENABLE_Z11ENABLE_X2|ENABLE_Z2|0R_SELECT,
      [0114]CR0SS_INVERT=CR0SS|INVERT_0UTPUT,
      [0115]FENCE=ENABLE_XO|ENABLE_Y11ENABLE_Z2|0R_SELECT,
      [0116]FENCE_INVERT=FENCE|INVERT_0UTPUT。
      [0117]其中,邏輯標志:ENABLE_X0、ENABLE_X1、ENABLE_X2用于表示加載區(qū)域的X軸方向的最小邊界xmin和最大邊界xmax是否有效,當X軸方向的最小邊界xmin和最大邊界xmax有效時,表示啟用X軸方向,此時需要設置ENABLE_X0=0xl、ENABLE_Xl=0xl0、ENABLE_X2=0xl00o當X軸方向的最小邊界xmin和最大邊界xmax有效時,表示禁用X軸方向,此時不需要設置 ENABLE_X0、ENABLE_X1、ENABLE_X2。
      [0118]邏輯標志:ENABLE_Y0、ENABLE_Y1、ENABLE_Y2用于表示加載區(qū)域的Y軸方向的最小邊界ymin和最大邊界ymax是否有效,當Y軸方向的最小邊界ymin和最大邊界ymax有效時,表示啟用 Y 軸方向,此時需要設置 ENABLE_Y0=0x2、ENABLE_Yl=0x20、ENABLE_Y2=0x200。當Y軸方向的最小邊界ymin和最大邊界ymax有效時,表示禁用Y軸方向,此時不需要設置ENABLE_Y0、ENABLE_Y1、ENABLE_Y2。
      [0119]邏輯標志:ENABLE_Z0、ENABLE_Z1、ENABLE_Z2用于表示加載區(qū)域的Z軸方向的最小邊界zmin和最大邊界zmax是否有效,當Z軸方向的最小邊界zmin和最大邊界zmax有效時,表示啟用 Z 軸方向,此時需要設置 ENABLE_Z0=0x4、ENABLE_Zl=0x40、ENABLE_Z2=0x400。當Z軸方向的最小邊界zmin和最大邊界zmax有效時,表示禁用Z軸方向,此時不需要設置ENABLE_Z0、ENABLE_Z1、ENABLE_Z2。
      [0120]通過邏輯標志:ENABLE_X0=0xl,ENABLE_Y0=0x2, ENABLE_Z0=0x4, ENABLE_Xl=OxlO,ENABLE_Yl=0x20,ENABLE_Zl=0x40,ENABLE_X2=0xl00, ENABLE_Y2=0x200, ENABLE_Z2=0x400定義X、Y、Z三個軸方向的最大和最小邊界定義出加載區(qū)域的裁剪框。
      [0121]邏輯標志:INVERT_0、INVERT_1、INVERT_2表示對是否對 ENABLE_X0,ENABLE_Y0,ENABLE_Z0, ENABLE_X1, ENABLE_Y1, ENABLE_Z1, ENABLE_X2, ENABLE_Y2 和 ENABLE_Z2 取反,如果設置 INVERT_0=0x8、INVERT_l=0x80、INVERT_2=0x800 則需要取反,否則不取反。
      [0122]邏輯標志:0R_SELECT表示對 ENABLE_X0,ENABLE_Y0,ENABLE_Z0, ENABLE_X1,ENABLE_Y1,ENABLE_Z1,ENABLE_X2,ENABLE_Y2 和 ENABLE_Z2 進行求交還是求并運算。當設置0R_SELECT=0xl000,進行求并運算;當不設置0R_SELECT,進行求交運算。
      [0123]邏輯標志:INVERT_0UTPUT表示對 ENABLE_X0,ENABLE_Y0,ENABLE_Z0,ENABLE_X1,ENABLE_Y1,ENABLE_Z1,ENABLE_X2,ENABLE_Y2 和 ENABLE_Z2 是否進行反轉(zhuǎn)。當設置 INVERT_0UTPUT=0x2000,進行反轉(zhuǎn)。當不設置INVERT_0UTPUT,不進行反轉(zhuǎn)。
      [0124]當加載區(qū)域信息確定加載區(qū)域的X、Y和Z三個軸方向的最大和最小邊界,來定義加載區(qū)域的裁剪框:xmin和xmax確定X軸方向的最小和最大邊界;ymin和ymax確定Y軸方向的最小和最大邊界;zmin和zmax確定z軸方向的最小和最大邊界。
      [0125]這三個方向的最大和最小邊界給定后,加載區(qū)域分如下四個階段生成:
      [0126]步驟1:相對X軸方向、Y軸方向和Z軸方向,采用啟用或禁用的方式進行設置。每個軸方向都有其自身的邏輯標志:啟用或禁用。每一個軸方向的啟用或禁用設置都獨立于其他兩個方向,包括:
      [0127]啟用X軸方向:xmin和xmax確定的X軸方向的最小和最大邊界起作用,該邏輯標志通過設置 ENABLE_X0、ENABLE_XU ENABLE_X2 完成。
      [0128]禁用X軸方向:xmin和xmax確定的X軸方向的最小和最大邊界不起作用,該邏輯標志通過不設置 ENABLE_X0、ENABLE_X1、ENABLE_X2 完成。
      [0129]啟用Y軸方向:ymin和ymax確定的Y軸方向的最小和最大邊界起作用,該邏輯標志通過設置 ENABLE_Y0、ENABLE_Y1、ENABLE_Y2 完成。
      [0130]禁用Y軸方向:ymin和ymax確定的Y軸方向的最小和最大邊界不起作用,該邏輯標志通過不設置 ENABLE_Y0、ENABLE_Y1、ENABLE_Y2 完成。
      [0131]啟用Z軸方向:zmin和zmax確定的Z軸方向的最小和最大邊界起作用,該邏輯標志通過設置 ENABLE_Z0、ENABLE_ZU ENABLE_Z2 完成。
      [0132]禁用Z軸方向:zmin和zmax確定的Z軸方向的最小和最大邊界不起作用,該邏輯標志通過不設置 ENABLE_Z0、ENABLE_Z1、ENABLE_Z2 完成。
      [0133]在步驟I 用到的邏輯標志有:ENABLE_X0=0xl,ENABLE_Y0=0x2,ENABLE_Z0=0x4,ENABLE_Xl=0xl0,ENABLE_Yl=0x20,ENABLE_Zl=0x40, ENABLE_X2=0xl00, ENABLE_Y2=0x200,ENABLE_Z2=0x400,表示啟用X、Y和Z軸三個方向。
      [0134]最小和最大邊界設置分三次進行,第一次通過啟用或禁用ENABLE_X0、ENABLE_Y0、ENABLE_Z0三個邏輯標志設置最小和最大邊界,這三個邏輯標志稱為第O項;第二次通過啟用或禁用ENABLE_X1、ENABLE_Y1、ENABLE_Z1三個邏輯標志設置最小和最大邊界,這三個邏輯標志稱為第I項;第三次通過啟用或禁用ENABLE_X2、ENABLE_Y2、ENABLE_Z2三個邏輯標志設置最小和最大邊界,這三個邏輯標志稱為第2項。
      [0135]步驟2:確定是否反轉(zhuǎn)在步驟I取得的值,取其像素的補集。每一項(第O項,第I項,第2項)都有其自身的反轉(zhuǎn)標志(INVERTJ)、INVERT_1、INVERT_2),且每一項的設置都獨立于其他兩項。當INVERT_0=0x8、INVERT_l=0x80、INVERT_2=0x800,表示反轉(zhuǎn)步驟I中取得的值。
      [0136]步驟3:對第O項,第I項和第2項進行求交或求并運算。運算使用邏輯標志位0R_SELECT加以指定。設置邏輯標志0R_SELECT=0xl000表明在步驟I設置的第O項,第I項和第2項三者之間將進行并運算;不設置邏輯標志0R_SELECT表明在步驟I設置的第O項,第I項和第2項三者之間將進行交運算。
      [0137]步驟4:決定是否反轉(zhuǎn)步驟3的結(jié)果,以生成最終的加載區(qū)域。使用邏輯標志INVERT_0UTPUT指定是否反轉(zhuǎn)。若設置邏輯標志INVERT_0UTPUT=0x2000可對步驟3的結(jié)果求補集,將反轉(zhuǎn)后的結(jié)構(gòu)作為最終的加載區(qū)域。若不設置邏輯標志INVERT_0UTPUT,則步驟3的結(jié)果將成為最終的加載區(qū)域。
      [0138]下面結(jié)合具體設置與該設置對應的加載區(qū)域來詳細闡述邏輯標志的作用,三維體數(shù)據(jù)(X,Y,Z)方向的大小為300x400x300,加載區(qū)域信息中(X,Y,Z)三個方向的最小最大邊界值(xmin, ymin, zmin, xmax, ymax, zmax)設為(100,100,100, 200, 200, 200)。
      [0139]下面的代碼給出了通過設置第O項的ENABLE_X0和ENABLE_Z0形成的加載區(qū)域,圖5所示灰色區(qū)域為加載區(qū)域。代碼如下:
      [0140]xmin=100;xmax=200;
      [0141]ymin=100;ymax=200;
      [0142]zmin=100;zmax=200;
      [0143]myR01->box.setValue (xmin, ymin, zmin, xmax, ymax, zmax);
      [0144]myR01->flags.setValue (ENABLE_X0 | ENABLE_Z0),其表示啟用 ENABLE_X0 和ENABLE_Z0,加載的體數(shù)據(jù)是 100x400x100。
      [0145]下面的代碼給出了通過設置第I項的ENABLE_Y1形成的加載區(qū)域,加載區(qū)域如圖6所示灰色區(qū)域,代碼如下:
      [0146]xmin=100;xmax=200;
      [0147]ymin=100;ymax=200;
      [0148]zmin=100;zmax=200;
      [0149]myR01->box.setValue (xmin, ymin, zmin, xmax, ymax, zmax);
      [0150]myR01->flags.setValue (ENABLE_Y1 ),其表示啟用 ENABLE_Y1,加載的體數(shù)據(jù)是300x100x300。
      [0151]下面的代碼給出了在步驟3未設置0R_SELECT,獲得第O項和第I項的交集,其求交結(jié)果對應的加載區(qū)域如圖7所示灰色區(qū)域:
      [0152]xmin=100;xmax=200;
      [0153]ymin=100;ymax=200;
      [0154]zmin=100;zmax=200;
      [0155]myR01->box.setValue (xmin, ymin, zmin, xmax, ymax, zmax);
      [0156]myR01->flags.setValue (ENABLE_X0 |ENABLE_Z0 |ENABLE_Y1),加載的體數(shù)據(jù)是100x100x100。
      [0157]下面的代碼給出了在步驟3設置0R_SELECT,獲得第O項和第I項的并集,步驟4的反轉(zhuǎn)未被使用,求并結(jié)果對應的加載區(qū)域如圖8所示灰色區(qū)域:[0158]xmin=100;xmax=200;
      [0159]ymin=100;ymax=200;
      [0160]zmin=100;zmax=200;
      [0161]myR01->box.setValue (xmin, ymin, zmin, xmax, ymax, zmax);
      [0162]myR01->flags.setValue (ENABLE_X0 | ENABLE_Z0 | ENABLE_Y11 0R_SELECT),該加載區(qū)域所加載的體數(shù)據(jù)是100x400x100和300x100x300的并集。
      [0163]下面的代碼給出了在步驟3設置0R_SELECT,獲得第O項和第I項的并集,并使用了步驟4的反轉(zhuǎn),產(chǎn)生的加載區(qū)域如圖9所示灰色區(qū)域:
      [0164]xmin=100;xmax=200;
      [0165]ymin=100;ymax=200;
      [0166]zmin=100;zmax=200;
      [0167]myR01->box.setValue (xmin, ymin, zmin, xmax, ymax, zmax);
      [0168]myR01->flags.setValue (ENABLE_X0 | ENABLE_Z0 | ENABLE_Y11 0R_SELECT | INVERT_OUTPUT),該加載區(qū)域加載的體數(shù)據(jù)是三維數(shù)據(jù)中除100x400x100和300x100x300的并集之外的體數(shù)據(jù)。
      [0169]其他幾種預定義的邏輯標志對應的加載區(qū)域如圖10 Ca)至10 Cf)所示,這些加載區(qū)域代表了一些特定形狀的幾何形體,其代碼如下包括:
      [0170]SUB_V0LUME=ENABLE_X0 | ENABLE_Y0 I ENABLE_Z0,其對應如圖 10 (a)所示加載區(qū)域。
      [0171]EXCLUS10N_B0X=SUB_V0LUME | INVERT_0UTPUT,其對應如圖 10 (b)所示加載區(qū)域。
      [0172]CR0SS=ENABLE_X0|ENABLE_Y0|ENABLE_Y11ENABLE_Z11ENABLE_X2|ENABLE_Z2|0R_SELECT,其對應如圖10 (c)所示加載區(qū)域。
      [0173]CR0SS_INVERT=CR0SS | INVERT_0UTPUT,其對應如圖 10 (d)所示加載區(qū)域。
      [0174]FENCE=ENABLE_XO | ENABLE_Y11 ENABLE_Z2 | 0R_SELECT,其對應如圖 10 Ce)所示加載區(qū)域。
      [0175]FENCE_INVERT=FENCE | INVERT_0UTPUT,其對應如圖 10 Cf)所示加載區(qū)域。
      [0176]還需要說明的一點是:在加載可視化數(shù)據(jù)以三維圖形展示三維體數(shù)據(jù)的同時,還支持用戶的旋轉(zhuǎn)、縮放和拖拽操作,其中旋轉(zhuǎn)是用戶通過鼠標拖拽對三維體數(shù)據(jù)進行三維旋轉(zhuǎn);縮放是用戶通過鼠標滾輪操作對三維體數(shù)據(jù)進行推進和拉遠;拖拽是用戶通過鼠標拖拽對三維體數(shù)據(jù)范圍進行選擇。
      [0177]其中旋轉(zhuǎn)和縮放這兩種用戶操作通過改變相機參數(shù),進而相應地修改視景體參數(shù),間接地影響三維體數(shù)據(jù)的位置和大小。場景相機參數(shù)和視景體參數(shù)基本一致,但這些參數(shù)被放置在相機和視景體兩個單獨的對象中,其共有的參數(shù)包括相機位置、觀察方向、近裁剪面距離、遠裁剪面距離、寬度角、高度角、寬高比x/y等,這些參數(shù)與視景體的關(guān)系如圖11所示。視景體參數(shù)的改變,會使得顯示分辨率和可視數(shù)據(jù)塊發(fā)生更改,所以當確定用戶對三維體數(shù)據(jù)進行旋轉(zhuǎn)和縮放操作后,需要重新確定顯示分辨率和可視數(shù)據(jù)塊,即重新執(zhí)行步驟102及其后續(xù)步驟。
      [0178]而拖拽這種用戶操作直接改變加載區(qū)域的最外層,即使加載區(qū)域變化,此時同樣使得顯示分辨率和可視數(shù)據(jù)塊發(fā)生更改,所以當確定用戶對三維體數(shù)據(jù)進行拖拽操作后,需要重新確定顯示分辨率和可視數(shù)據(jù)塊,即重新執(zhí)行步驟102及其后續(xù)步驟。
      [0179]與上述方法實施例相對應,本申請實施例還提供一種三維體數(shù)據(jù)可視化裝置,其結(jié)構(gòu)示意圖如圖12所示,可以包括:生成單元11、確定單元12、裁剪單元13、計算單元14和加載單元15。其中,
      [0180]生成單元11,用于獲取用戶輸入的三維體數(shù)據(jù)的加載信息,生成加載信息對應的加載區(qū)域。
      [0181]具體的,生成單元11獲取用戶輸入的三維實體數(shù)據(jù)的加載區(qū)域信息以及邏輯標志信息,依據(jù)加載區(qū)域信息和邏輯標志信息,生成加載區(qū)域,其中加載區(qū)域信息是加載區(qū)域的大小信息,邏輯標志信息用于控制加載區(qū)域的形狀。在本申請實施例中,生成單元11可以參見上述列舉的加載區(qū)域生成代碼以及相應的說明實現(xiàn),對此本申請不再加以闡述。
      [0182]確定單元12,用于確定加載區(qū)域的顯示分辨率以及顯示分辨率下需要加載到加載區(qū)域的數(shù)據(jù)塊。
      [0183]在本申請實施例中,確定單元12的結(jié)構(gòu)示意圖請參閱圖13所示,可以包括:獲取子單元121、第一計算子單元122、第二計算子單元123和確定子單元124。其中,
      [0184]獲取子單元121,用于獲取加載區(qū)域的最外層在視圖區(qū)域的投影區(qū)域,其中視圖區(qū)域是顯示屏幕內(nèi)可供圖形顯示的最大范圍。如果把圖形顯示過程看做是繪畫,那么視圖區(qū)域相當于繪畫用的畫布大小。在視圖區(qū)域內(nèi)的投影所構(gòu)成的區(qū)域是加載區(qū)域在視圖區(qū)域投影后得到的投影區(qū)域,該投影區(qū)域可以等于所述視圖區(qū)域,也可以占視圖區(qū)域的部分區(qū)域。
      [0185]第一計算子單元122,用于計算投影區(qū)域和視圖區(qū)域的比值。如Dl是以像素為單位得到的投影區(qū)域面積,D2是以像素為單位得到的視圖區(qū)域面積,計算Dl與D2的比值作為投影區(qū)域和視圖區(qū)域 的比值R=D1/D2。
      [0186]第二計算子單元123,用于依據(jù)公式D=RX (L-1)得到加載區(qū)域的顯示分辨率,其中L為分辨率的級數(shù),R為比值,且當R大于I時將其設置為I,否則按照R的實際取值進行顯示分辨率的計算。從顯示分辨率的計算公式可以看出,隨著比值R的增加,顯示分辨率從O至L-1分辨率逐級增加,O級分辨率最低,L-1級分辨率最高。
      [0187]確定子單元124,用于確定顯示分辨率下需要加載到加載區(qū)域的數(shù)據(jù)塊。其中加載到加載區(qū)域的數(shù)據(jù)塊是對三維體數(shù)據(jù)進行均分采樣后得到的具有顯示分辨率且具有相同體素的數(shù)據(jù)塊。其過程可以是:先以預設體素對三維體數(shù)據(jù)進行均分,得到與三維體數(shù)據(jù)具有相同顯示分辨率的數(shù)據(jù)塊;然后再對這些數(shù)據(jù)塊進行采樣得到比三維體數(shù)據(jù)的顯示分辨率低一級的顯示分辨率下的數(shù)據(jù)塊,……,依次類推,直至得到最低級的顯示分辨率下的數(shù)據(jù)塊,具體可參閱圖2和圖3的相關(guān)說明。
      [0188]可以理解的是,數(shù)據(jù)量越大其對內(nèi)存的需求量就越大,加載區(qū)域作為三維體數(shù)據(jù)的部分區(qū)域,其顯示分辨率受加載區(qū)域在視圖區(qū)域投影面積的影響,會小于三維體數(shù)據(jù)的顯示分辨率,因此在確定顯示分辨率后,還需要進一步確定該顯示分辨率下需要加載到加載區(qū)域的數(shù)據(jù)塊。由于在低顯示分辨率下加載到加載區(qū)域的數(shù)據(jù)量小于三維體數(shù)據(jù)的數(shù)據(jù)量,所以在后續(xù)加載過程中可以加快加載效率。
      [0189]裁剪單元13,用于對加載區(qū)域進行裁剪,得到加載區(qū)域包括的所有可視數(shù)據(jù)塊,其中可視數(shù)據(jù)塊是加載到加載區(qū)域的數(shù)據(jù)塊中在視景體內(nèi)可見的數(shù)據(jù)塊。
      [0190]具體的,裁剪單元13具體用于:將加載區(qū)域的每個數(shù)據(jù)塊的八個頂點的坐標和視景體的坐標進行對比。如果數(shù)據(jù)塊的至少一個頂點的坐標包括在視景體的坐標內(nèi),則將數(shù)據(jù)塊作為可視區(qū)域的可視數(shù)據(jù)塊。
      [0191]其中頂點的坐標包括在視景體的坐標內(nèi)滿足條件:視景體由六個面包圍而成,每個面通過面的法向量確定面的里側(cè)和外側(cè)。面的里側(cè)是指處于視景體內(nèi)部的一側(cè),面的外側(cè)處于視景體外部的一側(cè)。當頂點處于面法向量指向的那一側(cè)(里側(cè))時,頂點坐標代入平面方程時其方程值為正,反之為負。據(jù)此,當頂點坐標代入六個平面方程皆為正時,則該頂點處于視景體內(nèi)部;否則,該頂點處于視景體外部。
      [0192]計算單元14,用于依據(jù)視景體和顯示分辨率,分別計算每個可視數(shù)據(jù)塊在顯示屏幕的空間位置。
      [0193]加載單元15,用于在每個可視數(shù)據(jù)塊的空間位置加載對應的可視數(shù)據(jù)塊。
      [0194]在本申請實施例中,計算單元14具體用于:依據(jù)視景體的坐標系和加載區(qū)域的坐標系,對可視數(shù)據(jù)塊的坐標進行轉(zhuǎn)換,得到基于視景體的坐標系的可視數(shù)據(jù)塊的坐標。依據(jù)顯示分辨率,將基于視景體的坐標系的可視數(shù)據(jù)塊的坐標轉(zhuǎn)換為可視數(shù)據(jù)塊在顯示屏幕中的空間位置。
      [0195]加載單元15具體用于:獲取各個可視數(shù)據(jù)塊的景深。依據(jù)景深由遠及近的順序,依次在可視數(shù)據(jù)塊的空間位置上加載對應的可視數(shù)據(jù)塊。即按照每個可視數(shù)據(jù)塊的景深,優(yōu)先加載景深大即遠處的可·視數(shù)據(jù)塊,然后再加載景深小即近處的可視數(shù)據(jù)塊,以避免可視數(shù)據(jù)塊的遮擋問題。
      [0196]在本申請實施例中,可視數(shù)據(jù)塊的景深按照由遠及近順序保存在子塊鏈表中,該子塊鏈表是一個維護加載的數(shù)據(jù)塊信息的鏈表,在每次加載過程中都會根據(jù)加載區(qū)域裁剪和顯示分辨率動態(tài)創(chuàng)建子塊鏈表。并且子塊鏈表并不存儲實際的數(shù)據(jù)塊,在加載完成后釋放子塊鏈表以達到節(jié)省加載所需內(nèi)存的目的。在子塊鏈表中記錄的數(shù)據(jù)塊信息可以包括:數(shù)據(jù)塊的尺寸,數(shù)據(jù)塊的景深以及數(shù)據(jù)塊與子塊鏈表的鏈表頭之間的偏移量。
      [0197]需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于系統(tǒng)類實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
      [0198]最后,還需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
      [0199]為了描述的方便,描述以上系統(tǒng)時以功能分為各種單元分別描述。當然,在實施本申請時可以把各單元的功能在同一個或多個軟件和/或硬件中實現(xiàn)。
      [0200]通過以上的實施方式的描述可知,本領域的技術(shù)人員可以清楚地了解到本申請可借助軟件加必需的通用硬件平臺的方式來實現(xiàn)?;谶@樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本申請各個實施例或者實施例的某些部分所述的方法。
      [0201] 以上對本申請所提供的一種三維體數(shù)據(jù)可視化方法及裝置進行了詳細介紹,本文中應用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領域的一般技術(shù)人員,依據(jù)本申請的思想,在【具體實施方式】及應用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應理解為對本申請的限制。
      【權(quán)利要求】
      1.一種三維體數(shù)據(jù)可視化方法,其特征在于,包括: 獲取用戶輸入的三維體數(shù)據(jù)的加載信息,生成所述加載信息對應的加載區(qū)域; 確定所述加載區(qū)域的顯示分辨率以及所述顯示分辨率下需要加載到所述加載區(qū)域的數(shù)據(jù)塊,其中所述數(shù)據(jù)塊是對所述三維體數(shù)據(jù)進行均分采樣后得到的具有所述顯示分辨率且具有相同體素的數(shù)據(jù)塊; 對所述加載區(qū)域進行裁剪,得到所述加載區(qū)域包括的所有可視數(shù)據(jù)塊,其中所述可視數(shù)據(jù)塊是加載到加載區(qū)域的數(shù)據(jù)塊中在視景體內(nèi)可見的數(shù)據(jù)塊; 依據(jù)所述視景體和所述顯示分辨率,分別計算每個所述可視數(shù)據(jù)塊在顯示屏幕的空間位置; 在每個所述可視數(shù)據(jù)塊的空間位置加載對應的所述可視數(shù)據(jù)塊。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,確定所述加載區(qū)域的顯示分辨率包括: 獲取所述加載區(qū)域的最外層在視圖區(qū)域的投影區(qū)域,其中所述視圖區(qū)域是顯示屏幕內(nèi)可供圖形顯示的最大范圍; 計算所述投影區(qū)域和所述視圖區(qū)域的比值; 依據(jù)公式D=RX (L-1)得到所述加載區(qū)域的顯示分辨率,其中L為分辨率的級數(shù),R為比值,且當R大于I時將其設置為I。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在于,對所述加載區(qū)域進行裁剪,得到所述加載區(qū)域包括的所有可視數(shù)據(jù)塊,包括: 將所述加載區(qū)域的每個數(shù)據(jù)塊的八個頂點的坐標和所述視景體的坐標進行對比; 如果所述數(shù)據(jù)塊的至少一個頂點的坐標包括在所述視景體的坐標內(nèi),則將所述數(shù)據(jù)塊作為所述可視區(qū)域的可視數(shù)據(jù)塊。
      4.根據(jù)權(quán)利要求3所述的方法,其特征在于,依據(jù)所述視景體和所述顯示分辨率,分別計算每個所述可視數(shù)據(jù)塊的空間位置,包括: 依據(jù)所述視景體的坐標系和所述加載區(qū)域的坐標系,對所述可視數(shù)據(jù)塊的坐標進行轉(zhuǎn)換,得到基于所述視景體的坐標系的可視數(shù)據(jù)塊的坐標; 依據(jù)所述顯示分辨率,將所述基于所述視景體的坐標系的可視數(shù)據(jù)塊的坐標轉(zhuǎn)換為所述可視數(shù)據(jù)塊在顯示屏幕中的空間位置; 在每個所述可視數(shù)據(jù)塊的空間位置加載對應的所述可視數(shù)據(jù)塊,包括:獲取各個所述可視數(shù)據(jù)塊的景深;依據(jù)景深由遠及近的順序,依次在所述可視數(shù)據(jù)塊的空間位置上加載對應的所述可視數(shù)據(jù)塊。
      5.根據(jù)權(quán)利要求1至4任意一項所述的方法,其特征在于,獲取用戶輸入的三維體數(shù)據(jù)的加載信息,生成所述加載信息對應的加載區(qū)域,包括: 獲取用戶輸入的三維實體數(shù)據(jù)的加載區(qū)域信息以及邏輯標志信息,其中所述加載區(qū)域信息是所述加載區(qū)域的大小信息,所述邏輯標志信息用于控制所述加載區(qū)域的形狀; 依據(jù)所述加載區(qū)域信息和所述邏輯標志信息,生成所述加載區(qū)域。
      6.一種三維體數(shù)據(jù)可視化裝置,其特征在于,包括: 生成單元,用于獲取用戶輸入的三維體數(shù)據(jù)的加載信息,生成所述加載信息對應的加載區(qū)域; 確定單元,用于確定所述加載區(qū)域的顯示分辨率以及所述顯示分辨率下需要加載到所述加載區(qū)域的數(shù)據(jù)塊,其中所述數(shù)據(jù)塊是對所述三維體數(shù)據(jù)進行均分采樣后得到的具有所述顯示分辨率且具有相同體素的數(shù)據(jù)塊; 裁剪單元,用于對所述加載區(qū)域進行裁剪,得到所述加載區(qū)域包括的所有可視數(shù)據(jù)塊,其中所述可視數(shù)據(jù)塊是加載到加載區(qū)域的數(shù)據(jù)塊中在視景體內(nèi)可見的數(shù)據(jù)塊; 計算單元,用于依據(jù)所述視景體和所述顯示分辨率,分別計算每個所述可視數(shù)據(jù)塊在顯示屏幕的空間位置; 加載單元,用于在每個所述可視數(shù)據(jù)塊的空間位置加載對應的所述可視數(shù)據(jù)塊。
      7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述確定單元包括: 獲取子單元,用于獲取所述加載區(qū)域的最外層在視圖區(qū)域的投影區(qū)域,其中所述視圖區(qū)域是顯示屏幕內(nèi)可供圖形顯示的最大范圍; 第一計算子單元,用于計算所述投影區(qū)域和所述視圖區(qū)域的比值; 第二計算子單元,用于依據(jù)公式D=RX (L-1)得到所述加載區(qū)域的顯示分辨率,其中L為分辨率的級數(shù),R為比值, 且當R大于I時將其設置為I ; 確定子單元,用于確定所述顯示分辨率下需要加載到所述加載區(qū)域的數(shù)據(jù)塊。
      8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裁剪單元具體用于:將所述加載區(qū)域的每個數(shù)據(jù)塊的八個頂點的坐標和所述視景體的坐標進行對比;如果所述數(shù)據(jù)塊的至少一個頂點的坐標包括在所述視景體的坐標內(nèi),則將所述數(shù)據(jù)塊作為所述可視區(qū)域的可視數(shù)據(jù)塊。
      9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述計算單元具體用于:依據(jù)所述視景體的坐標系和所述加載區(qū)域的坐標系,對所述可視數(shù)據(jù)塊的坐標進行轉(zhuǎn)換,得到基于所述視景體的坐標系的可視數(shù)據(jù)塊的坐標;依據(jù)所述顯示分辨率,將所述基于所述視景體的坐標系的可視數(shù)據(jù)塊的坐標轉(zhuǎn)換為所述可視數(shù)據(jù)塊在顯示屏幕中的空間位置; 所述加載單元具體用于:獲取各個所述可視數(shù)據(jù)塊的景深;依據(jù)景深由遠及近的順序,依次在所述可視數(shù)據(jù)塊的空間位置上加載對應的所述可視數(shù)據(jù)塊。
      10.根據(jù)權(quán)利要求6至9任意一項所述的裝置,其特征在于,所述生成單元具體用于:獲取用戶輸入的三維實體數(shù)據(jù)的加載區(qū)域信息以及邏輯標志信息,依據(jù)所述加載區(qū)域信息和所述邏輯標志信息,生成所述加載區(qū)域,其中所述加載區(qū)域信息是所述加載區(qū)域的大小信息,所述邏輯標志信息用于控制所述加載區(qū)域的形狀。
      【文檔編號】G06F3/14GK103440678SQ201310432189
      【公開日】2013年12月11日 申請日期:2013年9月22日 優(yōu)先權(quán)日:2013年9月22日
      【發(fā)明者】郭曉新, 魏曉輝, 胡亮, 車翔玖, 黃大年, 高占恒, 白森, 白鑫 申請人:吉林大學
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1