Beschreibungen und Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller
    POV-Ray Beispiele - Die Erstellung von Objekten für POV-Ray
English English English
Italiano Italiano
Français français

Home
- POV-Ray Tutorial

  - POV-Ray Beispiele
    Inhaltsübersicht
  - Geometrie
  - Architektur
    - Haus
    - Dach
    - Turm mit Zinnen
    - Schloss
    - Fenster u. Tür
    - Treppen
    - Pyramide
    - Säulen
    - Bogen
    - Zäune
    - Möbel
    - Haushalt
  - Technik
                                       

 
Tower_Squared

Turm mit Zinnen

Bau eines Burgturms mit Zinnen.
Der Turm wird aus einer Rohform durch Abziehen ("difference{...}) der Zwischenräume der Zinnen erstellt. Um die Sache flexibler für spätere Änderungen im Design zu halten, werden Texturen und Abmessungen am Kopf der Szenenbeschreibung als Variable (Platzhalter) deklariert.
Um beim Abziehen mittels "difference" ein sauberes Resultat zu erhalten, muss der abzuziehende Körper eindeutig herausstehen aus dem Körper, von welchem er abgezogen wird. Dazu verwenden wir die Variable "D = 0.0001" - nur ein kleiner Hauch! So können wir einfach sagen "+D" = "ein bisschen mehr" oder "-D" = "ein bisschen weniger"!
Um die Teile, welche wir abziehen wollen, leichter zu erkennen, wählen wir noch eine zweite Textur in grüner Farbe. Später kann man dies leicht wieder wechseln indem man die Kommentar-Zeichen "//" einfach verschiebt.

Eine Include-Datei mit der man dieses Objekt als Fertig-Objekt verwenden kann findet man auf meiner POV-Ray Objects-Seite.
Die Konstruktion:
Zunächst die Texturen und Abmessungen:
#declare Tower_Texture_1 = //Sandstein
 texture{ pigment{ color rgb<0.9,0.78,0.6>}
          normal { bumps 0.5 scale 0.015 }
          finish { diffuse 0.9 phong 0.1}
        } // end of texture
#declare Tower_Texture_2=//Sandstein dunkl.
 texture{ pigment{
     // color rgb<0.9, 0.78, 0.6>*0.95}
        color rgb<0.4,1,0.0>} // test_color
          normal { bumps 0.5 scale 0.015 }
          finish { diffuse 0.9 phong 0.1}
        } // end of texture
//-----------------------------------------
#declare D = 0.0001; // nur ein bisschen!
#declare Tower_R = 2.00;//halbe Weite x, z
#declare Tower_H = 8.00;//Turmhöhe in y
// Marke 1
//-----------------------------------------
Dann benötigen wir eine Rohform des Turmes:
// Turm-Grundform
box{ <-Tower_R,       0,-Tower_R>,
     < Tower_R, Tower_H, Tower_R>
     texture{ Tower_Texture_1 }
   } // end of box
//-----------------------------------------
Tower_Squared_01
Turm-Grundform
Dann müssen wir die Abmessungen der Zinnenlücken festlegen: Wir rechnen die Höhe von der Turm-Oberkante nach unten.
#declare Merlon_H = 0.80;// Zinnenhöhe y
#declare Merlon_R = 0.20;// halbe Weite x, z
//-----------------------------------------
#declare Merlon_Cut_Off =
box { <-Merlon_R,-Merlon_H,-Tower_R-D>,
      < Merlon_R,        D, Tower_R+D>
      texture { Tower_Texture_2 }
    } // end of box
//-----------------------------------------
Um dies von der Rohform abzuziehen zu können, müssen wir es vor dieser einfügen, d.h. vor der "// Marke 1".
Tower_Squared_02
Ein Fugenzwischenraum.
Um die Position und Abmessung zu prüfen fügt man die so definierte Form zunächst als neues Objekt nach der Rohform hinzu:
object{ Merlon_Cut_Off
        translate<0,Tower_H,0> }
... ist alles okay? Dann versuchen wir das:
union{ //  union of the merlon cut offs
  object{ Merlon_Cut_Off
          translate<-2*Tower_R/4,0,0>}
  object{ Merlon_Cut_Off
          translate< 0*Tower_R/4,0,0>}
  object{ Merlon_Cut_Off
          translate< 2*Tower_R/4,0,0>}
  object{ Merlon_Cut_Off
          translate<-2*Tower_R/4,0,0>
                       rotate<0,90,0>}
  object{ Merlon_Cut_Off
          translate< 0*Tower_R/4,0,0>
                       rotate<0,90,0>}
  object{ Merlon_Cut_Off
          translate< 2*Tower_R/4,0,0>
                       rotate<0,90,0>}
  translate<0,Tower_H,0>
} // end of union of the merlon cut offs
Tower_Squared_03
Die abzuziehenden
Zwischenräume.
Wenn wir all dies in eine "difference" mit der Rohform packen, ...
#declare .... // Texturen
#declare ... // Dimensionen
#declare Merlon_Cut_Off = ....
// alles was deklariert wurde,
// dann:
difference{
 // Turm-Grundform:
 box{...
    } // end of box
 // Objekte, die abzuziehen sind:
 union{ //  union of the merlon cut offs
  object{ ...
        }
  ....
  object{ ...
        }
  translate<0,Tower_H,0>
 }// end of union of the merlon cut offs
}// end of difference 
...dann sollten wir das nebenstehende Bild erhalten:
 
 
Tower_Squared_04
Zinnen ausgehölt.
Jetzt fehlt noch das Aushölen der Balustrade der obersten Plattform:
// inner top level balustrade caved out
#declare Balu_H = 1.50; // height
#declare W_D = 0.30; // wall deepth

box { <-Tower_R+W_D,-Balu_H,-Tower_R+W_D>,
      < Tower_R-W_D,      D, Tower_R-W_D>
      texture { Tower_Texture_1 }
      translate<0,Tower_H,0>
    } // end of box
Tower_Squared_05
Zum Aushöhen der Mitte!
Wenn wir dieses OBjekt auch noch in die Klammern unserer "difference" einfügen, so erhalten wir die folgende Form:
Tower_Squared_06
Mitte ausgehöhlt!
Wie man ein realistische Wandtexture macht
Mit einer einfachen Texture, wie folgt:
#declare Tower_Texture_1 = // sandstone
 texture{ pigment{ color rgb<0.9,0.78,0.6>}
          normal { bumps 0.5 scale 0.015 }
          finish { diffuse 0.9 phong 0.1}
        } // end of texture 
können wir keine einzelnen Steine in der Mauer sehen!
Tower_Squared_07
Sandsteinmauer
ohne Fugen.
Zur Simulation einer Wand aus Steinen mit Fugen kann man das POV-Ray-Muster ("pattern") bricks verwenden:
#declare Tower_Texture_1=// sandstone
texture{
  pigment{ color rgb<0.9,0.78,0.6>}
  normal {
    pigment_pattern{ brick
                     color rgb 0.2,
                     color rgb 0.8
                     scale 0.135
                     translate<0,0,0>
                     rotate<0,0,0>
                    } // end pattern
             0.35 // normal intensity
          } // end of normal
   finish { diffuse 0.9 phong 0.1}
 } // end of texture
Tower_Squared_08
Sandsteinmauer
mit Fugen.
Probleme mit dem "bricks"-Muster
Mit dem Muster "bricks" erhalten wir oft Bilder wie das hier nebenstehende rechts.
Der Grund dafür, dass wir solche dunklen und hellen Streifen erhalten ist folgender: Wir haben in solchen Fällen mit unserer Mauerfläche genau die Mauerfuge in dem Muster getroffen. Um einen derartigen Effekt zu vermeiden und auch um etwa kleinere oder größere Steine zu erreichen, müssen wir das Muster in den Klammern von "pigment_pattern" geeignet skalieren ("scale"), verschieben ("translate") und/oder rotieren ("rotate").
Tower_Squared_09
Typischer Fugenfehler
mit "bricks".
Die Adaption der Fugenlage an die Zinnenbreite und -höhe ist eine schwierige Arbeit und gelingt nur selten völlig. Das Resultat dieser einfachen Simulation der Mauerfugen ist jedoch sehr beachtlich, besonders verglichen mit dem geringen Aufwand.
Tower_Squared_10
Klicken Sie auf das Bild
zur Vergrößerung.
 
Download aller gebrauchsferigen POV-Ray Objekte
zip-gepackt (Include-Dateien mit Beispieldateien und mit den
entsprechenden Insert Menu Add-ons für komfortable Benutzung)
auf der Download-Seite.
top

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