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