[Bf-blender-cvs] [f5de2c6] gooseberry: Tessface customdata for derived mesh caching.
Lukas Tönne
noreply at git.blender.org
Mon Mar 23 13:02:51 CET 2015
Commit: f5de2c6693b20aa270d5b0f8dece36b5c1434555
Author: Lukas Tönne
Date: Sat Mar 7 19:04:24 2015 +0100
Branches: gooseberry
https://developer.blender.org/rBf5de2c6693b20aa270d5b0f8dece36b5c1434555
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;
};
More information about the Bf-blender-cvs
mailing list