#!/usr/bin/python

from lightflowPM import *

s = scene()

s.newInterface("default",["trace-depth",20,"radiosity-depth",0,6])

light1 = s.newLight("soft",["position",vector3(5,-5,3),"color",vector3(300,300,300)])

s.lightOn(light1)

sky = s.newMaterial( "matte",
                     [ "kc", vector3( 0.6, 0.8, 1.0 ),
                       "shadowing", 0.0 ] )

metal = s.newMaterial("physical",
                      ["kr",vector3(0.6,0.3,0.3),
                       "km",0.5,
                       "kd",0.3,
                       "shinyness",0.8])

                         
bump = s.newPattern("granite",[])
 
bumpmetal = s.newMaterial("physical",["kr",vector3(0.8,0.8,0.8),
                                      "km",0.1,
                                      "kd",0.1,
                                      "shinyness",1.0,
                                      "fresnel",1,0.5,0.5,
                                      "caustics",1,1,
                                      "displacement",bump])         
glass = s.newMaterial( "generic",
                       [ "fresnel", 1,
                         "IOR", 1.67,
                         "kdr", vector3( 0, 0, 0 ),
                         "kdt", vector3( 0, 0, 0 ),
                         "ksr", vector3( 1, 1, 1 ), vector3( 0.6, 0.8, 1 ),
                         "kst", vector3( 1, 1, 1 ), vector3( 0.6, 0.8, 1 ),
                         "kr", vector3( 1, 1, 1 ),
                         "kt", vector3( 1, 1, 1 ),
                         "km", 0.03,
                         "shinyness", 1.0,
                         "transmission", 0,
                         "radiosity", 0,
                         "caustics", 1, 1] )

bumpglass = s.newMaterial( "generic",
                       [ "fresnel", 1,
                         "IOR", 1.67,
                         "kdr", vector3( 0, 0, 0 ),
                         "kdt", vector3( 0, 0, 0 ),
                         "ksr", vector3( 1, 1, 1 ), vector3( 0.6, 0.8, 1 ),
                         "kst", vector3( 1, 1, 1 ), vector3( 0.6, 0.8, 1 ),
                         "kr", vector3( 1, 1, 1 ),
                         "kt", vector3( 1, 1, 1 ),
                         "km", 0.03,
                         "shinyness", 1.0,
                         "transmission", 0,
                         "radiosity", 0,
                         "caustics", 1, 1,
                         "displacement",bump] )



s.materialBegin(bumpmetal)

s.transformBegin(transform().translation(vector3(0,0,3.05)))
terminator = s.newObject("blob",
                         ["blob",vector3(0,0,0.4),0.6, ## Hals
                          "blob",vector3(0,0,1.0),1.2, ## Kopf
                          "blob",vector3(0,-0.2,0.8),0.6,
                          "blob",vector3(0,0,0),1.0, ## Rumpf
                          "blob",vector3(-0.5,0,0),1.0,
                          "blob",vector3(0.5,0,0),1.0,
                          "blob",vector3(0,0,-0.5),1.0,
                          "blob",vector3(0,0,-1),1.0,
                          "blob",vector3(-1.0,0,0.25),0.5, ## Arme
                          "blob",vector3(1.0,0,0.25),0.5,
                          "blob",vector3(-1.2,-0.1,0),0.5,
                          "blob",vector3(1.2,-0.1,0),0.5,
                          "blob",vector3(-1.2,-0.2,-0.2),0.4,
                          "blob",vector3(1.2,-0.2,-0.2),0.4,
                          "blob",vector3(-1.2,-0.4,-0.4),0.4,
                          "blob",vector3(1.2,-0.4,-0.4),0.4,
                          "blob",vector3(-1.2,-0.6,-0.6),0.55, ## Armgelenk
                          "blob",vector3(1.2,-0.6,-0.6),0.55,
                          "blob",vector3(-1.0,-0.8,-0.8),0.4,
                          "blob",vector3(1.0,-0.8,-0.8),0.4,
                          "blob",vector3(-0.8,-1.0,-1.0),0.5,
                          "blob",vector3(0.8,-1.0,-1.0),0.5,
                          "blob",vector3(-0.5,0,-1.5),0.6,  ## Beine
                          "blob",vector3(0.5,0,-1.5),0.6,
                          "blob",vector3(-0.75,0,-2.0),0.6,
                          "blob",vector3(0.75,0,-2.0),0.6,
                          "blob",vector3(-0.8,0,-2.4),0.6,
                          "blob",vector3(0.8,0,-2.4),0.6,
                          "blob",vector3(-0.8,0,-3.0),0.6,
                          "blob",vector3(0.8,0,-3.0),0.6,
                          "blob",vector3(-0.8,-0.25,-3.05),0.5, ## Füße
                          "blob",vector3(0.8,-0.25,-3.05),0.5,
                          "blob",vector3(-0.72,-0.5,-3.05),0.35, 
                          "blob",vector3(0.72,-0.5,-3.05),0.35,
                          ])
s.transformEnd()

s.materialEnd()

s.addObject(terminator)

s.materialBegin(bumpmetal)
s.addObject(s.newObject("disc",["radius",20.0]))
s.materialEnd()

s.materialBegin(sky)
s.addObject(s.newObject("sphere",["radius",20.0]))
s.materialEnd()

imager = s.newImager("tga-saver",["file","blob.tga"])

s.imagerBegin(imager)

camera = s.newCamera("pinhole",["eye",vector3(0,-6,2),"aim",vector3(0,0,2)])

s.imagerEnd()

s.render(camera,400,400)
