Commit: 20d3ce57d0730999373fcbb0b22696dbfdfa7326 Author: Sybren A. Stüvel Date: Thu Jun 7 17:54:36 2018 +0200 Branches: blender2.8 https://developer.blender.org/rB20d3ce57d0730999373fcbb0b22696dbfdfa7326
Alembic export: cleaned up multiply-passed depsgraph & scene Those can now solely be found in the ExportSettings object. =================================================================== M source/blender/alembic/intern/abc_camera.cc M source/blender/alembic/intern/abc_camera.h M source/blender/alembic/intern/abc_curves.cc M source/blender/alembic/intern/abc_curves.h M source/blender/alembic/intern/abc_exporter.cc M source/blender/alembic/intern/abc_exporter.h M source/blender/alembic/intern/abc_hair.cc M source/blender/alembic/intern/abc_hair.h M source/blender/alembic/intern/abc_mball.cc M source/blender/alembic/intern/abc_mball.h M source/blender/alembic/intern/abc_mesh.cc M source/blender/alembic/intern/abc_mesh.h M source/blender/alembic/intern/abc_nurbs.cc M source/blender/alembic/intern/abc_nurbs.h M source/blender/alembic/intern/abc_object.cc M source/blender/alembic/intern/abc_object.h M source/blender/alembic/intern/abc_points.cc M source/blender/alembic/intern/abc_points.h M source/blender/alembic/intern/abc_transform.cc M source/blender/alembic/intern/abc_transform.h M source/blender/alembic/intern/alembic_capi.cc =================================================================== diff --git a/source/blender/alembic/intern/abc_camera.cc b/source/blender/alembic/intern/abc_camera.cc index 4c91b9a6252..457bbd2b3af 100644 --- a/source/blender/alembic/intern/abc_camera.cc +++ b/source/blender/alembic/intern/abc_camera.cc @@ -49,13 +49,11 @@ using Alembic::AbcGeom::kWrapExisting; /* ************************************************************************** */ -AbcCameraWriter::AbcCameraWriter(Depsgraph *depsgraph, - Scene *scene, - Object *ob, +AbcCameraWriter::AbcCameraWriter(Object *ob, AbcTransformWriter *parent, uint32_t time_sampling, ExportSettings &settings) - : AbcObjectWriter(depsgraph, scene, ob, time_sampling, settings, parent) + : AbcObjectWriter(ob, time_sampling, settings, parent) { OCamera camera(parent->alembicXform(), m_name, m_time_sampling); m_camera_schema = camera.getSchema(); diff --git a/source/blender/alembic/intern/abc_camera.h b/source/blender/alembic/intern/abc_camera.h index a839ca947ca..dd5dc28d598 100644 --- a/source/blender/alembic/intern/abc_camera.h +++ b/source/blender/alembic/intern/abc_camera.h @@ -35,9 +35,7 @@ class AbcCameraWriter : public AbcObjectWriter { Alembic::AbcGeom::OFloatProperty m_eye_separation; public: - AbcCameraWriter(Depsgraph *depsgraph, - Scene *scene, - Object *ob, + AbcCameraWriter(Object *ob, AbcTransformWriter *parent, uint32_t time_sampling, ExportSettings &settings); diff --git a/source/blender/alembic/intern/abc_curves.cc b/source/blender/alembic/intern/abc_curves.cc index 9c64fd0481e..158c325e4aa 100644 --- a/source/blender/alembic/intern/abc_curves.cc +++ b/source/blender/alembic/intern/abc_curves.cc @@ -71,13 +71,11 @@ using Alembic::AbcGeom::OV2fGeomParam; /* ************************************************************************** */ -AbcCurveWriter::AbcCurveWriter(Depsgraph *depsgraph, - Scene *scene, - Object *ob, +AbcCurveWriter::AbcCurveWriter(Object *ob, AbcTransformWriter *parent, uint32_t time_sampling, ExportSettings &settings) - : AbcObjectWriter(depsgraph, scene, ob, time_sampling, settings, parent) + : AbcObjectWriter(ob, time_sampling, settings, parent) { OCurves curves(parent->alembicXform(), m_name, m_time_sampling); m_schema = curves.getSchema(); diff --git a/source/blender/alembic/intern/abc_curves.h b/source/blender/alembic/intern/abc_curves.h index e2373381703..4fad27263ea 100644 --- a/source/blender/alembic/intern/abc_curves.h +++ b/source/blender/alembic/intern/abc_curves.h @@ -36,9 +36,7 @@ class AbcCurveWriter : public AbcObjectWriter { Alembic::AbcGeom::OCurvesSchema::Sample m_sample; public: - AbcCurveWriter(Depsgraph *depsgraph, - Scene *scene, - Object *ob, + AbcCurveWriter(Object *ob, AbcTransformWriter *parent, uint32_t time_sampling, ExportSettings &settings); diff --git a/source/blender/alembic/intern/abc_exporter.cc b/source/blender/alembic/intern/abc_exporter.cc index eda3deab64d..cdb176ae02e 100644 --- a/source/blender/alembic/intern/abc_exporter.cc +++ b/source/blender/alembic/intern/abc_exporter.cc @@ -71,6 +71,8 @@ using Alembic::Abc::OBox3dProperty; ExportSettings::ExportSettings() : scene(NULL) + , view_layer(NULL) + , depsgraph(NULL) , logger() , selected_only(false) , visible_layers_only(false) @@ -170,16 +172,12 @@ static bool export_object(const ExportSettings * const settings, const Base * co /* ************************************************************************** */ -AbcExporter::AbcExporter(Main *bmain, Scene *scene, - Depsgraph *depsgraph, - const char *filename, ExportSettings &settings) +AbcExporter::AbcExporter(Main *bmain, const char *filename, ExportSettings &settings) : m_bmain(bmain) , m_settings(settings) , m_filename(filename) , m_trans_sampling_index(0) , m_shape_sampling_index(0) - , m_scene(scene) - , m_depsgraph(depsgraph) , m_writer(NULL) {} @@ -203,7 +201,7 @@ void AbcExporter::getShutterSamples(unsigned int nr_of_samples, bool time_relative, std::vector<double> &samples) { - Scene *scene = m_scene; /* for use in the FPS macro */ + Scene *scene = m_settings.scene; /* for use in the FPS macro */ samples.clear(); unsigned int frame_offset = time_relative ? m_settings.frame_start : 0; @@ -233,7 +231,7 @@ Alembic::Abc::TimeSamplingPtr AbcExporter::createTimeSampling(double step) Alembic::Abc::TimeSamplingType ts( static_cast<uint32_t>(samples.size()), - 1.0 / m_scene->r.frs_sec); + 1.0 / m_settings.scene->r.frs_sec); /* TODO(Sybren): shouldn't we use the FPS macro here? */ return TimeSamplingPtr(new Alembic::Abc::TimeSampling(ts, samples)); } @@ -267,7 +265,7 @@ void AbcExporter::operator()(float &progress, bool &was_canceled) scene_name = "untitled"; } - Scene *scene = m_scene; + Scene *scene = m_settings.scene; const double fps = FPS; char buf[16]; snprintf(buf, 15, "%f", fps); @@ -299,8 +297,8 @@ void AbcExporter::operator()(float &progress, bool &was_canceled) OBox3dProperty archive_bounds_prop = Alembic::AbcGeom::CreateOArchiveBounds(m_writer->archive(), m_trans_sampling_index); - createTransformWritersHierarchy(m_depsgraph); - createShapeWriters(m_depsgraph); + createTransformWritersHierarchy(); + createShapeWriters(); /* Make a list of frames to export. */ @@ -362,7 +360,7 @@ void AbcExporter::operator()(float &progress, bool &was_canceled) } } -void AbcExporter::createTransformWritersHierarchy(Depsgraph *depsgraph) +void AbcExporter::createTransformWritersHierarchy() { for (Base *base = static_cast<Base *>(m_settings.view_layer->object_bases.first); base; base = base->next) { Object *ob = base->object; @@ -375,13 +373,13 @@ void AbcExporter::createTransformWritersHierarchy(Depsgraph *depsgraph) /* We do not export transforms for objects of these classes. */ break; default: - exploreTransform(depsgraph, base, ob->parent, NULL); + exploreTransform(base, ob->parent, NULL); } } } } -void AbcExporter::exploreTransform(Depsgraph *depsgraph, Base *ob_base, Object *parent, Object *dupliObParent) +void AbcExporter::exploreTransform(Base *ob_base, Object *parent, Object *dupliObParent) { /* If an object isn't exported itself, its duplilist shouldn't be * exported either. */ @@ -389,12 +387,12 @@ void AbcExporter::exploreTransform(Depsgraph *depsgraph, Base *ob_base, Object * return; } - Object *ob = DEG_get_evaluated_object(depsgraph, ob_base->object); - if (object_type_is_exportable(m_scene, ob)) { - createTransformWriter(depsgraph, ob, parent, dupliObParent); + Object *ob = DEG_get_evaluated_object(m_settings.depsgraph, ob_base->object); + if (object_type_is_exportable(m_settings.scene, ob)) { + createTransformWriter(ob, parent, dupliObParent); } - ListBase *lb = object_duplilist(depsgraph, m_scene, ob); + ListBase *lb = object_duplilist(m_settings.depsgraph, m_settings.scene, ob); if (lb) { Base fake_base = *ob_base; // copy flags (like selection state) from the real object. @@ -415,7 +413,7 @@ void AbcExporter::exploreTransform(Depsgraph *depsgraph, Base *ob_base, Object * dupli_parent = (dupli_ob->parent) ? dupli_ob->parent : ob; fake_base.object = dupli_ob; - exploreTransform(depsgraph, &fake_base, dupli_parent, ob); + exploreTransform(&fake_base, dupli_parent, ob); } } @@ -423,7 +421,7 @@ void AbcExporter::exploreTransform(Depsgraph *depsgraph, Base *ob_base, Object * } } -AbcTransformWriter * AbcExporter::createTransformWriter(Depsgraph *depsgraph, Object *ob, Object *parent, Object *dupliObParent) +AbcTransformWriter * AbcExporter::createTransformWriter(Object *ob, Object *parent, Object *dupliObParent) { /* An object should not be its own parent, or we'll get infinite loops. */ BLI_assert(ob != parent); @@ -458,29 +456,29 @@ AbcTransformWriter * AbcExporter::createTransformWriter(Depsgraph *depsgraph, Ob * return the parent's AbcTransformWriter pointer. */ if (parent->parent) { if (parent == dupliObParent) { - parent_writer = createTransformWriter(depsgraph, parent, parent->parent, NULL); + parent_writer = createTransformWriter(parent, parent->parent, NULL); } else { - parent_writer = createTransformWriter(depsgraph, parent, parent->parent, dupliObParent); + parent_writer = createTransformWriter(parent, parent->parent, dupliObParent); } } else if (parent == dupliObParent) { if (dupliObParent->parent == NULL) { - parent_writer = createTransformWriter(depsgraph, parent, NULL, NULL); + parent_writer = createTransformWriter(parent, NULL, NULL); } else { - parent_writer = createTransformWriter(depsgraph, parent, dupliObParent->parent, dupliObParent->parent); + parent_writer = createTransformWriter(parent, dupliObParent->parent, dupliObParent->parent); } } else { - parent_writer = createTransformWriter(depsgraph, parent, dupliObParent, dupliObParent); + parent_writer = createTransformWriter(parent, dupliObParent, dupliObParent); } BLI_assert(parent_writer); alembic_parent = parent_writer->alembicXform(); } - my_writer = new AbcTransformWriter(depsgraph, ob, alembic_parent, parent_writer, + my_writer = new AbcTransformWriter(ob, alembic_parent, parent_writer, m_trans_sampling_index, m_settings); /* When flattening, the matrix of the dupliobject has to be added. */ @@ -492,14 +490,14 @@ AbcTransformWriter * AbcExporter::createTransformWriter(Depsgraph *depsgraph, Ob return my_writer; } -void AbcExporter::createShapeWriters(Depsgraph *depsgraph) +void AbcExporter: @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs