Graphics Reference
In-Depth Information
Abb. 10.12
Mittels prozeduraler Textur erzeugte Holzmaserung
Textur geneigt und ein wenig gedreht ist, entstehen auf den Quaderoberflächen un-
terschiedliche Muster aus konzentrischen Kreisen oder parabelähnlichen Streifen
(Abb.
10.12
).
Die folgende Funktion (nach einem Vorschlag von Milbradt, auf VisualBasic
umgestellt) ermittelt für beliebige Koordinaten u
;
v
;
w die Holzfarbe an dieser Stel-
le:
Private Function HolzFarbe(ByVal u As Single,
ByVal v As Single,
ByVal w As Single) As Color
Dim grain As Integer
Dim Radius, Winkel As Single
'
Radius = Sqrt(u
*
u+v
*
v)
Winkel = IIf(w = 0.0, 1.570796, Atan2(u, w))
Radius += 2.0
*
Sin(20.0
*
Winkel + 0.0067
*
v)
grain = Radius Mod 60
HolzFarbe = IIf(grain < 40, Color.White, Color.Brown)
End Function
Die Vorteile prozeduraler Texturen sind:
Ihr Speicheraufwand ist minimal, es ist kein Array erforderlich.
Die Texturwerte können an jeder Stelle
.
u
;
v
/
bzw.
.
u
;
v
;
w
/
berechnet werden.
Sie erreichen optimale Genauigkeit, da Runden und Interpolationen nicht erfor-
derlich sind.
Sie gelten im gesamten Definitionsraum.
Ihre Nachteile sind:
Sie sind selbst für Experten schwer zu erzeugen.
Die mehr oder weniger „manuelle“ Konstruktion komplexer Texturen ist nur mit
sehr viel Aufwand oder gar nicht möglich.