[Bf-blender-cvs] [b8e9e36f527] temp-alembic-exporter-T73363-ms2: Alembic: fixed time sampling index handling
Sybren A. Stüvel
noreply at git.blender.org
Tue Apr 28 18:57:33 CEST 2020
Commit: b8e9e36f5273859ab17837e6137585c4778ca53c
Author: Sybren A. Stüvel
Date: Tue Apr 28 16:19:21 2020 +0200
Branches: temp-alembic-exporter-T73363-ms2
https://developer.blender.org/rBb8e9e36f5273859ab17837e6137585c4778ca53c
Alembic: fixed time sampling index handling
===================================================================
M source/blender/io/alembic/intern/export/abc_hierarchy_iterator.cc
M source/blender/io/alembic/intern/export/abc_hierarchy_iterator.h
M source/blender/io/alembic/intern/export/abc_writer_abstract.cc
M source/blender/io/alembic/intern/export/abc_writer_abstract.h
M source/blender/io/alembic/intern/export/abc_writer_camera.cc
M source/blender/io/alembic/intern/export/abc_writer_camera.h
M source/blender/io/alembic/intern/export/abc_writer_curve.cc
M source/blender/io/alembic/intern/export/abc_writer_curve.h
M source/blender/io/alembic/intern/export/abc_writer_mesh.cc
M source/blender/io/alembic/intern/export/abc_writer_mesh.h
M source/blender/io/alembic/intern/export/abc_writer_nurbs.cc
M source/blender/io/alembic/intern/export/abc_writer_nurbs.h
M source/blender/io/alembic/intern/export/abc_writer_points.cc
M source/blender/io/alembic/intern/export/abc_writer_points.h
M source/blender/io/alembic/intern/export/abc_writer_transform.cc
M source/blender/io/alembic/intern/export/abc_writer_transform.h
===================================================================
diff --git a/source/blender/io/alembic/intern/export/abc_hierarchy_iterator.cc b/source/blender/io/alembic/intern/export/abc_hierarchy_iterator.cc
index 2413221bea5..fcfed3ebd56 100644
--- a/source/blender/io/alembic/intern/export/abc_hierarchy_iterator.cc
+++ b/source/blender/io/alembic/intern/export/abc_hierarchy_iterator.cc
@@ -95,8 +95,7 @@ Alembic::Abc::OObject ABCHierarchyIterator::get_alembic_parent(
ABCWriterConstructorArgs ABCHierarchyIterator::writer_constructor_args(
const HierarchyContext *context) const
{
- return ABCWriterConstructorArgs{.object = context->object,
- .depsgraph = depsgraph_,
+ return ABCWriterConstructorArgs{.depsgraph = depsgraph_,
.abc_archive = abc_archive_,
.abc_parent = get_alembic_parent(context),
.abc_name = context->export_name,
@@ -109,7 +108,7 @@ AbstractHierarchyWriter *ABCHierarchyIterator::create_transform_writer(
const HierarchyContext *context)
{
ABCAbstractWriter *transform_writer = new ABCTransformWriter(writer_constructor_args(context));
- transform_writer->create_alembic_objects();
+ transform_writer->create_alembic_objects(context);
return transform_writer;
}
@@ -164,7 +163,7 @@ AbstractHierarchyWriter *ABCHierarchyIterator::create_data_writer(const Hierarch
return nullptr;
}
- data_writer->create_alembic_objects();
+ data_writer->create_alembic_objects(context);
return data_writer;
}
@@ -191,7 +190,7 @@ AbstractHierarchyWriter *ABCHierarchyIterator::create_particle_writer(
return nullptr;
}
- particle_writer->create_alembic_objects();
+ particle_writer->create_alembic_objects(context);
return particle_writer;
}
diff --git a/source/blender/io/alembic/intern/export/abc_hierarchy_iterator.h b/source/blender/io/alembic/intern/export/abc_hierarchy_iterator.h
index 59e44719d49..c86c0f388ed 100644
--- a/source/blender/io/alembic/intern/export/abc_hierarchy_iterator.h
+++ b/source/blender/io/alembic/intern/export/abc_hierarchy_iterator.h
@@ -42,7 +42,6 @@ using USD::HierarchyContext;
class ABCHierarchyIterator;
struct ABCWriterConstructorArgs {
- Object *object; /* Evaluated object */
Depsgraph *depsgraph;
ABCArchive *abc_archive;
Alembic::Abc::OObject abc_parent;
diff --git a/source/blender/io/alembic/intern/export/abc_writer_abstract.cc b/source/blender/io/alembic/intern/export/abc_writer_abstract.cc
index 42061fff34d..fc06896d08b 100644
--- a/source/blender/io/alembic/intern/export/abc_writer_abstract.cc
+++ b/source/blender/io/alembic/intern/export/abc_writer_abstract.cc
@@ -36,7 +36,10 @@ using Alembic::Abc::OObject;
using Alembic::Abc::TimeSamplingPtr;
ABCAbstractWriter::ABCAbstractWriter(const ABCWriterConstructorArgs &args)
- : args_(args), frame_has_been_written_(false), is_animated_(false)
+ : args_(args),
+ frame_has_been_written_(false),
+ is_animated_(false),
+ timesample_index_(args_.abc_archive->time_sampling_index_shapes())
{
}
@@ -52,7 +55,6 @@ bool ABCAbstractWriter::is_supported(const HierarchyContext * /*context*/) const
void ABCAbstractWriter::write(HierarchyContext &context)
{
if (!frame_has_been_written_) {
- /* The start and end frames being the same means "no animation". */
is_animated_ = (args_.export_params.frame_start != args_.export_params.frame_end) &&
check_is_animated(context);
}
diff --git a/source/blender/io/alembic/intern/export/abc_writer_abstract.h b/source/blender/io/alembic/intern/export/abc_writer_abstract.h
index 4e0705ae7e5..534ee07a476 100644
--- a/source/blender/io/alembic/intern/export/abc_writer_abstract.h
+++ b/source/blender/io/alembic/intern/export/abc_writer_abstract.h
@@ -45,10 +45,7 @@ class ABCAbstractWriter : public AbstractHierarchyWriter {
bool frame_has_been_written_;
bool is_animated_;
-
- uint32_t timesample_index_transform_;
- uint32_t timesample_index_geometry_;
-
+ uint32_t timesample_index_;
Imath::Box3d bounding_box_;
public:
@@ -68,7 +65,7 @@ class ABCAbstractWriter : public AbstractHierarchyWriter {
/* Called by AlembicHierarchyCreator after checking that the data is supported via
* is_supported(). */
- virtual void create_alembic_objects() = 0;
+ virtual void create_alembic_objects(const HierarchyContext *context) = 0;
/* TODO(Sybren): bring back support for writing the bounding box. */
diff --git a/source/blender/io/alembic/intern/export/abc_writer_camera.cc b/source/blender/io/alembic/intern/export/abc_writer_camera.cc
index f69dc0e54d2..3aae382c6bf 100644
--- a/source/blender/io/alembic/intern/export/abc_writer_camera.cc
+++ b/source/blender/io/alembic/intern/export/abc_writer_camera.cc
@@ -47,20 +47,17 @@ bool ABCCameraWriter::is_supported(const HierarchyContext *context) const
return camera->type == CAM_PERSP;
}
-void ABCCameraWriter::create_alembic_objects()
+void ABCCameraWriter::create_alembic_objects(const HierarchyContext * /*context*/)
{
- /* If the object is static, use the default static time sampling. */
- uint32_t timesample_index = is_animated_ ? timesample_index_geometry_ : 0;
-
CLOG_INFO(&LOG, 2, "exporting %s", args_.abc_path.c_str());
- abc_camera_ = OCamera(args_.abc_parent, args_.abc_name, timesample_index);
+ abc_camera_ = OCamera(args_.abc_parent, args_.abc_name, timesample_index_);
abc_camera_schema_ = abc_camera_.getSchema();
abc_custom_data_container_ = abc_camera_schema_.getUserProperties();
abc_stereo_distance_ = OFloatProperty(
- abc_custom_data_container_, "stereoDistance", timesample_index);
+ abc_custom_data_container_, "stereoDistance", timesample_index_);
abc_eye_separation_ = OFloatProperty(
- abc_custom_data_container_, "eyeSeparation", timesample_index);
+ abc_custom_data_container_, "eyeSeparation", timesample_index_);
}
const Alembic::Abc::OObject ABCCameraWriter::get_alembic_object() const
diff --git a/source/blender/io/alembic/intern/export/abc_writer_camera.h b/source/blender/io/alembic/intern/export/abc_writer_camera.h
index bc7fe4b0a31..8d1361efc31 100644
--- a/source/blender/io/alembic/intern/export/abc_writer_camera.h
+++ b/source/blender/io/alembic/intern/export/abc_writer_camera.h
@@ -36,7 +36,7 @@ class ABCCameraWriter : public ABCAbstractWriter {
public:
ABCCameraWriter(const ABCWriterConstructorArgs &args);
- virtual void create_alembic_objects() override;
+ void create_alembic_objects(const HierarchyContext *context) override;
virtual const Alembic::Abc::OObject get_alembic_object() const override;
protected:
diff --git a/source/blender/io/alembic/intern/export/abc_writer_curve.cc b/source/blender/io/alembic/intern/export/abc_writer_curve.cc
index 9abc10efd31..f8e5adb7f16 100644
--- a/source/blender/io/alembic/intern/export/abc_writer_curve.cc
+++ b/source/blender/io/alembic/intern/export/abc_writer_curve.cc
@@ -47,16 +47,13 @@ ABCCurveWriter::ABCCurveWriter(const ABCWriterConstructorArgs &args) : ABCAbstra
{
}
-void ABCCurveWriter::create_alembic_objects()
+void ABCCurveWriter::create_alembic_objects(const HierarchyContext *context)
{
- /* If the object is static, use the default static time sampling. */
- uint32_t timesample_index = is_animated_ ? timesample_index_geometry_ : 0;
-
CLOG_INFO(&LOG, 2, "exporting %s", args_.abc_path.c_str());
- abc_curve_ = OCurves(args_.abc_parent, args_.abc_name, timesample_index);
+ abc_curve_ = OCurves(args_.abc_parent, args_.abc_name, timesample_index_);
abc_curve_schema_ = abc_curve_.getSchema();
- Curve *cu = static_cast<Curve *>(args_.object->data);
+ Curve *cu = static_cast<Curve *>(context->object->data);
OCompoundProperty user_props = abc_curve_schema_.getUserProperties();
OInt16Property user_prop_resolu(user_props, ABC_CURVE_RESOLUTION_U_PROPNAME);
user_prop_resolu.set(cu->resolu);
diff --git a/source/blender/io/alembic/intern/export/abc_writer_curve.h b/source/blender/io/alembic/intern/export/abc_writer_curve.h
index 829091d13fc..838b51433a0 100644
--- a/source/blender/io/alembic/intern/export/abc_writer_curve.h
+++ b/source/blender/io/alembic/intern/export/abc_writer_curve.h
@@ -35,7 +35,7 @@ class ABCCurveWriter : public ABCAbstractWriter {
public:
ABCCurveWriter(const ABCWriterConstructorArgs &args);
- void create_alembic_objects() override;
+ void create_alembic_objects(const HierarchyContext *context) override;
const Alembic::Abc::OObject get_alembic_object() const override;
protected:
diff --git a/source/blender/io/alembic/intern/export/abc_writer_mesh.cc b/source/blender/io/alembic/intern/export/abc_writer_mesh.cc
index 8318a56f5db..75a837126ff 100644
--- a/source/blender/io/alembic/intern/export/abc_writer_mesh.cc
+++ b/source/blender/io/alembic/intern/export/abc_writer_mesh.cc
@@ -88,12 +88,9 @@ ABCGenericMeshWriter::ABCGenericMeshWriter(const ABCWriterConstructorArgs &args)
{
}
-void ABCGenericMeshWriter::create_alembic_objects()
+void ABCGenericMeshWriter::create_alembic_objects(const HierarchyContext *context)
{
- /* If the object is static, use the default static time sampling. */
- timesample_index_ = is_animated_ ? timesample_index_geometry_ : 0;
-
- if (!args_.export_params.apply_subdiv && export_as_subdivision_surface(args_.object)) {
+ if (!args_.export_params.apply_subdiv && export_as_subdivision_surface(context->object)) {
is_subd_ = args_.export_params.use_subdiv_schema;
}
@@ -113,7 +110,7 @@ void ABCGenericMeshWriter::create_alembic_objects()
}
Scene *scene_eval = DEG_get_evaluated_scene(args_.depsgraph);
- liquid_sim_modifier_ = get_liquid_sim_modifier(scene_eval, args_.object);
+ liquid_sim_modifier_ = get_liquid_sim_modifier(scene_eval, context->object);
}
ABCGenericMeshWriter::~ABCGenericMeshWriter()
diff --git a/source/blender/io/alembic/intern/export/abc_writer_mesh.h b/source/blender/io/alembic/intern/export/abc_writer_mesh.h
index e7e109f7673..4d1aca5b577 100644
--- a/source/blender/io/alembic/intern/export/abc_writer_mesh.h
+++ b/source/blender/io/alembic/intern/export/abc_writer_mesh.h
@@ -46,19 +46,13 @@ class ABCGenericMeshWriter : public ABCAbstractWrite
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list