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

Home
- POV-Ray Tutorial

- POV-Ray Beispiele
Inhaltsübersicht
- Geometrie
- Architektur
- Technik
- Leiter
- Masten
- Geländer
- Brücke
- Röhren
- Rohrabzweigung
- Rohr-Absperrhahn
- Kette
- Drahtspule
- Torpedo
- Cruise Missile
- Rakete
- Truck
- Propeller
- Flugzeug
- Kanu
- Gitarrenbody
- 7-Segment Display
- Flachbandkabel
- Kabelbaum

Geländer

###### This example shows how to make a railing i.e. for bridges declared as a macro. The vertical supports are distributed in an equidistant way. It is possible to use variable sizes for the dimensions of the railing.

The Construction in details:

Step 1: First we declare a macro with the basic variables for the dimensions of the railing and its default texture (To changee this texture, declare it before including the macro!).
 ```#macro Railing_1( R_Len,// railing length in x R_H, // railing height in y R_D, // verticals ~distance R_R, // railing main radius VSD, // vertical subdivision )//----------------------------- // default texture ----------------------------- #ifndef( Railing_Texture_1 ) #declare Railing_Texture_1 = texture { pigment{ color rgb<1,1,1>*0.7} normal { bumps 0.25 scale 0.35} finish { phong 0.3 } } // end of texture #end // ---------------------------------------- // horizontal subdivision ---------------------- #local NumV = int ( R_Len / R_D); #local VerticalsDistance = R_Len / NumV; // equidistant! //---------------------------------------------- //---------------------------------------------- union{ // horizontals cylinder{ <0,0,0>,,R_R translate<0,R_H ,0>} sphere{<0,0,0>,R_R translate< 0,R_H,0>} sphere{<0,0,0>,R_R translate} // vertical subdivision #if (VSD > 0) #local Nr = 0; // start loop #while (Nr < VSD ) cylinder{ <0,0,0>,, R_R*1/2 translate<0,Nr*R_H/(VSD),0>} #local Nr = Nr + 1; #end // end of loop #end // verticals #local Nr = 0; #while (Nr <= NumV) cylinder{ <0,0,0>,<0,R_H,0>, R_R translate} #local Nr = Nr +1 ; #end // end of loop texture{ Railing_Texture_1 } } // end of union // --------------------------------------------- #end // ------------------------ // end of macro ```
Step 2: Now we move this railing definition in an include file, than we can use this macro from any scene file as a

This file should be saved either in the same directory like the POV-Ray scene file, in the POV-Ray include file directory or in any include file directory with is mentioned as a Library_Path in the povray.ini file like:
Library_Path="C:\Users\MyFiles\MyPovrayFiles\My_include_files"
 ```// POV-Ray 3.7/3.6 include file "Railing_1.inc" // author: Friedrich A, Lohmueller, Jan-2011 // homepage: www.f-lohmueller.de/ //---------------------------------------------- #ifndef( Railing_1_Inc_Temp) #declare Railing_1_Inc_Temp = version; #version 3.7; // 3.6; //--------------------------/////////////////// // macro 'Railing_1' //ADD HERE THE MACRO FROM ABOVE ! // end of macro 'Railing_1' //--------------------------/////////////////// /* sample: //ADD HERE A SAMPLE LIKE THE ONE BELOW ! */ end sample //---------------------------------------------- #version Railing_1_Inc_Temp; #end //------------------------- end of include file ```

The railing with variable subdivisions. The railing with redeclared textures.

The macro 'Railing_1'
from the include file 'Railing_1.inc'.

Include file for POV-Ray: "Railing_1.inc"
and scene file for POV-Ray: "railing_1_1.pov"
Step 3: Then we call the macro as an object with the according dimensions:
 ``` //------------------- optional texture -----------------------------------// /* #declare Railing_Texture_1 = texture { pigment{ color rgb<1,1,1>*0.7} normal { bumps 0.25 scale 0.35} finish { phong 0.3 } } // end of texture */ //------------------------------------------------------------------------// #include "Railing_1.inc" //------------------------------------------------------------------------// object{ Railing_1( 4.00, // railing length in x // i.e. 5.00, 0.90, // railing height in y // i.e. 1.00, 0.80, // railing vertical ~distance // i.e. 1.00, 0.025, // railing main radius // i.e. 0.025, 4, // vertical subdivision // integer, i.e. 0, 1, 2, ... ) //-----------------------------------------------------// scale <1,1,1>*1 rotate<0,0,0> translate<0.00,0.00, 0.00> } // end of object 'Railing_1' //------------------------------------------------------------------------// ```