[Bf-blender-cvs] [2891298] gooseberry: Fix wrong time sampling in customdata array properties.
Lukas Tönne
noreply at git.blender.org
Wed Mar 25 13:36:44 CET 2015
Commit: 2891298ad26b6970fdb0899a537e442166adf00a
Author: Lukas Tönne
Date: Wed Mar 25 13:35:52 2015 +0100
Branches: gooseberry
https://developer.blender.org/rB2891298ad26b6970fdb0899a537e442166adf00a
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