Beschreibungen und Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller

            Geometrische Körper in POV-Ray

English English English
Italiano Italiano
Français français

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
                                       
Sample height_field by_functions Sample height_field by_functions

"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"

© Friedrich A. Lohmüller, 2014
www.f-lohmueller.de
  top