Page d'Accueil
- POV-Ray Tutorial
- Exemples POV-Ray
Table des matières
- Architecture
- Geometrie
- Technique
- Échelle
- Pylônes
- Garde-fou / rambard
- Pont
- Tubes
- Tuyaux
- Bifurcation de Tuyau
- Robinet d'Arrêt
- Chaîne
- Bobine de fil
- Torpedo
- Cruise Missile
- Missile
- Roue
- Camion
- Hélice
- Avion
- Canoë
- Guitare
- Afficheur 7 segments
- Câble plat - Nappe plat
- Harnais de câbles
|
|
|
Comment faire un garde-fou,
une rambarde ou une balustrade
Objets: cylinder, sphere.
Méthodes: #local, #declare, union, #macro, #while loops.
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.
|
|
La construction en detail :
Step 1: En premier lieu nous définissons une macro avec les variables de base
pour les dimensions du garde-fou
et une texture ( Pour changer cette texture, on doit définir la avant de l'intégration de la 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_Len,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<R_Len,R_H,0>}
// vertical subdivision
#if (VSD > 0)
#local Nr = 0; // start loop
#while (Nr < VSD )
cylinder{ <0,0,0>,<R_Len,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<Nr*VerticalsDistance,0,0>}
#local Nr = Nr +1 ;
#end // end of loop
texture{ Railing_Texture_1 }
} // end of union
// ---------------------------------------------
#end // ------------------------ // end of macro
|
Step 2: Maintenant nous renvoyons cette définition du garde-fou dans un fichier include,
après cela nous pouvons utiliser cette macro avec chaque fichier de scène comme un
objet prêt à l'usage nouveau.
Ce fichier on doit souvgarder ou dans la même registre comme le fichier de scène, ou
dans le registre des fichiers include de POV-Ray ou dans chaque registre mentionné dans le Library_Path
dans le fichier 'povray.ini' come:
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
|
|
Le garde-fou avec une subdivision variable.
Le garde-fou avec des textures redéclares.
La macro 'Railing_1'
du fichier include 'Railing_1.inc'.
Le fichier include pour POV-Ray :
"Railing_1.inc"
et le fichier de scène pour 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'
//------------------------------------------------------------------------//
|
|
Objets prêt à l'usage pour POV-Ray
comme fichiers include avec fichiers exemple
on peut trouver sur la page des Objets prêt à l'usage pour POV-Ray
|