Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[Manta] r2110 - in trunk: Core/Persistent Model/Groups Model/Primitives


Chronological Thread 
  • From: "Solomon Boulos" <boulos@cs.utah.edu>
  • To: manta@sci.utah.edu
  • Subject: [Manta] r2110 - in trunk: Core/Persistent Model/Groups Model/Primitives
  • Date: Fri, 22 Feb 2008 13:27:29 -0700 (MST)

Author: boulos
Date: Fri Feb 22 13:27:27 2008
New Revision: 2110

Modified:
   trunk/Core/Persistent/MantaRTTI.h
   trunk/Core/Persistent/XMLArchive.cc
   trunk/Model/Groups/DynBVH.cc
   trunk/Model/Groups/Mesh.cc
   trunk/Model/Groups/Mesh.h
   trunk/Model/Primitives/KenslerShirleyTriangle.cc
   trunk/Model/Primitives/KenslerShirleyTriangle.h
   trunk/Model/Primitives/MeshTriangle.cc
   trunk/Model/Primitives/MeshTriangle.h
Log:
Core/Persistent/MantaRTTI.h

 Unsigned int is a good first class citizen too.

Core/Persistent/XMLArchive.cc

 I was wrong about duplicate field errors, they are a problem and the
 current writing of vectors (collections) is broken.

Model/Groups/DynBVH.cc

 Writing a BVH should now work once the vector writing works again.

Model/Groups/Mesh.cc
Model/Groups/Mesh.h
Model/Primitives/KenslerShirleyTriangle.cc
Model/Primitives/KenslerShirleyTriangle.h
Model/Primitives/MeshTriangle.cc
Model/Primitives/MeshTriangle.h

 Adding support for writing Meshes and MeshTriangles.


Modified: trunk/Core/Persistent/MantaRTTI.h
==============================================================================
--- trunk/Core/Persistent/MantaRTTI.h   (original)
+++ trunk/Core/Persistent/MantaRTTI.h   Fri Feb 22 13:27:27 2008
@@ -470,6 +470,14 @@
       return "int";
     }
   };
+
+  template<>
+  class MantaRTTI<unsigned int> {
+  public:
+    static std::string getPublicClassname() {
+      return "unsigned int";
+    }
+  };
 }
 
 

Modified: trunk/Core/Persistent/XMLArchive.cc
==============================================================================
--- trunk/Core/Persistent/XMLArchive.cc (original)
+++ trunk/Core/Persistent/XMLArchive.cc Fri Feb 22 13:27:27 2008
@@ -284,14 +284,14 @@
     if(xmlHasProp(node, to_xml_ch_ptr(tagname.c_str()))){
       ostringstream msg;
       msg << "Writing duplicate field (" << tagname << ") in writing class " 
<< to_char_ptr(node->name);
-      //throw SerializationError(msg.str());
+      throw SerializationError(msg.str());
     }
     xmlSetProp(node, to_xml_ch_ptr(tagname.c_str()), 
to_xml_ch_ptr(value.c_str()));
   } else {
     if(xmlHasProp(node, to_xml_ch_ptr(fieldname.c_str()))){
       ostringstream msg;
       msg << "Writing duplicate field (" << fieldname << ") in writing class 
" << to_char_ptr(node->name);
-      //throw SerializationError(msg.str());
+      throw SerializationError(msg.str());
     }
     xmlSetProp(node, to_xml_ch_ptr(fieldname.c_str()), 
to_xml_ch_ptr(value.c_str()));
   }

Modified: trunk/Model/Groups/DynBVH.cc
==============================================================================
--- trunk/Model/Groups/DynBVH.cc        (original)
+++ trunk/Model/Groups/DynBVH.cc        Fri Feb 22 13:27:27 2008
@@ -606,7 +606,7 @@
 typedef Callback_1Data_2Arg<DynBVH, TaskList*, int, Task*> BVHBuildReduction;
 typedef Callback_1Data_5Arg<DynBVH, TaskList*, Task*, int, int, int, 
UpdateContext> BVHSAHReduction;
 
-#define USE_PARALLEL_BUILD 1
+#define USE_PARALLEL_BUILD 0
 
 void DynBVH::beginParallelBuild(UpdateContext context) {
   cerr << "Doing parallel BVH build" << endl;
@@ -2418,9 +2418,17 @@
 #endif
 
 void DynBVH::readwrite(ArchiveElement* archive) {
-  //archive->readwrite("group", currGroup);
+  MantaRTTI<AccelerationStructure>::readwrite(archive, *this);
+  archive->readwrite("group", currGroup);
   archive->readwrite("object_ids", object_ids);
   archive->readwrite("nodes", nodes);
-  //archive->readwrite("num_nodes", num_nodes);
+  if (archive->reading()) {
+    int num_nodes_nonatomic;
+    archive->readwrite("num_nodes", num_nodes_nonatomic);
+    num_nodes.set(num_nodes_nonatomic);
+  } else {
+    int num_nodes_nonatomic = num_nodes;
+    archive->readwrite("num_nodes", num_nodes_nonatomic);
+  }
 }
 

Modified: trunk/Model/Groups/Mesh.cc
==============================================================================
--- trunk/Model/Groups/Mesh.cc  (original)
+++ trunk/Model/Groups/Mesh.cc  Fri Feb 22 13:27:27 2008
@@ -1,7 +1,11 @@
-#include <Model/Groups/Mesh.h>
+#include <Core/Exceptions/InternalError.h>
+#include <Core/Persistent/ArchiveElement.h>
+#include <Core/Persistent/MantaRTTI.h>
+#include <Core/Persistent/stdRTTI.h>
 #include <Core/Util/Preprocessor.h>
 #include <Core/Util/UpdateGraph.h>
-#include <Core/Exceptions/InternalError.h>
+#include <Interface/InterfaceRTTI.h>
+#include <Model/Groups/Mesh.h>
 #include <Model/Primitives/MeshTriangle.h>
 
 using namespace Manta;
@@ -338,4 +342,26 @@
       i-=3;
     }
   }
+}
+
+namespace Manta {
+  MANTA_REGISTER_CLASS(Mesh);
+}
+
+void Mesh::readwrite(ArchiveElement* archive) {
+  MantaRTTI<Group>::readwrite(archive, *this);
+  // First the data
+  archive->readwrite("vertices", vertices);
+  archive->readwrite("normals", vertexNormals);
+  archive->readwrite("binormals", vertexBinormals);
+  archive->readwrite("tangents", vertexTangents);
+  archive->readwrite("texcoords", texCoords);
+  archive->readwrite("materials", materials);
+  // Now the indices
+  archive->readwrite("vertex_indices", vertex_indices);
+  archive->readwrite("normal_indices", normal_indices);
+  archive->readwrite("binormal_indices", binormal_indices);
+  archive->readwrite("tangent_indices", tangent_indices);
+  archive->readwrite("texture_indices", texture_indices);
+  archive->readwrite("face_material", face_material);
 }

Modified: trunk/Model/Groups/Mesh.h
==============================================================================
--- trunk/Model/Groups/Mesh.h   (original)
+++ trunk/Model/Groups/Mesh.h   Fri Feb 22 13:27:27 2008
@@ -98,7 +98,11 @@
 
     //removes degenerate triangles from mesh.
     void removeDegenerateTriangles();
+
+    void readwrite(ArchiveElement* archive);
   };
+
+  MANTA_DECLARE_RTTI_DERIVEDCLASS(Mesh, Group, ConcreteClass, 
readwriteMethod);
 }
 
 #endif //Manta_Model_Group_Mesh_h

Modified: trunk/Model/Primitives/KenslerShirleyTriangle.cc
==============================================================================
--- trunk/Model/Primitives/KenslerShirleyTriangle.cc    (original)
+++ trunk/Model/Primitives/KenslerShirleyTriangle.cc    Fri Feb 22 13:27:27 
2008
@@ -60,7 +60,7 @@
 
   const unsigned int binormal1_idx = mesh->binormal_indices[which+1];
   const unsigned int binormal2_idx = mesh->binormal_indices[which+2];
-  
+
   const unsigned int tangent0_idx = mesh->tangent_indices[which+0];
   const unsigned int tangent1_idx = mesh->tangent_indices[which+1];
   const unsigned int tangent2_idx = mesh->tangent_indices[which+2];
@@ -425,3 +425,14 @@
   for(int ray=rays.begin(); ray<rays.end(); ray++)
     rays.setGeometricNormal(ray, normal);
 }
+
+namespace Manta {
+  MANTA_DECLARE_RTTI_DERIVEDCLASS(KenslerShirleyTriangle, MeshTriangle, 
ConcreteClass, readwriteMethod);
+  MANTA_REGISTER_CLASS(KenslerShirleyTriangle);
+}
+
+void KenslerShirleyTriangle::readwrite(ArchiveElement* archive)
+{
+  MantaRTTI<MeshTriangle>::readwrite(archive, *this);
+}
+

Modified: trunk/Model/Primitives/KenslerShirleyTriangle.h
==============================================================================
--- trunk/Model/Primitives/KenslerShirleyTriangle.h     (original)
+++ trunk/Model/Primitives/KenslerShirleyTriangle.h     Fri Feb 22 13:27:27 
2008
@@ -1,8 +1,10 @@
 #ifndef Manta_Model_KenslerShirleyTriangle_h
 #define Manta_Model_KenslerShirleyTriangle_h
 
+#include <Core/Persistent/MantaRTTI.h>
 #include <Model/Primitives/MeshTriangle.h>
 #include <Interface/RayPacket.h>
+#include <Interface/InterfaceRTTI.h>
 #include <Core/Geometry/Vector.h>
 #include <Core/Geometry/Ray.h>
 #include <Core/Geometry/BBox.h>
@@ -44,6 +46,8 @@
 
     void computeNormal(const RenderContext& context, RayPacket &rays) const;
     void computeGeometricNormal(const RenderContext& context, RayPacket& 
rays) const;
+
+    void readwrite(ArchiveElement*);
   };
 }
 

Modified: trunk/Model/Primitives/MeshTriangle.cc
==============================================================================
--- trunk/Model/Primitives/MeshTriangle.cc      (original)
+++ trunk/Model/Primitives/MeshTriangle.cc      Fri Feb 22 13:27:27 2008
@@ -57,10 +57,22 @@
     dPdu = inv_det * (uv_diff1[1] * edge0 - uv_diff0[1] * edge1);
     dPdv = inv_det * (uv_diff0[0] * edge1 - uv_diff1[0] * edge0);
   }
-  
+
   for(int i = rays.begin(); i != rays.end(); ++i) {
     rays.setSurfaceDerivativeU(i, dPdu);
     rays.setSurfaceDerivativeV(i, dPdv);
   }
   rays.setFlag( RayPacket::HaveSurfaceDerivatives );
 }
+
+namespace Manta {
+  MANTA_REGISTER_CLASS(MeshTriangle);
+}
+
+void MeshTriangle::readwrite(ArchiveElement* archive)
+{
+  MantaRTTI<Primitive>::readwrite(archive, *this);
+  archive->readwrite("myID", myID);
+  archive->readwrite("mesh", mesh);
+}
+

Modified: trunk/Model/Primitives/MeshTriangle.h
==============================================================================
--- trunk/Model/Primitives/MeshTriangle.h       (original)
+++ trunk/Model/Primitives/MeshTriangle.h       Fri Feb 22 13:27:27 2008
@@ -1,9 +1,11 @@
 #ifndef Manta_Interface_MeshTriangle_h
 #define Manta_Interface_MeshTriangle_h
 
+#include <Core/Persistent/MantaRTTI.h>
+#include <Core/Util/Assert.h>
+#include <Interface/InterfaceRTTI.h>
 #include <Interface/Primitive.h>
 #include <Model/Groups/Mesh.h>
-#include <Core/Util/Assert.h>
 
 namespace Manta {
 
@@ -36,6 +38,7 @@
     virtual void computeSurfaceDerivatives(const RenderContext& context,
                                            RayPacket& rays) const;
 
+    void readwrite(ArchiveElement*);
     //List of the triangle classes that implement MeshTriangle.
     enum TriangleType {
       WALD_TRI,
@@ -50,5 +53,7 @@
     unsigned int myID;
     Mesh *mesh;
   };
+
+  MANTA_DECLARE_RTTI_DERIVEDCLASS(MeshTriangle, Primitive, AbstractClass, 
readwriteMethod);
 }
 #endif //Manta_Interface_MeshTriangle_h




  • [Manta] r2110 - in trunk: Core/Persistent Model/Groups Model/Primitives, Solomon Boulos, 02/22/2008

Archive powered by MHonArc 2.6.16.

Top of page