Text archives Help
- 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.