Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[Manta] r1766 - trunk/scenes


Chronological Thread 
  • From: shirley@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [Manta] r1766 - trunk/scenes
  • Date: Sun, 7 Oct 2007 21:49:46 -0600 (MDT)

Author: shirley
Date: Sun Oct  7 21:49:45 2007
New Revision: 1766

Modified:
   trunk/scenes/fence.cc
Log:
Fence now has about 50 sections and 2x slower than softshadow.cc so this is a 
decent scaling example
This example also shows how outdoor shadowing is easy for ray tracing
loops really should replace the by hand cut and paste so fence length is an 
argument
cool geometric aliasing


Modified: trunk/scenes/fence.cc
==============================================================================
--- trunk/scenes/fence.cc       (original)
+++ trunk/scenes/fence.cc       Sun Oct  7 21:49:45 2007
@@ -18,6 +18,12 @@
 #include <Model/Primitives/Cube.h>
 #include <Model/Primitives/Sphere.h>
 #include <Model/Primitives/Parallelogram.h>
+#include <Model/Instances/Instance.h>
+#include <Model/Instances/InstanceRT.h>
+#include <Model/Instances/InstanceRST.h>
+#include <Model/Instances/InstanceST.h>
+#include <Model/Instances/InstanceT.h>
+
 
 #include <Model/Backgrounds/ConstantBackground.h>
 #include <Model/Lights/PointLight.h>
@@ -67,52 +73,29 @@
 };
 
 
-void addFence(Group* group) //, Vector move)
+void addFence(Group* group)
 {
   Material* white = new Lambertian(Color::white() * 0.8);
 
-  Group *local = new Group;
-
   //vertica posts
-  local->add( new Cube(white, Vector(91,-8,-20), Vector(99,0,40)) );
-  local->add( new Cube(white, Vector(-9,-8,-20), Vector(-1,0,40)) );
-  local->add( new Cube(white, Vector(-109,-8,-20), Vector(-101,0,40)) );
+  group->add( new Cube(white, Vector(-9,-8,-20), Vector(-1,0,40)) );
+  group->add( new Cube(white, Vector(-109,-8,-20), Vector(-101,0,40)) );
 
   //cross bars
-  local->add( new Cube(white, Vector(-109,-8,40), Vector(99,0,44)) );
-  local->add( new Cube(white, Vector(-109,-8,0), Vector(99,0,4)) );
+  group->add( new Cube(white, Vector(-109,-8,40), Vector(99,0,44)) );
+  group->add( new Cube(white, Vector(-109,-8,0), Vector(99,0,4)) );
 
   //slats
-  local->add( new Cube(white, Vector(90,-10,-15), Vector(100,-8,60)) );
-  local->add( new Cube(white, Vector(70,-10,-15), Vector(80,-8,60)) );
-  local->add( new Cube(white, Vector(50,-10,-15), Vector(60,-8,60)) );
-  local->add( new Cube(white, Vector(30,-10,-15), Vector(40,-8,60)) );
-  local->add( new Cube(white, Vector(10,-10,-15), Vector(20,-8,60)) );
-  local->add( new Cube(white, Vector(-10,-10,-15), Vector(0,-8,60)) );
-  local->add( new Cube(white, Vector(-30,-10,-15), Vector(-20,-8,60)) );
-  local->add( new Cube(white, Vector(-50,-10,-15), Vector(-40,-8,60)) );
-  local->add( new Cube(white, Vector(-70,-10,-15), Vector(-60,-8,60)) );
-  local->add( new Cube(white, Vector(-90,-10,-15), Vector(-80,-8,60)) );
-  local->add( new Cube(white, Vector(-110,-10,-15), Vector(-100,-8,60)) );
-
-  DynBVH* bvh = new DynBVH();
-  bvh->setGroup(local);
-  group->add(bvh);
-
-/*
-    AffineTransform t;
-    t.initWithIdentity();
-    t.scale(Vector(object_scale, object_scale, object_scale));
-    t.rotate(rotation_axis, rotation_amount);
-    t.translate(origin);
-
-    Instance* instance = new Instance(object, t);
-    instance->overrideMaterial( getMaterial(object_material, color) );
-
-    group->add(instance);
-*/
-
-
+  group->add( new Cube(white, Vector(70,-10,-15), Vector(80,-8,60)) );
+  group->add( new Cube(white, Vector(50,-10,-15), Vector(60,-8,60)) );
+  group->add( new Cube(white, Vector(30,-10,-15), Vector(40,-8,60)) );
+  group->add( new Cube(white, Vector(10,-10,-15), Vector(20,-8,60)) );
+  group->add( new Cube(white, Vector(-10,-10,-15), Vector(0,-8,60)) );
+  group->add( new Cube(white, Vector(-30,-10,-15), Vector(-20,-8,60)) );
+  group->add( new Cube(white, Vector(-50,-10,-15), Vector(-40,-8,60)) );
+  group->add( new Cube(white, Vector(-70,-10,-15), Vector(-60,-8,60)) );
+  group->add( new Cube(white, Vector(-90,-10,-15), Vector(-80,-8,60)) );
+  group->add( new Cube(white, Vector(-110,-10,-15), Vector(-100,-8,60)) );
 
 }
 
@@ -122,8 +105,8 @@
   Material* white = new Lambertian(Color::white() * 0.8);
 
   Object* floor=new Rect(white,
-                         Vector(-100,-100,-20),
-                         Vector(320,0,0),
+                         Vector(-1000,-100,-20),
+                         Vector(10100,0,0),
                          Vector(0,320,0));
   group->add(floor);
 }
@@ -194,17 +177,253 @@
   }
 
   // Start adding geometry
-  Group* group = new Group();
+  Group* section0 = new Group();
+
+  Group* fence = new Group();
+  Group* all = new Group();
 
-  addFence(group);
-  addFloor(group);
+  addFence(section0);
+  DynBVH* bvh = new DynBVH();
+  bvh->setGroup(section0);
+  fence->add(bvh);
+  
+  AffineTransform t;
+  t.initWithIdentity();
+  t.translate(Vector(200,0,0));
+
+  Instance* instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(-200,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(400,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(600,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(800,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(1000,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(1200,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(1400,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(1600,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(1800,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(2000,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(2200,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(2400,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(2600,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(2800,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(3000,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(3200,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(3400,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(3600,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(3800,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(4000,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(4200,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(4400,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(4600,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(4800,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(5000,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(5200,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(5400,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(5600,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(5800,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(6000,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(6200,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(6400,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(6600,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(6800,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(7000,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(7200,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(7400,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(7600,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(7800,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(8000,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(8200,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(8400,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(8600,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+  t.initWithIdentity();
+  t.translate(Vector(8800,0,0));
+  instance = new Instance(bvh, t);
+  fence->add(instance);
+
+
+  bvh = new DynBVH();
+  bvh->setGroup(fence);
 
   Scene* scene = new Scene();
   scene->setBackground(new ConstantBackground(Color(RGB(0.1, 0.1, 0.1))));
 
-  DynBVH* bvh = new DynBVH();
-  bvh->setGroup(group);
-  scene->setObject(bvh);
+  addFloor(all);
+  all->add(bvh);
+  scene->setObject(all);
 
   LightSet* lights = new LightSet();
   addLights(lights, num_lights, width_scale);




  • [Manta] r1766 - trunk/scenes, shirley, 10/07/2007

Archive powered by MHonArc 2.6.16.

Top of page