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)
{
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs