Commit: 752e396fccb66a5a4f177c754724c0d30f4a8f60
Author: Lukas Tönne
Date:   Sat Mar 7 19:04:24 2015 +0100
Branches: alembic_pointcache
https://developer.blender.org/rB752e396fccb66a5a4f177c754724c0d30f4a8f60

Tessface customdata for derived mesh caching.

===================================================================

M       source/blender/pointcache/alembic/abc_mesh.cpp
M       source/blender/pointcache/alembic/abc_mesh.h

===================================================================

diff --git a/source/blender/pointcache/alembic/abc_mesh.cpp 
b/source/blender/pointcache/alembic/abc_mesh.cpp
index 3b7b16b..eb0ceac 100644
--- a/source/blender/pointcache/alembic/abc_mesh.cpp
+++ b/source/blender/pointcache/alembic/abc_mesh.cpp
@@ -44,7 +44,8 @@ using namespace AbcGeom;
 
 AbcDerivedMeshWriter::AbcDerivedMeshWriter(const std::string &name, Object 
*ob, DerivedMesh **dm_ptr) :
     DerivedMeshWriter(ob, dm_ptr, name),
-    m_vertex_data_writer("vertex_data", ~CD_MASK_BAREMESH)
+    m_vertex_data_writer("vertex_data", ~CD_MASK_BAREMESH),
+    m_face_data_writer("face_data", ~CD_MASK_BAREMESH)
 {
 }
 
@@ -300,13 +301,19 @@ void AbcDerivedMeshWriter::write_sample()
        CustomData *vdata = output_dm->getVertDataLayout(output_dm);
        int num_vdata = output_dm->getNumVerts(output_dm);
        m_vertex_data_writer.write_sample(vdata, num_vdata, user_props);
+       
+       DM_ensure_tessface(output_dm);
+       CustomData *fdata = output_dm->getTessFaceDataLayout(output_dm);
+       int num_fdata = output_dm->getNumTessFaces(output_dm);
+       m_face_data_writer.write_sample(fdata, num_fdata, user_props);
 }
 
 /* ========================================================================= */
 
 AbcDerivedMeshReader::AbcDerivedMeshReader(const std::string &name, Object 
*ob) :
     DerivedMeshReader(ob, name),
-    m_vertex_data_reader("vertex_data", ~CD_MASK_BAREMESH)
+    m_vertex_data_reader("vertex_data", ~CD_MASK_BAREMESH),
+    m_face_data_reader("face_data", ~CD_MASK_BAREMESH)
 {
 }
 
@@ -574,10 +581,6 @@ PTCReadSampleResult 
AbcDerivedMeshReader::read_sample(float frame)
                apply_sample_poly_smooth(m_result, smooth);
        PROFILE_END(time_build_mesh);
        
-       CustomData *vdata = m_result->getVertDataLayout(m_result);
-       int num_vdata = totverts;
-       m_vertex_data_reader.read_sample(ss, vdata, num_vdata, user_props);
-       
        PROFILE_START;
        if (!has_edges)
                CDDM_calc_edges(m_result);
@@ -587,6 +590,15 @@ PTCReadSampleResult 
AbcDerivedMeshReader::read_sample(float frame)
        DM_ensure_normals(m_result); /* only recalculates normals if no valid 
samples were found (has_normals == false) */
        PROFILE_END(time_calc_normals);
        
+       CustomData *vdata = m_result->getVertDataLayout(m_result);
+       int num_vdata = totverts;
+       m_vertex_data_reader.read_sample(ss, vdata, num_vdata, user_props);
+       
+       DM_ensure_tessface(m_result);
+       CustomData *fdata = m_result->getVertDataLayout(m_result);
+       int num_fdata = m_result->getNumTessFaces(m_result);
+       m_face_data_reader.read_sample(ss, fdata, num_fdata, user_props);
+       
 //     BLI_assert(DM_is_valid(m_result));
        
 #ifdef USE_TIMING
diff --git a/source/blender/pointcache/alembic/abc_mesh.h 
b/source/blender/pointcache/alembic/abc_mesh.h
index 53ed46f..dba5c02 100644
--- a/source/blender/pointcache/alembic/abc_mesh.h
+++ b/source/blender/pointcache/alembic/abc_mesh.h
@@ -60,6 +60,7 @@ private:
        /* note: loop normals are already defined as a parameter in the schema 
*/
        
        CustomDataWriter m_vertex_data_writer;
+       CustomDataWriter m_face_data_writer;
 };
 
 class AbcDerivedMeshReader : public DerivedMeshReader, public AbcReader {
@@ -81,6 +82,7 @@ private:
        AbcGeom::IN3fGeomParam m_param_poly_normals;
        
        CustomDataReader m_vertex_data_reader;
+       CustomDataReader m_face_data_reader;
 };

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to