Home
- POV-Ray Tutorial
Geometrische Körper
Inhaltsübersicht
Grundkörper
Körper mit Makros + CSG
3D-Text-Objekte
Andere Formen
Non-CSG Objekte
height_field + HF macros
- height_field mit Bildern
- height_field gerastert
- height_field mit Funktionen
>height_field massiv
>HF - Berge u. Täler
- HF_Square
- HF_Sphere
- HF_Cylinder
- HF_Torus
Isosurfaces
|
|
"height_field" massiv:
Lokal begrenztes "height_field" und massiver "height_field"-Körper.
|
|
Ein lokal begrenztes "height_field" erhält man z.B.
durch Überlagerung der "height_field"-Funktion mit einer der speziellen Pattern-Funktionen
"spherical" und "boxed":
#declare HF_Res_X = 1024; // number of points in x
#declare HF_Res_Z = 1024; // number of points in z
#declare SF =
function {
pigment {
spherical
color_map {
[0.0, color 0.0 ]
[0.5, color 0.5 ]
[1.0, color 1.0 ]
} // end color_map
scale <0.5,1,0.5>
translate<0.5,0,0.5>
} // end pigment
} // end function
#declare HF_Function =
function(x, y, z)
{1+f_snoise3d(x*10,y*10,z*10)*0.3 * SF(x,y,z).gray}
#declare HF_Amplitude = 0.5;
#declare D = 0.00001; // just a little bit!
height_field{
function HF_Res_X, HF_Res_Z
{ HF_Function(x,0,y) * HF_Amplitude }
//smooth
//water_level 0
translate<0,-0.42,0>
scale <1,1,1>
texture { pigment{ color rgb<0.96,0.87,0.73>}
normal{ bumps 0.25 scale 0.005 }
} // end of texture
}//------------------------------------------------ |
|
f_noise Funktion + spherical pattern
"height_field" durch die Funktion
function{1+f_snoise3d(x*10,y*10,z*10)*0.3
multipliziert mit spherical-pattern-Funktion
"height_field" durch die Funktion
function{1+f_snoise3d(x*10,y*10,z*10)*0.3
multipliziert mit boxed-pattern-Funktion
|
|
Die Erzeugung eines massiven "height_field"-Körpers:
Ein "height_field" selbst ist nur eine dünne Haut aus Dreiecken - ein sogenanntes "mesh".
Benötigt man einen massiven Körper für CSG-Operationen
("union","merge","difference" oder "intersection")
so kann man hierzu das "height_field" mittels "intersection" mit einer
"box" in einen massiven Block mit einer "height_field"-Oberfläche verwandeln.
#declare HF_Res_X = 1024; // number of points in x
#declare HF_Res_Z = 1024; // number of points in z
#declare HF_Function = function{0.1+0.1*sin(x*30)}
#declare HF_Amplitude = 0.25;
#declare D = 0.00001; // just a little bit!
intersection{
height_field{
function HF_Res_X, HF_Res_Z
{ HF_Function(x,0,y) * HF_Amplitude }
//smooth
//water_level 0
translate<0,D,0>
} // end HF
box{ <D,-0.2,D>,<1-D,0.2-D,1-D>
} // end box
texture { pigment{ color rgb<0.75,0.5,1> }
finish { phong 1 }
} // end of texture
translate<0,0.21,0>
scale <1,1,1>
}// end intersection ------------------------------ |
|
Massives "height_field" von Funktion
durch "intersection" mit "box"
|
|