Dieser Würfel aus 125 Würfelchen wird mit der daneben stehenden dreifach geschachtelten Schleife erzeugt.

#declare Anzahl = 5
  
union {  
   #declare CubeXCount = 0
   #while (CubeXCount < Anzahl)
   
      #declare CubeYCount = 0
      #while (CubeYCount < Anzahl)
      
         #declare CubeZCount = 0
         #while (CubeZCount < Anzahl)
                box {  0, 1*0.8
                   translate <CubeXCount, CubeYCount, CubeZCount>
                }
           #declare CubeZCount = CubeZCount+1
        #end
        
        #declare CubeYCount = CubeYCount+1
      #end
      
   #declare CubeXCount = CubeXCount+1
   #end
   texture {Aluminum}
}


Das folgende Gewebe basiert auf einem Makro, das Dreiecksflächen zu einem Wellenband zusammensetzt.
        
#macro WellenBand(Laenge,Breite,Amplitude,Wellen,Dreiecke)

   #local rFaktor=radians(Wellen*360)/Laenge;
   #local Step=Laenge/Dreiecke;

   mesh
   {
      triangle { <0, Amplitude*sin(0*rFaktor), -Breite/2>,
                 <0+Step/2, Amplitude*sin((0+Step/2)*rFaktor), Breite/2>,
                 <0, Amplitude*sin(0*rFaktor), Breite/2>
      }
      #local xPos = 0;

      #while (xPos+Step <= Laenge)
         triangle { <xPos, Amplitude*sin(xPos*rFaktor), -Breite/2>,
                    <xPos+Step/2, Amplitude*sin((xPos+Step/2) *rFaktor), Breite/2>,
                    <xPos+Step, Amplitude*sin((xPos+Step)*rFaktor), -Breite/2>
         }
         triangle { <xPos+Step/2, Amplitude*sin((xPos+Step/2)*rFaktor), Breite/2>,
                    <xPos+Step, Amplitude*sin((xPos+Step)*rFaktor), -Breite/2>,
                    <xPos+Step*3/2, Amplitude*sin((xPos+Step*3/2)*rFaktor), Breite/2>  
         }
   
         #local xPos = xPos+Step; // und das nächste Rechteck aus 2 Dreiecken
      #end                                                                   
      
      triangle { <xPos, Amplitude*sin((xPos)*rFaktor), -Breite/2>,
                 <xPos+Step/2, Amplitude*sin((xPos+Step/2) *rFaktor), Breite/2>,
                 <xPos+Step/2, Amplitude*sin((xPos+Step/2) *rFaktor), -Breite/2>
      }
   }
#end

Quellcode zu dieser Szene.

zurück nach oben