[Bf-blender-cvs] [537d4ef] alembic: Fix wrong time sampling in customdata array properties.

Lukas Tönne noreply at git.blender.org
Thu Mar 26 13:55:30 CET 2015


Commit: 537d4ef881f7161720a93ad03a3d40fbc75410f1
Author: Lukas Tönne
Date:   Wed Mar 25 13:35:52 2015 +0100
Branches: alembic
https://developer.blender.org/rB537d4ef881f7161720a93ad03a3d40fbc75410f1

Fix wrong time sampling in customdata array properties.

The time sampling should be specified explicitly when creating
properties.

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

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

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

diff --git a/source/blender/pointcache/alembic/abc_customdata.cpp b/source/blender/pointcache/alembic/abc_customdata.cpp
index 6f60a7f..a55270e 100644
--- a/source/blender/pointcache/alembic/abc_customdata.cpp
+++ b/source/blender/pointcache/alembic/abc_customdata.cpp
@@ -376,6 +376,11 @@ CustomDataWriter::~CustomDataWriter()
 	}
 }
 
+void CustomDataWriter::init(TimeSamplingPtr time_sampling)
+{
+	m_time_sampling = time_sampling;
+}
+
 /* unique property name based on either layer name or index */
 std::string CustomDataWriter::cdtype_to_name(CustomData *cdata, CustomDataType type, int n)
 {
diff --git a/source/blender/pointcache/alembic/abc_customdata.h b/source/blender/pointcache/alembic/abc_customdata.h
index f943242..6201b55 100644
--- a/source/blender/pointcache/alembic/abc_customdata.h
+++ b/source/blender/pointcache/alembic/abc_customdata.h
@@ -48,6 +48,8 @@ struct CustomDataWriter {
 	CustomDataWriter(const std::string &name, CustomDataMask cdmask);
 	~CustomDataWriter();
 	
+	void init(Abc::TimeSamplingPtr time_sampling);
+	
 	void write_sample(CustomData *cdata, int num_data, Abc::OCompoundProperty &parent);
 	
 	Abc::OCompoundProperty &props() { return m_props; }
@@ -57,7 +59,7 @@ struct CustomDataWriter {
 	{
 		LayerPropsMap::iterator it = m_layer_props.find(name);
 		if (it == m_layer_props.end()) {
-			PropertyT prop = PropertyT(parent, name, 0);
+			PropertyT prop = PropertyT(parent, name, m_time_sampling);
 			m_layer_props.insert(LayerPropsPair(name, prop.getPtr()));
 			return prop;
 		}
@@ -71,7 +73,7 @@ struct CustomDataWriter {
 	{
 		LayerPropsMap::iterator it = m_layer_props.find(name);
 		if (it == m_layer_props.end()) {
-			PropertyT prop = PropertyT(parent, name, 0);
+			PropertyT prop = PropertyT(parent, name, m_time_sampling);
 			m_layer_props.insert(LayerPropsPair(name, prop.getPtr()));
 			return prop;
 		}
@@ -86,6 +88,7 @@ private:
 	std::string m_name;
 	CustomDataMask m_cdmask;
 	
+	Abc::TimeSamplingPtr m_time_sampling;
 	Abc::OCompoundProperty m_props;
 	LayerPropsMap m_layer_props;
 };
diff --git a/source/blender/pointcache/alembic/abc_mesh.cpp b/source/blender/pointcache/alembic/abc_mesh.cpp
index c502b07..7daa3b7 100644
--- a/source/blender/pointcache/alembic/abc_mesh.cpp
+++ b/source/blender/pointcache/alembic/abc_mesh.cpp
@@ -102,20 +102,26 @@ void AbcDerivedMeshWriter::init_abc(OObject parent)
 //	OCompoundProperty geom_props = schema.getArbGeomParams();
 	OCompoundProperty user_props = schema.getUserProperties();
 	
-	m_prop_vert_normals = ON3fArrayProperty(user_props, "vertex_normals", 0);
-	m_prop_vert_flag = OCharArrayProperty(user_props, "vertex_flag", 0);
-	m_prop_vert_bweight = OCharArrayProperty(user_props, "vertex_bweight", 0);
-	
-	m_prop_edge_verts = OUInt32ArrayProperty(user_props, "edge_verts", 0);
-	m_prop_edge_flag = OInt16ArrayProperty(user_props, "edge_flag", 0);
-	m_prop_edge_crease = OCharArrayProperty(user_props, "edge_crease", 0);
-	m_prop_edge_bweight = OCharArrayProperty(user_props, "edge_bweight", 0);
-	
-	m_prop_poly_mat_nr = OInt16ArrayProperty(user_props, "poly_mat_nr", 0);
-	m_prop_poly_flag = OCharArrayProperty(user_props, "poly_flag", 0);
-	
-	m_prop_loop_verts = OInt32ArrayProperty(user_props, "loop_verts", 0);
-	m_prop_loop_edges = OInt32ArrayProperty(user_props, "loop_edges", 0);
+	m_prop_vert_normals = ON3fArrayProperty(user_props, "vertex_normals", frame_sampling());
+	m_prop_vert_flag = OCharArrayProperty(user_props, "vertex_flag", frame_sampling());
+	m_prop_vert_bweight = OCharArrayProperty(user_props, "vertex_bweight", frame_sampling());
+	
+	m_prop_edge_verts = OUInt32ArrayProperty(user_props, "edge_verts", frame_sampling());
+	m_prop_edge_flag = OInt16ArrayProperty(user_props, "edge_flag", frame_sampling());
+	m_prop_edge_crease = OCharArrayProperty(user_props, "edge_crease", frame_sampling());
+	m_prop_edge_bweight = OCharArrayProperty(user_props, "edge_bweight", frame_sampling());
+	
+	m_prop_poly_mat_nr = OInt16ArrayProperty(user_props, "poly_mat_nr", frame_sampling());
+	m_prop_poly_flag = OCharArrayProperty(user_props, "poly_flag", frame_sampling());
+	
+	m_prop_loop_verts = OInt32ArrayProperty(user_props, "loop_verts", frame_sampling());
+	m_prop_loop_edges = OInt32ArrayProperty(user_props, "loop_edges", frame_sampling());
+	
+	m_vert_data_writer.init(frame_sampling());
+	m_edge_data_writer.init(frame_sampling());
+	m_face_data_writer.init(frame_sampling());
+	m_poly_data_writer.init(frame_sampling());
+	m_loop_data_writer.init(frame_sampling());
 }
 
 /* XXX modifiers are not allowed to generate poly normals on their own!
diff --git a/source/blender/pointcache/alembic/abc_writer.h b/source/blender/pointcache/alembic/abc_writer.h
index c8b6b6b..27c9abb 100644
--- a/source/blender/pointcache/alembic/abc_writer.h
+++ b/source/blender/pointcache/alembic/abc_writer.h
@@ -77,6 +77,7 @@ protected:
 
 class AbcWriter : public Writer {
 public:
+	Abc::TimeSamplingPtr frame_sampling() { return m_abc_archive->frame_sampling(); }
 	
 	void init(WriterArchive *archive)
 	{




More information about the Bf-blender-cvs mailing list