[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