31.10.2013 Aufrufe

Download - Benjamin Granzow Portfolio

Download - Benjamin Granzow Portfolio

Download - Benjamin Granzow Portfolio

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

4.1. 2D TEXTURE-SLICED VOLUMEN RENDERING 26<br />

Die daraus resultierende Volumendarstellung ist sehr von der Anzahl der<br />

Ebenen abhängig, denn der Farbwert jede Ebene geht mit 1% seines Farbwertes<br />

in das endgültige Bild ein. Dadurch kann es passieren, dass bestimmte<br />

Informationen nicht mehr vom Betrachter erkennbar sind, weil diese von vielen<br />

Ebenen verdeckt werden, die höheren Dichtwerte besitzen.<br />

4.1.3 Mehrfach Texturen<br />

Durch die einfache Texturierung kann zwar ein Volumen erstellt werden,<br />

dennoch ist die Bildqualität sehr von der Anzahl der Ebenen aus dem Datenensatz<br />

abhängig. Durch die 2D-Textur Umsetzung wird die Darstellung<br />

void GLFrame : : drawSlices NegativZ ( i n t r e n d S l i c e s )<br />

{<br />

f l o a t dZPos = −1.0;<br />

f l o a t dZStep = 2 . 0 / f l o a t ( r e n d S l i c e s −1) ;<br />

f o r ( i n t s l i c e = 0 ; s l i c e < r e n d S l i c e s − 1 ; s l i c e ++){<br />

}<br />

}<br />

// Berechnet den Index der benö t i g t e n Texturen<br />

f l o a t dZPosTex = (ZCOUNT*( dZPos +1.0) / 2 . 0 ) ;<br />

i n t texIndex = ( i n t ) dZPosTex ;<br />

// I n t e r p o l a t i o n s w e r t f ü r d i e P o s i t i o n der Ebene zwischen<br />

den Texturen<br />

f l o a t alpha = dZPosTex−f l o a t ( texIndex ) ;<br />

// P o s i t i o n e n der V e r t i c e s mit Verschiebung e ntlang der Z−<br />

Achse<br />

QVector3D v e r t i c e s [ 6 ] = {<br />

QVector3D ( −1.0 , 1 . 0 , dZPos ) ,<br />

. . .<br />

} ;<br />

// Texturekoordinaten der V e r t i c e s mit O f f s e t f ü r P o s i t i o n<br />

zwischen den Ebenen<br />

QVector3D textCoord [ 6 ] = {<br />

QVector3D ( 0 . 0 , 1 . 0 , alpha ) ,<br />

. . .<br />

} ;<br />

// Zeichnet d i e V e r t i c e s mit den angegebenen<br />

Texturkoordinaten<br />

drawTexturedQuad ( v e r t i c e s , textCoord ,<br />

bindTexture ( textureStackZ [ texIndex ] ) ,<br />

bindTexture ( textureStackZ [ min ( texIndex +1,ZCOUNT) ] )<br />

) ;<br />

dZPos += dZStep ;<br />

Listing 4.3: Berechnung einer Ebene aus den Texturen auf der Z-Achse

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!