Your SlideShare is downloading. ×
Multiple volumetric datasets
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Multiple volumetric datasets

100
views

Published on

A summary of the Siggraph Asia paper, "Ray Casting of Multiple Volumetric Datasets with Polyhedral Boundaries on Manycore GPUs."

A summary of the Siggraph Asia paper, "Ray Casting of Multiple Volumetric Datasets with Polyhedral Boundaries on Manycore GPUs."

Published in: Technology, Art & Photos

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
100
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • 這些是作者群,他們來自於澳洲的圖學與視覺學院,第一作者是博士生,第二位是助理教授,另外三位是研究員,最後一位是正教授。
  • 我們重複一下他們的重點,他們做出了一個 real-time 的成像系統,這個系統可以一次繪製多個 volume data ,也可以繪製多邊形資料,下面這個圖就是他們提供的一個範例,這隻龍是多邊形資料,這個腦袋是一個 volume data ,這些煙則有九個 volume data 。然後這個系統的核心是用 CUDA 來實做的,以前 volume rendering 大多是用 shader 來寫,但是 volume data 多的時候, shader code 的 unrolling 會變得太大,而 CUDA 則不會有這個問題。
  • 這是我的 outline ,首先我會先解釋 volume rendering 跟 ray casting ,然後我會說明他們根據距離遠近,來繪製多邊形結構的方法,最後我會介紹他們的結果還有結論。
  • 首先是 volume rendering 。
  • 正常情況下當我們看向一團 volume data 的時候,得到的顏色是光線在 volume 中不斷反射之後的累積。各位可以想想前一陣子沙塵暴最嚴重的時候看出去的那一團霧茫茫的景象。
  • 那如果 volume data 的粒子不互相反射,而只有發光和吸收的效應,就像下圖所表示的, volume data 的成像就是粒子的顏色沿著視線累加的結果,在這種情況下 volume rendering 就會像 x 光照射的成像結果,就像 video 展示的,他們的 volume rendering 就是用下圖的方法繪製,這個方式就叫做 ray casting 。
  • 對於發光和吸收的效應,我們做一個簡單的公式推導,一個光強度為 c 的粒子,他到達眼睛的光強度是這段距離內吸收係數的指數積分。
  • 所以要計算沿著視線光強度的累加,就是把所有距離的光強度積分起來。
  • 他的離散式可以寫成右邊這個式子, c 是粒子的光強度, a 是粒子的不透明度,所以 1 減 aj 的乘積就是這段距離的透光率, ci 成以透光率就是每個例子貢獻的光強度,這些光強度的總合就是最後的結果。
  • 這條式子又可以化簡成根據粒子距離由近到遠的疊代式, c’ 跟 a’ 是顏色和不透明度的累加結果, c 跟 a 是新加入粒子的資料,這條公式告訴我們,光強度的累積,就是由近到遠將之前強度的累加結果加上新粒子的強度乘以先前的透光度;而不透明度的累積,則是先前的不透明度加上先前的透光度乘以新的不透明度。
  • 我們再用圖示做一個 ray casting 的總結,從 view plane 的每個 pixel 出發,沿著視線的方向進行取樣,然後由近到遠依照上述的公式做累加就可以了,右下角的圖是兩個 volume data 繪製的結果。
  • 這篇文章有提到一些加速的方法,譬如說 empty space skipping ,他將 volume 切成很多 block ,然後要取樣之前先判斷這個 block 的資料是不是可以不要畫,如果是的話就直接跳過這個 block 。
  • 另外射線的起始未置可以從 front face 的繪製得到,相對的終點位置可以從 back face 的繪製得到,而射線的方向就是終點位置減掉起始位置。
  • 接下來要介紹多邊形的成像方式,就像 volume rendering 所介紹的,遠近的順序對於透明物體的成像有很大的影響,所以這邊主要就是在解決遠近的排序問題。
  • 這是他們對於多邊形繪製的流程圖。
  • 做一個簡單的分類,左邊這邊是在做 triangle rasterization ,右邊的上半部是在做 depth sorting ,下半部則是做顏色的累加。 Depth sorting 是他們演算法的重點,但是由於他們是用 CUDA 實做,所以必須自己實做 triangle rasterization 的動作。
  • 介紹一下他們 triangle rasterization 的做法,首先也是把畫面切成很多區塊,論文裡面是 8x8 ,不過這邊以 4x4 來做解釋。他們會根據線條的方程式選一個 unit ,如上圖所示,如果 a>=0 那 unit 就是 000F ;如果 a<0 那 unit 就是 1111 ,然後再根據下面這個公式來決定每個 y 相對的 r(y) ,最後把所有的 r(y) 加起來,它相對的 pixel 就是 rasterization 要填滿的位置。
  • 我們舉一個實際的例子,假設要填滿的圖片是這個樣子,我們先算出相對的 n1(y) ,然後 unit 等於 000F ,得到相對應的 r(y) ,把 r(y) 加起來得到要填滿的 pixel 。
  • 其實他們的 depth sorting 很簡單,就是以 63 個 entries 保留最近的 63 個 triangle ,分別記錄它們的 z 值、還有 triangle 的 ID ,然後依序畫出這 63 個 triangle 就可以了。
  • 他們的論述是說,當 depth 過大時,只畫前面幾個跟依照 depth order 畫出全部的結果,是差不多的,他們有拿一個比較複雜的結構做比較,如 (a) 是一個有 81 個 depth 的資料, (b) 與 (c) 分別是用他們的方法繪製的結果和 ground truth ,他們強調,誤差在 5% 以內。
  • 最後我說明一下他們的結果。
  • 前面是另外兩種 multi-volume 的繪製方式,可以注意到當 volume data 的數量越來越多的時候,他們這個方法的優勢就越來越明顯。
  • 這是他們繪製的結果。
  • Transcript

    • 1. Ray Casting of Multiple VolumetricDatasets with Polyhedral Boundaries onManycore GPUsSIGGRAPH ASIA 20092010/03/31ked
    • 2. AuthorsBernhard KainzPhD studentMarkus GrabnerAssistant professorAlexander BornikSenior researcherStefan HauswiesnerResearch assistantJudith MuehlSenior researcherDieter SchmalstiegFull professor
    • 3. Demo
    • 4. Properties Real-time frame-rates Many volumes Arbitrary polyhedral geometry CUDA implementationA 20k polygons dragon with a 2563brain volumeand nine 643smoke clouds
    • 5. Outline Volume rendering with ray casting Depth sorting for polyhedral datasets Results
    • 6. Outline Volume rendering with ray casting Depth sorting for polyhedral datasets Results
    • 7. Volume scatteringMultiple scattering
    • 8. Volume scatteringMultiple scattering
    • 9. Volume rendering integralK(t): absorption coefficient
    • 10. Volume rendering integralK(t): absorption coefficient
    • 11. Volume rendering integralK(t): absorption coefficient
    • 12. Volume rendering integralK(t): absorption coefficient
    • 13. Ray casting
    • 14. Ray casting + empty space skipping
    • 15. Ray casting + empty space skipping
    • 16. Outline Volume rendering with ray casting Depth sorting for polyhedral datasets Results
    • 17. Flow-chart
    • 18. Flow-chartTriangle rasterizationDepth sortingIntegration
    • 19. Triangle rasterizationFor a >=0 For a < 0
    • 20. Triangle rasterizationy=0, n1(y)=1y=1, n1(y)=1y=2, n1(y)=1y=3, n1(y)=2Use r0y=0, r(y)=0x0001y=1, r(y)=0x0010y=2, r(y)=0x0100y=3, r(y)=0x3000For a >=0 For a < 0
    • 21. Triangle rasterizationy=0, n1(y)=1y=1, n1(y)=1y=2, n1(y)=1y=3, n1(y)=2Use r0y=0, r(y)=0x0001y=1, r(y)=0x0010y=2, r(y)=0x0100y=3, r(y)=0x3000For a >=0 For a < 0
    • 22. Depth sorting Use 63 entries to keep depth order A entry contains Z-value Triangle ID
    • 23. Depth sorting + evaluation Use 63 entries to keep depth order A entry contains Z-value Triangle ID81 depth data Their result Ground truth Errors > 5%
    • 24. Outline Volume rendering with ray casting Depth sorting for polyhedral datasets Results
    • 25. ResultsRoessler: shader code,C5 generates too large codeBrecheisen: can not handle >4 volumes
    • 26. Results
    • 27. Q&A
    • 28. Thx.