V[x][y][z]
von Voxelwerten (evtl. bereits einer durch Filter-
und Korrekturfunktionen bearbeitet).
Die Farbwerte Cr,g,b[x][y][z]
werden mittels Phong-Shading unabhängig für jede der Farbkomponenten r, g und b
ermittelt. Dabei setzt sich der Farbwert aus Umgebungslicht sowie diffuser und spekularer
Reflektion zusammen:
Cr,g,b[x][y][z] = ambient + diffuse + specular
Das Umgebungslicht ambient
ergibt sich aus dem Produkt der Intensität des
Umgebungslichts (Ia
) und eines Reflektionskoeffizienten Ka
:
ambient = Ia·Ka
Die diffuse Reflektion ergibt sich aus dem Produkt von Lichtquellen-Intensität Il
,
Reflektionsfaktor Kd
und skalarem Produkt der Oberflächennormale N
sowie der Richtung der Lichtquelle L
(beide Vektoren sind normalisiert):
diffuse = Il·Kd·(N[x][y][z]·L)
Die spekulare Reflektion ergibt sich aus dem Produkt von Lichtquellen-Intensität I
,
Reflektionsfaktor Ks
und skalarem Produkt der Oberflächennormale N
sowie der Richtung der maximalen Reflexion H
(beide Vektoren sind normalisiert):
specular = Il·Ks·(N[x][y][z]·H)
, wobei H = (L+V)/2
(V
ist der normalisierte Blickvektor)
Die Oberflächennormale N[x][y][z]
ist durch den normalisierten Gradientenvektor
g[x][y][z]
gegeben und kann wie folgt approximiert werden:
(V[x+1][y][z]-V[x-1][y][z])/2, g[x][y][z] = { (V[x][y+1][z]-V[x][y-1][z])/2, } (V[x][y][z+1]-V[x][y][z-1])/2
Zusammengefasst ergibt sich also:
Cr,g,b[x][y][z] = Ia·Ka + Il·[Kd·(g[x][y][z]·L) + Ks·(g[x][y][z]·H)]
Um für region boundary surfaces passende Transparenzwerte
α[x][y][z]
, benötigt man eine Zuordnung zunächst eine definierte Zuordnung
von Voxelwerten Vi
zu Transparenzwerten
αi
. Zur Superposition mehrerer surfaces sowieso zur Interpolation
dazwischen liegender Transparenzwerte ergibt sich folgende Funktion:
α[x][y][z] = |g[x][y][z]| · {
αi+1·[(V[x][y][z]-Vi)/(Vi+1-Vi)] +
αi·[(Vi+1-V[x][y][z])/(Vi+1-Vi)] }
(wenn Vi ≤ V[x][y][z] ≤ Vi+1
, 0 sonst)
Für jeden Bildpunkt P[x][y]
wird ein Blickstrahl durch die Arrays der
Farbwerte C[x][y][z]
sowie der Transparenzwerte V[x][y][z]
gelegt
und an Z = max(z)
Positionen trilinearer interpoliert. Die Farbe des Bildpunkts
P[x][y]
resultiert dann aus einer Kombination der interpolierten Werte:
P[x][y] = ∑z=0,…,Z [
C[x][y][z]·α[x][y][z] ·
∏zz=z+1,…,Z(1-α[x][y][zz]) ]
wobei C[x][y][0] = B
(B
ist die Hintergrundfarbe) und
α[x][y][0] = 1
.