Troncon de tronc d'arbre avec POVRay

Ce didacticiel vous apprendra à créer un tronc d'arbre coupé en passant en revue 2 techniques utilisables avec le lanceur de rayon POVRay. Si vous avez des questions, vous pouvez m' envoyer un mel à cette adresse:Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.


Méthode avec le bloc normal{}

Rendered image with normal block in cylinder object

//Fichier à télécharger sur 'https://wwww.ant01.fr'
//Didacticiel du tronc d'arbre avec bloc normal{}

#version 3.7; //Definition de la version du parser (= analyseur du langage de scène de POVRay) de POVRay

global_settings{ assumed_gamma 1.0 }

background{ color srgb 0.8 } //Couleur du fond

camera{
  location < 2, 5, -8 >
 look_at < 0, 4, 0 >
}

light_source{ < 1, 5, -3 > * 1000 color srgb 1 }

//Definitions des couleurs pour le tronc #declare ColorBrightness = 2;
#declare DarkTrunkColor = color srgb < 52 / 255 * ColorBrightness, 38 / 255 * ColorBrightness, 41 / 255 * ColorBrightness >;
#declare TrunkWhiteColor = color srgb < 201 / 255, 198 / 255, 201 / 255 >;
//Tronc (cylindre et son bloc de la normale)
#declare TrunkNormal = normal{ radial frequency 16 warp{turbulence <0.4,0.2,0.4>} }
//Texture du tronc
#declare TrunkTexture = texture{ pigment{ wrinkles color_map { [0.0 DarkTrunkColor] [0.8 DarkTrunkColor] [0.99 TrunkWhiteColor] [1.0 TrunkWhiteColor ] } } normal{ TrunkNormal } finish {specular 0.2 roughness 0.1} }

#declare TrunkObject = cylinder{ < 0, 0, 0 >, < 0, 4, 0 >, 0.6 texture{ TrunkTexture } }
//Appel de l'objet défini 'TrunkObject'
object{ TrunkObject }

//Plan horizontal sous le tronc
plane{ y, 0 pigment{ checker color srgb 0.45, color srgb 0.6 } }

Bilan: ici on a un bloc 'normal' avec un objet 'cylinder'. On distingue des nervures sur ce tronc mais géométriquement cet objet est un cylindre et son bloc normal ne fait que simuler un relief imparfait. La technique à base d' isosurface décrite en dessous permet d'avoir un vrai tronc sculpté.

Méthode à base d' isosurface

Ici j' utilise une isosurface et la fonction utilisant le motif intégré à POVRay radial avec une turbulence: warp{turbulence <0.3,0.2,0.3>} pour ajouter une irrégularité. Le defaut de cette technique ? POVRay met plus de temps pour faire le rendu, surtout si vous utilisez la radiance/radiosity.

Rendered image with isosurface

//Fichier à télécharger sur 'https://wwww.ant01.fr'
//Didacticiel du tronc d'arbre avec isosurface

#version 3.7; //Definition de la version du parser (= analyseur du langage de scène de POVRay) de POVRay

global_settings{ assumed_gamma 1.0 }

background{ color srgb 0.8 } //Couleur du fond

camera{
location < 2, 7.5, -8 >
look_at < 0, 4.5, 0 >
}

light_source{ < 1, 5, -3 > * 1000 color srgb 1 }

#declare WoodLogLength = 6;
#declare CylinderRadius = 0.4;


#declare ColorBrightness = 2;
#declare DarkTrunkColor = color srgb < 52 / 255 * ColorBrightness, 38 / 255 * ColorBrightness, 41 / 255 * ColorBrightness >;

#declare TrunkWhiteColor = color srgb < 201 / 255, 198 / 255, 201 / 255 >;
#declare TrunkMid1Color = color srgb ;

#declare TrunkTexture2 = texture{ pigment{ wrinkles color_map {
[0.0 DarkTrunkColor]
[0.8 DarkTrunkColor]
[0.99 TrunkWhiteColor]
[1.0 TrunkWhiteColor ]
}
}
finish {specular 0.2 roughness 0.1}
}

//Caps of the wood log (a disc)
#declare WoodTrunkDisc = disc{ < 0, 0, 0 > < 0, 1, 0 >, 1 texture{ pigment{ wood color_map{
[0.0 TrunkMid1Color]
[0.5 TrunkWhiteColor]
[1.0 TrunkMid1Color]
}
rotate -90*x
scale <0.2,1,0.2>
warp {turbulence 0.1}
}
finish {specular 0.1 roughness 0.1}
}
}


#declare TrunkFunction = function{ pigment{
radial frequency 16 //Nombre de rainures sur la circonférence du tronc
v warp{turbulence <0.3,0.2,0.3>}//Ajoute une irrégularité aux rainures, pour éviter qu' elles soient droites
}
}


#declare WoodLog = union{
isosurface{
  function{pow(x,2) + pow(z,2) - pow( CylinderRadius, 2 ) //Equation paramétrique d'un cylindre
   -0.2 * TrunkFunction(x,y,z).gray //Fonction de rainures pour sculpter le tronc
  }
  threshold 0
  contained_by{ box { < -0.6, 0, -0.6 > < 0.6, WoodLogLength, 0.6 > } }
  max_gradient 10
  accuracy 0.001
  texture{ TrunkTexture2 }
}
  object{ WoodTrunkDisc scale 0.4 translate -0.0001*y}
  object{ WoodTrunkDisc scale 0.4 translate ( WoodLogLength + 0.0001 ) * y }
}


object{ WoodLog }


//Plan horizontal sous le tronc
plane{ y, 0 pigment{ checker color srgb 0.45, color srgb 0.6 } }