Introduzione al linguaggio di descrizione di scene del raytracer POV-Ray         pagina 8
di Friedrich A. Lohmüller
English English English
Français français
Deutsch Deutsch

Home
- POV-Ray Tutorials
 
   Introduzione a POV-Ray
   Indice del contenuto
 
  1. Usare POV-Ray:
      "Insert Menu Add-on".
  2. Principi fondamentali
      Comme descrivere una scena?
      Coordinate 3D,
      Numeri e vettori
  3. Struttura di Scena
      Esempio di Base.
  4. Scene file header:
      #include files,
      camera, light_source.
  5. Oggetti geometrici di base
      sphere, box, cylinder,
      cone, torus, plane.
      et altri oggetti
  6. Trasformazioni
      scala, rotazione,
      translazione e altri.
      CSG: union,
      difference, intersection.
  7. Colori e superfici
      texture, pigment, normal, finish
>8. #declare, #local, #macro.
      Variabili e oggetti flessibili.
  9. #while - loops, cicli.
      Esempi di Base.
 10. #include, include files.
      Oggetti riutilizzabili.
 11. Efficienza,
      velocità, flessibilità,
      lavorare con moduli.
      Adattare di 3.1 a 3.5;3.6
      Adattare di 3.5;3.6 a 3.7
      POV-Ray + Windows Vista.
 
  - Insert Menu Add-on
    & Download
                                                     

#declare, #local  - Abbreviazioni, variablili e oggetti flessibili.
Definizione dei valori variabili (numeri e vettori), delle strutture e degli oggetti etc.
Bisogna non dimenticare quando scegliamo i nomi e le abbreviazioni:
> Non usare alcuni caratteri nazionali specifici! > Non usare chiave riservati!
> i capitali ed i piccoli caratteri sono discriminati!
> È racommandato: per tutti gli oggetti e cose definito da sè - usi i capitali all'inizio!

Le parole chiavi riservati del POV-Raggio cominciano con caratteri piccoli!


#declare si usa per variabili che sono valido globali, mentre in una macro o un include file si può dichiarare con #local variabili che sono valido solo locali. Queste variabili locali si puòo cambiare all'interno di una macro o di un include file (per es. come un contatore in un while loop), senza influenzare una variabile globale con lo stesso nome fuori della macro o del include file. Variabili locali no si può 'vedere' (cioè: non essistono!) fuori della regione dove sono dichirarati!

Un esempio per l'uso di oggetti e valori definiti con "#declare ... = ":

#declare R1 = 0.25 ; // ball radius
#declare RR = 1.00 ; // ring radius
#declare Position_1 =  <0,0.25,1> ;
#declare Ball_Texture =
 texture{ pigment{ color rgb<1,0.65,0>}
          finish { phong 1.0 }
        } // end of texture
#declare Ball1 =
 sphere{ <RR,0,0>,R1
         texture{Ball_Texture}}
//-------------------------------------
#declare BallHalfCircle =
union{
  object{Ball1 rotate <0,  0,0>}
  object{Ball1 rotate <0, 20,0>}
  object{Ball1 rotate <0, 40,0>}
  object{Ball1 rotate <0, 60,0>}
  object{Ball1 rotate <0, 80,0>}
  object{Ball1 rotate <0,100,0>}
  object{Ball1 rotate <0,120,0>}
  object{Ball1 rotate <0,140,0>}
  object{Ball1 rotate <0,160,0>}
  object{Ball1 rotate <0,180,0>}
 } // end of BallHalfCircle
// drawing command:
object{ BallHalfCircle
        translate Position_1}
// -------------------------------- end 
Example declare
Descrizione della scena per POV-Ray:
BallHalfCircle_1.pov




#macro ... #end
Ciò permette una definizione molto più flessibile per es. degli oggetti.

Per i nomi e le abbreviazioni veda il mio suggerimento a "#declare".
Qui un esempio per l'uso di "#macro":
- Un semicerchio di sfere -
#macro BallHalfCircle (R1, RR, Texture)
#local Ball1 =
 sphere{ <RR,0,0>,R1 texture{Texture}}
union{
  object{Ball1 rotate <0,  0,0>}
  object{Ball1 rotate <0, 20,0>}
  object{Ball1 rotate <0, 40,0>}
  object{Ball1 rotate <0, 60,0>}
  object{Ball1 rotate <0, 80,0>}
  object{Ball1 rotate <0,100,0>}
  object{Ball1 rotate <0,120,0>}
  object{Ball1 rotate <0,140,0>}
  object{Ball1 rotate <0,160,0>}
  object{Ball1 rotate <0,180,0>}
 } // end of BallHalfCircle
#end // ------------------ end of macro
//-------------------------------------
#declare Texture1 =
  texture{ pigment{ color rgb<1,0.65,0>}
           finish { phong 1.0}
         }
#declare Texture2 =
  texture{ pigment{ color rgb<1,0.2,0>}
           finish { phong 1.0}
         }
// drawing commands:
object{
  BallHalfCircle(0.25, 1.00, Texture1)
  translate<0,0.25,1>}
object{
  BallHalfCircle(0.15, 0.50, Texture2)
  translate<0,0.5,1>}
// -------------------------------- end 
Example macro
Descrizione della scena per POV-Ray:
BallHalfCircle_2.pov





parte 0 | parte 1 | parte 2 | parte 3 | parte 4 | parte 5 | parte 6 | parte 7 | parte 8 | parte 9 | parte 10 | parte 11

top

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