Text archives Help
- From: bigler@sci.utah.edu
- To: manta@sci.utah.edu
- Subject: [MANTA] r995 - trunk/Model/Groups
- Date: Fri, 31 Mar 2006 13:29:50 -0700 (MST)
Author: bigler
Date: Fri Mar 31 13:29:50 2006
New Revision: 995
Modified:
trunk/Model/Groups/KDTreeLoaderIW.cc
Log:
Compute the normals if they don't exits.
Modified: trunk/Model/Groups/KDTreeLoaderIW.cc
==============================================================================
--- trunk/Model/Groups/KDTreeLoaderIW.cc (original)
+++ trunk/Model/Groups/KDTreeLoaderIW.cc Fri Mar 31 13:29:50 2006
@@ -245,23 +245,34 @@
unsigned int a,b,c,group;
fscanf(geomf, "\t%u %u %u %u\n", &a, &b, &c, &group);
+ Vectorf va(vertices+(a*3));
+ Vectorf vb(vertices+(b*3));
+ Vectorf vc(vertices+(c*3));
// Do bounding box extension
- bbox.extendByPoint(vertices+(a*3));
- bbox.extendByPoint(vertices+(b*3));
- bbox.extendByPoint(vertices+(c*3));
+ bbox.extendByPoint(va);
+ bbox.extendByPoint(vb);
+ bbox.extendByPoint(vc);
// Add the triangle geometry
Triangle& t = kdtree->tris->get(ti);
- t.v = Vectorf(vertices+(a*3));
- t.edge1 = Vectorf(vertices+(b*3)) - t.v;
- t.edge2 = Vectorf(vertices+(c*3)) - t.v;
+ t.v = va;
+ t.edge1 = vb - t.v;
+ t.edge2 = vc - t.v;
// kdtree->triToGroupMap->get(ti) = group;
// Set up the vertex normal
TriangleNormal& tn= kdtree->normals[ti];
- tn[0] = Vectorf(vtxnormals+(a*3));
- tn[1] = Vectorf(vtxnormals+(b*3));
- tn[2] = Vectorf(vtxnormals+(c*3));
+ if (a < num_vtxnormals && b < num_vtxnormals && c < num_vtxnormals) {
+ tn[0] = Vectorf(vtxnormals+(a*3));
+ tn[1] = Vectorf(vtxnormals+(b*3));
+ tn[2] = Vectorf(vtxnormals+(c*3));
+ } else {
+ // Compute the normal
+ Vectorf normal(Cross(t.edge1, t.edge2).normal());
+ tn[0] = normal;
+ tn[1] = normal;
+ tn[2] = normal;
+ }
}
// Here you should parse out the shaders, but we skip this for now
- [MANTA] r995 - trunk/Model/Groups, bigler, 03/31/2006
Archive powered by MHonArc 2.6.16.