4.1.41 Script wineglass

Utilisation : Les liens ne sont pas apparents. Pour obtenir des informations sur un mot clé, cliquez-le dans le script !

// Persistence Of Vision raytracer version 3.5 sample file.
// File by Dan Farmer
// Wine glass and chessboard
// Updated October, 1996
// Updated January, 1998 DCB

global_settings {assumed_gamma 1.0 number_of_waves 3 max_trace_level 5}

#include "colors.inc"
#include "shapes.inc"
#include "textures.inc"
// #include "glass.inc"
#include "metals.inc"

camera {
	location <50.0, 55.0,-75.0>
	direction z
	up y
	right x*4/3
	look_at <-10.0, 18.0, 0.0>
}

light_source {<10.0, 50.0, 35.0> color White}
light_source {<-35.0, 30.0,-150.0> color White}

#declare I_Glass1 = interior {	// Use with Liquid
	ior 1.45
	caustics 2
	fade_distance 40	// only for this scene
	fade_power 1
}

#declare I_Glass2 = interior {	// Use with Bead
	fade_distance 1.5	// only for this scene
	fade_power 1
	ior 1.45
	caustics 2
}

#declare I_Glass3 = interior {	//Use with Rim
	ior 1.51
	caustics 2
	fade_distance 0.025
	fade_power 1
}

#declare I_Glass4 = interior {	//Use with Top & Stem
	ior 1.51
	caustics 2
	fade_distance 1.5
	fade_power 1
}

#declare I_Glass5 = interior {	// Use with Base
	ior 1.51
	caustics 2
	fade_distance 3.25
	fade_power 1
}

#declare T_Glass = texture {
	pigment {color red 1.0 green 1.0 blue 1.0 filter 0.95}
	finish {
		ambient 0.0
		diffuse 0.0
		reflection 0.1
		phong 0.3
		phong_size 90
	}
}

#declare Wine = color red 1.0 filter 0.85;

#declare Liquid = finish {reflection 0.05}

#declare Bead = object {
	sphere {<0, 0, 0>, 1 scale <1.65, 0.65, 1.65>}
	texture {T_Glass}
	interior {I_Glass2}
}

#declare Rim = torus {0.975, 0.025
	clipped_by {plane {-y, 0.0}}
	scale <15.0, 10.0, 15.0>
	translate 24.0*y
	texture {T_Glass}
	interior{I_Glass3}
}

#declare Top = intersection {
	plane {y, 1.0}
	object {QCone_Y}
	object {QCone_Y scale <0.97, 1.0, 0.97> inverse}
	clipped_by {plane {y, 0.0 inverse}}
	scale <15.0, 10.0, 15.0>
	translate 14.0*y
	texture {T_Glass}
	interior {I_Glass4}
}

#declare Stem = cylinder {y*3.25, y*14, 1
	texture {T_Glass}
	interior {I_Glass4}
}

#declare Base = object {
	QCone_Y
	clipped_by {
		plane {y, 0.0}
		plane {y,-1.0 inverse}
	}
	translate 1.0*y	/* This actually puts the base of the cone on y=0*/
	scale <12.0, 3.25, 12.0>
	texture {T_Glass}
	interior {I_Glass5}
}

#declare Wine2 = union {
	cone {0, 0, y, 0.95 open
		texture {
			finish {Liquid}
			pigment {Wine}
		}
	}
	disc {y, y, 0.95
		texture {
			finish {Liquid
				specular 1
				roughness 0.01
			}
			pigment {Wine}
			normal {onion 0.75 frequency 3 sine_wave turbulence 0.15}
		}
		interior {I_Glass1}
	}
	scale <14.9, 9.5, 14.9>
	translate 14.0*y
	texture {
		finish {Liquid}
		pigment {Wine}
	}
	interior {I_Glass1}
}

#declare Frame = union {
	// corners
	sphere {<-120, 0,-120>, 4.65}
	sphere {<120, 0,-120>, 4.65}
	sphere {<-120, 0, 120>, 4.65}
	sphere {<120, 0, 120>, 4.65}
	object {
		Disk_X	/* Front rounded edge */
		scale <120, 4.65, 4.65>
		translate -z*120
	}
	object {
		Disk_Z	/* Left rounded edge */
		scale <4.65, 4.65, 120>
		translate -x*120
	}
	object {
		Disk_X	/* Rear rounded edge */
		scale <120, 4.65, 4.65>
		translate z*120
	}
	object {
		Disk_Z	/* Right rounded edge */
		scale <4.65, 4.65, 120>
		translate x*120
	}
	texture {Silver_Texture}
}

#declare ChessBoard = object {
	Cube
	scale <120.0, 4.0, 120.0>
	texture {
		tiles {
			texture {
				pigment {
					marble
					turbulence 1
					lambda 2.1
					omega 0.707
					scale <2, 1, 2>
					color_map {
						[0.00 rgb 0.975]
						[0.55 rgb <0.2, 0.25, 0.3>]
						[0.75 rgb 0.2]
						[0.85 rgb 0.5]
						[1.00 rgb 0.975]
					}
				}
				finish {diffuse 1}
			}
			tile2
			texture {
				pigment {Gray10}
				finish {diffuse 1 specular 0.5 roughness 0.025}
			}
		}
		scale <30.0, 4.001, 30.0>
	}
}

#declare WineGlass_Without_Wine = merge {
	object {Rim}
	object {Top}
	object {Bead translate 14.5*y}
	object {Bead translate 10.0*y}
	object {Bead translate 7.0*y}
	object {Bead translate 3.0*y}
	object {Stem}
	object {Base}
	scale <1.0, 1.50, 1.0>
}

#declare WineGlass_With_Wine = union {
	object {WineGlass_Without_Wine}
	object {Wine2
		scale <1.0, 1.50, 1.0>
	}
}

fog {distance 200 color Black}

/* Ground plane */
plane {
	y, 0.0
	texture {
		pigment {RichBlue}
		normal {
			quilted 0.45
			control0 1 control1 1
			scale <0.45, 1, 0.45>
		}
	}
}

union {
	object {Frame}
	object {ChessBoard}
	translate <0.0, 4.0, 145.0>
}

// How did I figure out those wierd transformations below?
// Well, they'd be less obscure had I created the wine glass properly,
// but since I didn't, I simply put the camera a tiny bit above the
// floorplane and tried various values until it "fit".

object {WineGlass_Without_Wine translate -x*12.15 rotate -z*86.5}
object {WineGlass_With_Wine translate <0, 0,-20>}

Et voici ce que nous obtenons :

Cliquez pour télécharger l'image bmp en 1024*768

Quand aux acteurs, dans l'ordre d'apparition, nous avons Bead, Rim, Top, Stem, Base, Wine2, Frame, ChessBoard, WineGlass_Without_Wine, WineGlass_With_Wine.

Retour Retour