Download - Benjamin Granzow Portfolio
Download - Benjamin Granzow Portfolio
Download - Benjamin Granzow Portfolio
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