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.