Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[Manta] r1658 - trunk/scenes


Chronological Thread 
  • From: boulos@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [Manta] r1658 - trunk/scenes
  • Date: Thu, 16 Aug 2007 18:12:22 -0600 (MDT)

Author: boulos
Date: Thu Aug 16 18:12:21 2007
New Revision: 1658

Modified:
   trunk/scenes/primtest.cc
Log:
scenes/primtest.cc

  Adding WaldTriangle to the list of primitives supported by this
  scene.


Modified: trunk/scenes/primtest.cc
==============================================================================
--- trunk/scenes/primtest.cc    (original)
+++ trunk/scenes/primtest.cc    Thu Aug 16 18:12:21 2007
@@ -13,9 +13,10 @@
 #include <Model/MiscObjects/Difference.h>
 #include <Model/MiscObjects/Intersection.h>
 #include <Model/MiscObjects/KeyFrameAnimation.h>
+#include <Model/Groups/DynBVH.h>
 #include <Model/Groups/Group.h>
+#include <Model/Groups/Mesh.h>
 #include <Model/Groups/ObjGroup.h>
-#include <Model/Groups/DynBVH.h>
 #include <Model/Lights/PointLight.h>
 #include <Model/Materials/Checker.h>
 #include <Model/Materials/Dielectric.h>
@@ -38,6 +39,7 @@
 #include <Model/Primitives/Triangle.h>
 #include <Model/Primitives/SuperEllipsoid.h>
 #include <Model/Primitives/Heightfield.h>
+#include <Model/Primitives/WaldTriangle.h>
 #include <Model/TexCoordMappers/LinearMapper.h>
 #include <Model/TexCoordMappers/SphericalMapper.h>
 #include <Model/TexCoordMappers/UniformMapper.h>
@@ -150,7 +152,7 @@
     group->add(new Parallelogram(bgmatl, anchor, v1, v2));
 #endif
   }
-  
+
 
 
   Material* matl;
@@ -257,7 +259,7 @@
       throw IllegalArgument("Unknown material type: "+material, 0, args);
     }
   }
-    
+
 
   Object* spinprim = 0;
   if(primtype == "simplesphere"){
@@ -268,9 +270,9 @@
         Vector p((numx>1 ? i/static_cast<Real>(numx-1)-(Real)0.5 : 
0)*scale*2,
                  (numy>1 ? j/static_cast<Real>(numy-1)-(Real)0.5 : 
0)*scale*2,
                  0);
-  Primitive* prim = new Sphere( matl, p, radius );
-  if ( mapr )
-    prim->setTexCoordMapper( mapr );
+        Primitive* prim = new Sphere( matl, p, radius );
+        if ( mapr )
+          prim->setTexCoordMapper( mapr );
         group->add( prim );
       }
     }
@@ -286,7 +288,7 @@
                  0);
         Primitive* prim = new SuperEllipsoid( matl, p, radius, alpha, beta );
         if ( mapr )
-            prim->setTexCoordMapper( mapr );
+          prim->setTexCoordMapper( mapr );
         group->add( prim );
       }
     }
@@ -306,7 +308,7 @@
   } else if(primtype == "sphere"){
     Primitive* prim = new Sphere(matl, Vector(0,0,0), scale/max);
     if ( mapr )
-        prim->setTexCoordMapper( mapr );
+      prim->setTexCoordMapper( mapr );
     spinprim = prim;
   } else if(primtype == "box"){
     Vector p2(scale/max/1.732, scale/max/1.732, scale/max/1.732);
@@ -339,18 +341,18 @@
                                scale / max, Vector(1, 0, 0),
                                0.25 * M_PI, 1.75 * M_PI);
     if ( mapr )
-        prim->setTexCoordMapper( mapr );
+      prim->setTexCoordMapper( mapr );
     spinprim = prim;
   } else if (primtype == "hemisphere") {
     Primitive* prim = new Hemisphere(matl, Vector(0, 0, 0), scale / max,
                                      Vector(0, 0, 1));
     if ( mapr )
-        prim->setTexCoordMapper( mapr );
+      prim->setTexCoordMapper( mapr );
     spinprim = prim;
   } else if (primtype == "superellipsoid"){
     Primitive* prim = new SuperEllipsoid(matl, Vector(0, 0, 0), scale / max, 
0.5, 1.5);
     if ( mapr )
-        prim->setTexCoordMapper( mapr );
+      prim->setTexCoordMapper( mapr );
     spinprim = prim;
   } else if(primtype == "ply"){
 #ifdef USE_PRIVATE_CODE
@@ -370,7 +372,7 @@
     Mesh *frame = NULL;
     if (!strncmp(modelName.c_str()+modelName.length()-4, ".ply", 4)) {
       frame = new Mesh;
-      if (!readPlyFile(modelName, t, frame, matl)) 
+      if (!readPlyFile(modelName, t, frame, matl))
         printf("error loading or reading ply file: %s\n", modelName.c_str());
       animation->push_back(frame);
     }
@@ -382,13 +384,13 @@
       //let load a hardcoded animation.
       //TODO: do something smart so we don't need to hardcode this.
       char model[128] = "/Users/thiago/data/models/hand/hand_00.obj";
-    //char model[128] = 
"/Users/thiago/data/models/armadillo-kz/frame001.obj";
+      //char model[128] = 
"/Users/thiago/data/models/armadillo-kz/frame001.obj";
       for (int i=0; i <= 43; ++i) {
         model[36] = '0'+(i/10);
         model[37] = '0'+(i%10);
-//     for (int i=1; i < 11; ++i) {
-//       model[45] = '0'+(i/10);
-//       model[46] = '0'+(i%10);
+        //     for (int i=1; i < 11; ++i) {
+        //       model[45] = '0'+(i/10);
+        //       model[46] = '0'+(i%10);
 
         cout <<"loading " <<model<<endl;
         Group *frame = new ObjGroup(model);
@@ -408,8 +410,39 @@
 
     Primitive* prim = new Heightfield(matl, modelName.c_str(), anchor+v1, 
anchor+v2);
     if ( mapr )
-        prim->setTexCoordMapper( mapr );
+      prim->setTexCoordMapper( mapr );
     group->add(prim);
+  } else if (primtype == "waldtriangle") {
+    Vector p2(scale/max/1.732, scale/max/1.732, scale/max/1.732);
+
+    Vector v0(-p2);
+    Vector v1(v0 + Vector(p2.x(), 0, 0));
+    Vector v2(v0 + Vector(p2.x(), p2.y(), 0));
+
+    // NOTE(boulos): This does nothing for WaldTriangles (why's that again?)
+    WaldTriangle* prim = new WaldTriangle();
+    Mesh* mesh = new Mesh();
+    mesh->vertices.push_back(v0);
+    mesh->vertices.push_back(v1);
+    mesh->vertices.push_back(v2);
+
+    mesh->materials.push_back(matl);
+
+    mesh->vertex_indices.push_back(0);
+    mesh->vertex_indices.push_back(1);
+    mesh->vertex_indices.push_back(2);
+
+    mesh->texture_indices.push_back(Mesh::kNoTextureIndex);
+    mesh->texture_indices.push_back(Mesh::kNoTextureIndex);
+    mesh->texture_indices.push_back(Mesh::kNoTextureIndex);
+
+    mesh->face_material.push_back(0);
+
+    mesh->addTriangle(prim);
+    prim->update();
+    if ( mapr )
+      prim->setTexCoordMapper( mapr );
+    spinprim = prim;
   } else {
     throw IllegalArgument("Unknown primitive type for primtest: "+primtype, 
0, args);
   }




  • [Manta] r1658 - trunk/scenes, boulos, 08/16/2007

Archive powered by MHonArc 2.6.16.

Top of page