Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r1615 - in trunk/Model: Groups Primitives


Chronological Thread 
  • From: thiago@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [MANTA] r1615 - in trunk/Model: Groups Primitives
  • Date: Mon, 6 Aug 2007 21:25:47 -0600 (MDT)

Author: thiago
Date: Mon Aug  6 21:25:46 2007
New Revision: 1615

Modified:
   trunk/Model/Groups/Group.h
   trunk/Model/Primitives/WaldTriangle.cc
   trunk/Model/Primitives/WaldTriangle.h
Log:
Model/Primitives/WaldTriangle.cc
Model/Primitives/WaldTriangle.h:
Added a clean way to get the vertices of a WaldTriangle.

Model/Groups/Group.h: Added a method to get the actual vector of objs
which I use in a MantaProject outside of manta (I had previously added
it in, forgotten, saw that it was unused in manta and gleefully
removed it, and then realized later I was using it elsewhere...)

Modified: trunk/Model/Groups/Group.h
==============================================================================
--- trunk/Model/Groups/Group.h  (original)
+++ trunk/Model/Groups/Group.h  Mon Aug  6 21:25:46 2007
@@ -61,6 +61,7 @@
     virtual void set( size_t i, Object* obj );
     Object* get( size_t i );
     const Object* get( size_t i ) const;
+    const vector<Object*> &getVectorOfObjects() const { return objs; };
     
     //whether the group has been modified (is dirty) and needs state,
     //such as the bounding box, to be updated.

Modified: trunk/Model/Primitives/WaldTriangle.cc
==============================================================================
--- trunk/Model/Primitives/WaldTriangle.cc      (original)
+++ trunk/Model/Primitives/WaldTriangle.cc      Mon Aug  6 21:25:46 2007
@@ -1,6 +1,7 @@
 #include <Model/Primitives/WaldTriangle.h>
 #include <Interface/RayPacket.h>
 #include <Core/Geometry/BBox.h>
+#include <SCIRun/Core/Util/Assert.h>
 #include <sgi_stl_warnings_off.h>
 #include <iostream>
 #include <sgi_stl_warnings_on.h>
@@ -239,34 +240,34 @@
                 add4(org_k,
                      add4(mul4(sse_n_u, org_ku),
                           mul4(sse_n_v, org_kv))));
-    }
 
-    if (HasCommonOrigin && HasCornerRays) {
-      const sse_t nd0 = add4(add4(mul4(sse_n_u,data->corner_dir[ku]),
-                                  mul4(sse_n_v,data->corner_dir[kv])),
-                             data->corner_dir[k]);
-      const sse_t nd = oneOver(nd0);
-      const sse_t f  = mul4(f0,nd);
-      sse_t mask = cmp4_gt(f,_mm_eps);
-      if (none4(mask))
-        return;
-
-      const sse_t hu = add4(org_ku,mul4(f,data->corner_dir[ku]));
-      const sse_t hv = add4(org_kv,mul4(f,data->corner_dir[kv]));
-      const sse_t lambda = add4(sse_b_d,
-                                add4(mul4(hu,sse_b_nu),
-                                     mul4(hv,sse_b_nv)));
-      if (all4(lambda))
-        return;
-
-      const sse_t mue = add4(sse_c_d,add4(mul4(hu,sse_c_nu),
-                                          mul4(hv,sse_c_nv)));
-      if (all4(mue))
-        return;
-
-      mask = cmp4_gt(add4(lambda,mue),_mm_one);
-      if (all4(mask))
-        return;
+      if (HasCornerRays) {
+        const sse_t nd0 = add4(add4(mul4(sse_n_u,data->corner_dir[ku]),
+                                    mul4(sse_n_v,data->corner_dir[kv])),
+                               data->corner_dir[k]);
+        const sse_t nd = oneOver(nd0);
+        const sse_t f  = mul4(f0,nd);
+        sse_t mask = cmp4_gt(f,_mm_eps);
+        if (none4(mask))
+          return;
+
+        const sse_t hu = add4(org_ku,mul4(f,data->corner_dir[ku]));
+        const sse_t hv = add4(org_kv,mul4(f,data->corner_dir[kv]));
+        const sse_t lambda = add4(sse_b_d,
+                                  add4(mul4(hu,sse_b_nu),
+                                       mul4(hv,sse_b_nv)));
+        if (all4(lambda))
+          return;
+
+        const sse_t mue = add4(sse_c_d,add4(mul4(hu,sse_c_nu),
+                                            mul4(hv,sse_c_nv)));
+        if (all4(mue))
+          return;
+
+        mask = cmp4_gt(add4(lambda,mue),_mm_one);
+        if (all4(mask))
+          return;
+      }
     }
 
     if (ray_begin < sse_begin) {
@@ -539,3 +540,9 @@
   }
 }
 
+Vector WaldTriangle::getVertex(unsigned int which)
+{
+  ASSERT(which < 3);
+  const unsigned int index = myID*3;
+  return mesh->vertices[mesh->vertex_indices[index+which]];
+}

Modified: trunk/Model/Primitives/WaldTriangle.h
==============================================================================
--- trunk/Model/Primitives/WaldTriangle.h       (original)
+++ trunk/Model/Primitives/WaldTriangle.h       Mon Aug  6 21:25:46 2007
@@ -50,6 +50,9 @@
 
     void computeNormal(const RenderContext& context, RayPacket &rays) const;
 
+    //which is 0, 1, or 2.
+    Vector getVertex(unsigned int which);
+
   protected:
     void setPoints(const Vector& p1, const Vector& p2, const Vector& p3);
 




  • [MANTA] r1615 - in trunk/Model: Groups Primitives, thiago, 08/06/2007

Archive powered by MHonArc 2.6.16.

Top of page