File contents
#! /usr/bin/env python
from lightflowPM import *
s = scene()
s.newInterface( "default",
[ "trace-depth", 6,
"radiosity-depth", 6, 6,
"radiosity-sampling", "default",
"radiosity-samples", 400,
"radiosity-threshold", 0.1,
"radiosity-reuse-distance", 0.25, 0.4, 0.01,
"photon-count", 300000,
"photon-clustering-count", 2000, 100 ] )
s.lightOn( s.newLight( "soft-conic",
[ "position", vector3( 0, 0, 0.98 ),
"direction", vector3( 0, 0, -1 ),
"angle", 0.0, 3.141592 / 2.0,
"radius", 0.05,
"zbuffer", 100,
"samples", 7,
"color", vector3( 8, 8, 8 ) ] ) )
neon = s.newMaterial( "matte", [ "kc", vector3( 3, 3, 3 ), "shadowing", 0.0 ] )
whitewash = s.newMaterial( "generic",
[ "kdr", vector3( 0.9, 0.9, 0.9 ),
"ksr", vector3( 0.5, 0.5, 0.5 ),
"km", 0.07,
"shinyness", 1.0,
"radiosity", 1,
"caustics", 0, 0 ] )
redwash = s.newMaterial( "generic",
[ "kdr", vector3( 0.8, 0.1, 0.1 ),
"ksr", vector3( 0.5, 0.5, 0.5 ),
"km", 0.07,
"shinyness", 1.0,
"radiosity", 1,
"caustics", 0, 0] )
bluewash = s.newMaterial( "generic",
[ "kdr", vector3( 0.2, 0.3, 0.8 ),
"ksr", vector3( 0.5, 0.5, 0.5 ),
"km", 0.07,
"shinyness", 1.0,
"radiosity", 1,
"caustics", 0, 0 ] )
trnswash = s.newMaterial( "generic",
[ "kdr", vector3( 0.9, 0.9, 0.9 ),
"ksr", vector3( 0.5, 0.5, 0.5 ),
"km", 0.07,
"shinyness", 1.0,
"radiosity", 1,
"caustics", 0, 0,
"visibility", 1 ] )
metal = s.newMaterial( "physical",
[ "fresnel", 1,
"IOR", 9.0,
"kr", vector3( 1, 1, 1 ),
"kd", 0.0,
"km", 0.02,
"shinyness", 1.0,
"radiosity", 0,
"caustics", 2, 2 ] )
glass = s.newMaterial( "generic",
[ "fresnel", 1,
"IOR", 1.57,
"kdr", vector3( 0, 0, 0 ),
"kdt", vector3( 0, 0, 0 ),
"ksr", vector3( 1, 1, 1 ), vector3( 0.5, 0.8, 1 ),
"kst", vector3( 1, 1, 1 ), vector3( 1, 0.6, 0.2 ),
"kr", vector3( 1, 1, 1 ),
"kt", vector3( 1, 1, 1 ),
"km", 0.02,
"shinyness", 1.0,
"transmission", 0,
"radiosity", 0,
"caustics", 2, 2 ] )
s.materialBegin( whitewash )
s.addObject( s.newObject( "patch",
[ "points",
vector3( -0.25, -0.25, 0.995 ), vector3( 0.25, -0.25, 0.995 ),
vector3( -0.25, 0.25, 0.995 ), vector3( 0.25, 0.25, 0.995 ) ] ) )
s.addObject( s.newObject( "patch",
[ "points",
vector3( -0.25, 0.25, 0.99 ), vector3( 0.25, 0.25, 0.99 ),
vector3( -0.25, 0.25, 1.00 ), vector3( 0.25, 0.25, 1.00 ) ] ) )
s.addObject( s.newObject( "patch",
[ "points",
vector3( -0.25, -0.25, 0.99 ), vector3( -0.25, -0.25, 1.00 ),
vector3( 0.25, -0.25, 0.99 ), vector3( 0.25, -0.25, 1.00 ) ] ) )
s.addObject( s.newObject( "patch",
[ "points",
vector3( 0.25, -0.25, 0.99 ), vector3( 0.25, -0.25, 1.00 ),
vector3( 0.25, 0.25, 0.99 ), vector3( 0.25, 0.25, 1.00 ) ] ) )
s.addObject( s.newObject( "patch",
[ "points",
vector3( -0.25, -0.25, 0.99 ), vector3( -0.25, 0.25, 0.99 ),
vector3( -0.25, -0.25, 1.00 ), vector3( -0.25, 0.25, 1.00 ) ] ) )
s.materialEnd()
s.materialBegin( neon )
s.addObject( s.newObject( "patch",
[ "points",
vector3( -0.25, -0.25, 0.99 ), vector3( 0.25, -0.25, 0.99 ),
vector3( -0.25, 0.25, 0.99 ), vector3( 0.25, 0.25, 0.99 ) ] ) )
s.materialEnd()
s.materialBegin( trnswash )
s.addObject( s.newObject( "patch",
[ "points",
vector3( -1, -1, -1 ), vector3( 1, -1, -1 ),
vector3( -1, -1, 1 ), vector3( 1, -1, 1 ) ] ) )
s.materialEnd()
s.materialBegin( whitewash )
s.addObject( s.newObject( "patch",
[ "points",
vector3( -1, -1, -1 ), vector3( -1, 1, -1 ),
vector3( 1, -1, -1 ), vector3( 1, 1, -1 ) ] ) )
s.addObject( s.newObject( "patch",
[ "points",
vector3( -1, -1, 1 ), vector3( 1, -1, 1 ),
vector3( -1, 1, 1 ), vector3( 1, 1, 1 ) ] ) )
s.addObject( s.newObject( "patch",
[ "points",
vector3( -1, 1, -1 ), vector3( -1, 1, 1 ),
vector3( 1, 1, -1 ), vector3( 1, 1, 1 ) ] ) )
s.materialEnd()
s.materialBegin( redwash )
s.addObject( s.newObject( "patch",
[ "points",
vector3( -1, -1, -1 ), vector3( -1, -1, 1 ),
vector3( -1, 1, -1 ), vector3( -1, 1, 1 ) ] ) )
s.materialEnd()
s.materialBegin( bluewash )
s.addObject( s.newObject( "patch",
[ "points",
vector3( 1, -1, -1 ), vector3( 1, 1, -1 ),
vector3( 1, -1, 1 ), vector3( 1, 1, 1 ) ] ) )
s.materialEnd()
s.materialBegin( glass )
s.transformBegin( transform().translation( vector3( -0.45, 0, -0.1 ) ) )
s.addObject( s.newObject( "sphere", [ "radius", 0.35 ] ) )
s.transformEnd()
s.materialEnd()
s.materialBegin( metal )
s.transformBegin( transform().translation( vector3( 0.45, 0.4, -0.65 ) ) )
s.addObject( s.newObject( "sphere", [ "radius", 0.35 ] ) )
s.transformEnd()
s.materialEnd()
saver = s.newImager( "tga-saver", [ "file", "cornell.tga" ] )
s.imagerBegin( saver )
camera = s.newCamera( "pinhole", [ "eye", vector3( 0, -2.99, 0 ), "aim", vector3( 0, 0, 0 ) ] )
s.imagerEnd()
s.radiosity()
s.render( camera, 300, 300 )