[Bf-blender-cvs] [20d3ce57d07] blender2.8: Alembic export: cleaned up multiply-passed depsgraph & scene

Sybren A. Stüvel noreply at git.blender.org
Thu Jun 7 19:03:12 CEST 2018


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. @@



More information about the Bf-blender-cvs mailing list