Difficulty |
3 |
Prerequisites |
|
Reading material |
def scene_at(now)
{
var t = Animations.ease( Animations.animate( 0, 3, seconds(5) ), Easing.quadratic_inout() )[now]
var camera = Cameras.perspective( [ "eye": pos(3 - t, 2 + t / 3, 5 + t),
"look_at": pos(0,0,0) ] )
var disk1_material = Materials.uniform( [ "ambient": Colors.white() * 0.1,
"diffuse": Colors.red() * 0.8,
"specular": Colors.white() * 0.0,
"specular_exponent": 10,
"reflectivity": 0.0] )
var disk2_material = Materials.uniform( [ "ambient": Colors.white() * 0.1,
"diffuse": Colors.green() * 0.8,
"specular": Colors.white() * 0.0,
"specular_exponent": 10,
"reflectivity": 0.0] )
var disk3_material = Materials.uniform( [ "ambient": Colors.white() * 0.1,
"diffuse": Colors.blue() * 0.8,
"specular": Colors.white() * 0.0,
"specular_exponent": 10,
"reflectivity": 0.0] )
var plane_material = Materials.uniform( [ "ambient": Colors.white() * 0.1,
"diffuse": Colors.white() * 0.8,
"reflectivity": 0.2 ] )
var disk1 = decorate(disk1_material, translate(vec(-t, 0, 0), yz_disk(1)))
var disk2 = decorate(disk2_material, translate(vec( 0, 0, 0), xy_disk(1)))
var disk3 = decorate(disk3_material, translate(vec( t, 0, 0), xz_disk(1)))
var disks = union( [disk1, disk2, disk3] )
var plane = decorate(plane_material, translate(vec(0,-2,0), xz_plane()))
var root = union( [ disks, plane ] )
var lights = [ Lights.omnidirectional( pos(3-t,1,4), Colors.white() * 0.8 ) ]
create_scene(camera, root, lights)
}
var raytracer = Raytracers.v6()
var renderer = Renderers.standard( [ "width": 500,
"height": 500,
"sampler": Samplers.multijittered(2),
"ray_tracer": raytracer ] )
pipeline( scene_animation(scene_at, seconds(5)),
[ Pipeline.animation(30),
Pipeline.renderer(renderer),
Pipeline.studio() ] )
1. Implementation
Implement the disc primitive.
|
2. Evaluation
Recreate the scene below: |