forked from bartvdbraak/blender
Depsgraph: Use explicit depsgraph in alembic module
This commit is contained in:
parent
3a7a7ed03b
commit
e72dfee66f
@ -168,7 +168,8 @@ static bool export_object(const ExportSettings * const settings, const Base * co
|
|||||||
|
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
AbcExporter::AbcExporter(Main *bmain, EvaluationContext *eval_ctx, Scene *scene, const char *filename, ExportSettings &settings)
|
AbcExporter::AbcExporter(Main *bmain, EvaluationContext *eval_ctx, Scene *scene, Depsgraph *depsgraph,
|
||||||
|
const char *filename, ExportSettings &settings)
|
||||||
: m_bmain(bmain)
|
: m_bmain(bmain)
|
||||||
, m_settings(settings)
|
, m_settings(settings)
|
||||||
, m_filename(filename)
|
, m_filename(filename)
|
||||||
@ -176,6 +177,7 @@ AbcExporter::AbcExporter(Main *bmain, EvaluationContext *eval_ctx, Scene *scene,
|
|||||||
, m_shape_sampling_index(0)
|
, m_shape_sampling_index(0)
|
||||||
, m_eval_ctx(eval_ctx)
|
, m_eval_ctx(eval_ctx)
|
||||||
, m_scene(scene)
|
, m_scene(scene)
|
||||||
|
, m_depsgraph(depsgraph)
|
||||||
, m_writer(NULL)
|
, m_writer(NULL)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@ -653,5 +655,5 @@ void AbcExporter::setCurrentFrame(Main *bmain, double t)
|
|||||||
{
|
{
|
||||||
m_scene->r.cfra = static_cast<int>(t);
|
m_scene->r.cfra = static_cast<int>(t);
|
||||||
m_scene->r.subframe = static_cast<float>(t) - m_scene->r.cfra;
|
m_scene->r.subframe = static_cast<float>(t) - m_scene->r.cfra;
|
||||||
BKE_scene_update_for_newframe(bmain->eval_ctx, bmain, m_scene);
|
BKE_scene_graph_update_for_newframe(bmain->eval_ctx, m_depsgraph, bmain, m_scene);
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,7 @@ class AbcTransformWriter;
|
|||||||
class ArchiveWriter;
|
class ArchiveWriter;
|
||||||
|
|
||||||
struct EvaluationContext;
|
struct EvaluationContext;
|
||||||
|
struct Depsgraph;
|
||||||
struct Main;
|
struct Main;
|
||||||
struct Object;
|
struct Object;
|
||||||
struct Scene;
|
struct Scene;
|
||||||
@ -46,6 +47,7 @@ struct ExportSettings {
|
|||||||
|
|
||||||
Scene *scene;
|
Scene *scene;
|
||||||
SceneLayer *sl; // Scene layer to export; all its objects will be exported, unless selected_only=true
|
SceneLayer *sl; // Scene layer to export; all its objects will be exported, unless selected_only=true
|
||||||
|
Depsgraph *depsgraph;
|
||||||
SimpleLogger logger;
|
SimpleLogger logger;
|
||||||
|
|
||||||
bool selected_only;
|
bool selected_only;
|
||||||
@ -93,6 +95,7 @@ class AbcExporter {
|
|||||||
|
|
||||||
EvaluationContext *m_eval_ctx;
|
EvaluationContext *m_eval_ctx;
|
||||||
Scene *m_scene;
|
Scene *m_scene;
|
||||||
|
Depsgraph *m_depsgraph;
|
||||||
|
|
||||||
ArchiveWriter *m_writer;
|
ArchiveWriter *m_writer;
|
||||||
|
|
||||||
@ -103,7 +106,8 @@ class AbcExporter {
|
|||||||
std::vector<AbcObjectWriter *> m_shapes;
|
std::vector<AbcObjectWriter *> m_shapes;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AbcExporter(Main *bmain, EvaluationContext *eval_ctx, Scene *scene, const char *filename, ExportSettings &settings);
|
AbcExporter(Main *bmain, EvaluationContext *eval_ctx, Scene *scene, Depsgraph *depsgraph,
|
||||||
|
const char *filename, ExportSettings &settings);
|
||||||
~AbcExporter();
|
~AbcExporter();
|
||||||
|
|
||||||
void operator()(Main *bmain, float &progress, bool &was_canceled);
|
void operator()(Main *bmain, float &progress, bool &was_canceled);
|
||||||
|
@ -232,6 +232,7 @@ static void find_iobject(const IObject &object, IObject &ret,
|
|||||||
struct ExportJobData {
|
struct ExportJobData {
|
||||||
EvaluationContext eval_ctx;
|
EvaluationContext eval_ctx;
|
||||||
Scene *scene;
|
Scene *scene;
|
||||||
|
Depsgraph *depsgraph;
|
||||||
Main *bmain;
|
Main *bmain;
|
||||||
|
|
||||||
char filename[1024];
|
char filename[1024];
|
||||||
@ -263,7 +264,7 @@ static void export_startjob(void *customdata, short *stop, short *do_update, flo
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
Scene *scene = data->scene;
|
Scene *scene = data->scene;
|
||||||
AbcExporter exporter(data->bmain, &data->eval_ctx, scene, data->filename, data->settings);
|
AbcExporter exporter(data->bmain, &data->eval_ctx, scene, data->depsgraph, data->filename, data->settings);
|
||||||
|
|
||||||
const int orig_frame = CFRA;
|
const int orig_frame = CFRA;
|
||||||
|
|
||||||
@ -315,6 +316,7 @@ bool ABC_export(
|
|||||||
CTX_data_eval_ctx(C, &job->eval_ctx);
|
CTX_data_eval_ctx(C, &job->eval_ctx);
|
||||||
|
|
||||||
job->scene = scene;
|
job->scene = scene;
|
||||||
|
job->depsgraph = CTX_data_depsgraph(C);
|
||||||
job->bmain = CTX_data_main(C);
|
job->bmain = CTX_data_main(C);
|
||||||
job->export_ok = false;
|
job->export_ok = false;
|
||||||
BLI_strncpy(job->filename, filepath, 1024);
|
BLI_strncpy(job->filename, filepath, 1024);
|
||||||
@ -336,6 +338,7 @@ bool ABC_export(
|
|||||||
* hardcore refactoring. */
|
* hardcore refactoring. */
|
||||||
new (&job->settings) ExportSettings();
|
new (&job->settings) ExportSettings();
|
||||||
job->settings.scene = job->scene;
|
job->settings.scene = job->scene;
|
||||||
|
job->settings.depsgraph = job->depsgraph;
|
||||||
|
|
||||||
/* Sybren: for now we only export the active scene layer.
|
/* Sybren: for now we only export the active scene layer.
|
||||||
* Later in the 2.8 development process this may be replaced by using
|
* Later in the 2.8 development process this may be replaced by using
|
||||||
|
@ -15,11 +15,11 @@ extern "C" {
|
|||||||
|
|
||||||
class TestableAbcExporter : public AbcExporter {
|
class TestableAbcExporter : public AbcExporter {
|
||||||
public:
|
public:
|
||||||
TestableAbcExporter(Main *bmain, Scene *scene, const char *filename, ExportSettings &settings)
|
TestableAbcExporter(Main *bmain, EvaluationContext *eval_ctx,
|
||||||
: AbcExporter(bmain, &eval_ctx, scene, filename, settings)
|
Scene *scene, Depsgraph *depsgraph,
|
||||||
|
const char *filename, ExportSettings &settings)
|
||||||
|
: AbcExporter(bmain, eval_ctx, scene, depsgraph, filename, settings)
|
||||||
{
|
{
|
||||||
/* TODO(sergey): Pass scene layer somehow? */
|
|
||||||
DEG_evaluation_context_init(&eval_ctx, DAG_EVAL_VIEWPORT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void getShutterSamples(unsigned int nr_of_samples,
|
void getShutterSamples(unsigned int nr_of_samples,
|
||||||
@ -33,8 +33,6 @@ public:
|
|||||||
std::set<double> &frames) {
|
std::set<double> &frames) {
|
||||||
AbcExporter::getFrameSet(nr_of_samples, frames);
|
AbcExporter::getFrameSet(nr_of_samples, frames);
|
||||||
}
|
}
|
||||||
|
|
||||||
EvaluationContext eval_ctx;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class AlembicExportTest : public testing::Test
|
class AlembicExportTest : public testing::Test
|
||||||
@ -42,8 +40,9 @@ class AlembicExportTest : public testing::Test
|
|||||||
protected:
|
protected:
|
||||||
ExportSettings settings;
|
ExportSettings settings;
|
||||||
Scene scene;
|
Scene scene;
|
||||||
TestableAbcExporter *exporter;
|
|
||||||
EvaluationContext eval_ctx;
|
EvaluationContext eval_ctx;
|
||||||
|
Depsgraph *depsgraph;
|
||||||
|
TestableAbcExporter *exporter;
|
||||||
Main *bmain;
|
Main *bmain;
|
||||||
|
|
||||||
virtual void SetUp()
|
virtual void SetUp()
|
||||||
@ -57,19 +56,24 @@ protected:
|
|||||||
|
|
||||||
bmain = BKE_main_new();
|
bmain = BKE_main_new();
|
||||||
|
|
||||||
|
/* TODO(sergey): Pass scene layer somehow? */
|
||||||
|
DEG_evaluation_context_init(&eval_ctx, DAG_EVAL_VIEWPORT);
|
||||||
|
depsgraph = DEG_graph_new();
|
||||||
|
|
||||||
exporter = NULL;
|
exporter = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void TearDown()
|
virtual void TearDown()
|
||||||
{
|
{
|
||||||
BKE_main_free(bmain);
|
BKE_main_free(bmain);
|
||||||
|
DEG_graph_free(depsgraph);
|
||||||
delete exporter;
|
delete exporter;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Call after setting up the settings.
|
// Call after setting up the settings.
|
||||||
void createExporter()
|
void createExporter()
|
||||||
{
|
{
|
||||||
exporter = new TestableAbcExporter(bmain, &scene, "somefile.abc", settings);
|
exporter = new TestableAbcExporter(bmain, &eval_ctx, &scene, depsgraph, "somefile.abc", settings);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user