From 56a5fa616608899863b72256f23c6d501f2ab7bc Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Mon, 2 Mar 2009 00:41:27 +0000 Subject: [PATCH] added cyls.fart sample scene, removed hard-coded scene from Scene-load.cc; reading from a file is working! git-svn-id: svn://anubis/fart/trunk@176 7f9b0f55-74a9-4bce-be96-3c2cd072584d --- .todo | 1 + main/Scene-load.cc | 106 --------------------------------------------- scenes/cyls.fart | 49 +++++++++++++++++++++ 3 files changed, 50 insertions(+), 106 deletions(-) create mode 100644 scenes/cyls.fart diff --git a/.todo b/.todo index 183e490..92a6ac7 100644 --- a/.todo +++ b/.todo @@ -1,6 +1,7 @@ FART To-Do List =============== - Make verbose default +- Material definitions - Recurse for reflection - Continue for transparency - Scan for cameras before scene items diff --git a/main/Scene-load.cc b/main/Scene-load.cc index 5a70bc6..af1c1b0 100644 --- a/main/Scene-load.cc +++ b/main/Scene-load.cc @@ -14,112 +14,6 @@ void Scene::load(const char * filename) { refptr node = parse(filename); processNode(node); - -#if 0 - refptr m = new Material(); - refptr shape = new Sphere(0.5); - shape->setTransform(m_transforms.top()); - shape->setMaterial(m); - m_shapes.push_back(shape); - - refptr light = new PointLight(); - light->setPosition(Vector(2, -1, 2)); - m_lights.push_back(light); -#endif - -#if 0 - Transform transform; - - refptr m = new Material(); - m->setDiffuseColor(Color::white); - m->setAmbientColor(Color::white); - refptr shape = new Plane(0, 0, 1, 2); - shape->setTransform(transform); - shape->setMaterial(m); - m_shapes.push_back(shape); - - transform.translate(1.0, 5.0, 0.5); - m = new Material(); - m->setDiffuseColor(Color::red); - m->setAmbientColor(Color::red); - shape = new Sphere(1.0); - shape->setTransform(transform); - shape->setMaterial(m); - m_shapes.push_back(shape); - transform.translate(-1.0, -5.0, -0.5); - - transform.translate(-1, 3, -0.5); - refptr shape1 = new Sphere(0.8); - shape1->setMaterial(m); - shape1->setTransform(transform); - refptr shape2 = new Box(new Vector(2, 2, 0.6)); - m = new Material(); - m->setDiffuseColor(Color::magenta); - m->setAmbientColor(Color::magenta); - shape2->setMaterial(m); - transform.rotate(20, 0, 1, 0); - shape2->setTransform(transform); - shape = new Intersect(shape1, shape2); - m_shapes.push_back(shape); - transform.rotate(-20, 0, 1, 0); - transform.translate(1, -3, 0.5); - - transform.translate(1.5, 3.2, -0.7); - transform.rotate(15, 0, 0, 1); - m = new Material(); - m->setDiffuseColor(Color::magenta); - m->setAmbientColor(Color::magenta); - shape1 = new Box(new Vector(1, 1, 1)); - shape1->setMaterial(m); - shape1->setTransform(transform); - m = new Material(); - m->setDiffuseColor(Color::yellow); - m->setAmbientColor(Color::yellow); - shape2 = new Sphere(0.6); - transform.translate(-0.5, -0.5, 0.5); - shape2->setTransform(transform); - shape2->setMaterial(m); - shape = new Subtract(shape1, shape2); - m_shapes.push_back(shape); - transform.rotate(-15, 0, 0, 1); - transform.translate(-1.0, -2.7, 0.2); - - transform.translate(1, 5, -1.5); - m = new Material(); - m->setDiffuseColor(Color::blue); - m->setAmbientColor(Color::blue); - shape = new Box(new Vector(1.8, 1.8, 0.5)); - shape->setTransform(transform); - shape->setMaterial(m); - m_shapes.push_back(shape); - transform.translate(-1, -5, 1.5); - - transform.translate(-0.5, 6.5, 1.5); - transform.rotate(45, 1, 0, 0); - m = new Material(); - m->setDiffuseColor(Color::cyan); - m->setAmbientColor(Color::cyan); - shape = new Cyl(1.0, 0.0, 2.0); - shape->setTransform(transform); - shape->setMaterial(m); - m_shapes.push_back(shape); - transform.rotate(-45, 1, 0, 0); - transform.translate(0.5, -6.5, -1.5); - - transform.translate(-2.0, 5.0, 1.5); - transform.rotate(45, 0, 0, 1); - transform.rotate(45, 1, 0, 0); - m = new Material(); - m->setDiffuseColor(Color::yellow); - m->setAmbientColor(Color::yellow); - shape = new Box(new Vector(1, 1, 1)); - shape->setTransform(transform); - shape->setMaterial(m); - m_shapes.push_back(shape); - transform.rotate(-45, 1, 0, 0); - transform.rotate(-45, 0, 0, 1); - transform.translate(2.0, -5.0, -1.5); -#endif } void Scene::processNode(refptr node) diff --git a/scenes/cyls.fart b/scenes/cyls.fart new file mode 100644 index 0000000..1eff020 --- /dev/null +++ b/scenes/cyls.fart @@ -0,0 +1,49 @@ + +scene +{ + options + { + width 800 + height 600 + multisample 3 + } + + camera + { + position <1.5, -1, 2.5> + look_at <0, 0, 2> + up <0, 0, 1> + } + + light + { + position <3, -8, 5> + } + + plane + { + position <0, 0, 1>, 0 + material + { + color <0.4, 0.9, 0.9> + } + } + + translate <0, 0, 2> + { + box + { + size <0.4, 0.4, 0.4> + material + { + color <1.0, 0.6, 0> + } + } + cyl { size <0.2, 0, 0.3> translate <0, 0, 0.3> } + cyl { size <0.2, 0, 0.3> rotate 90, <1, 0, 0> translate <0, 0, 0.3> } + cyl { size <0.2, 0, 0.3> rotate -90, <1, 0, 0> translate <0, 0, 0.3> } + cyl { size <0.2, 0, 0.3> rotate 180, <1, 0, 0> translate <0, 0, 0.3> } + cyl { size <0.2, 0, 0.3> rotate 90, <0, 1, 0> translate <0, 0, 0.3> } + cyl { size <0.2, 0, 0.3> rotate -90, <0, 1, 0> translate <0, 0, 0.3> } + } +}