Blender  V3.3
abc_hierarchy_iterator.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2020 Blender Foundation. All rights reserved. */
3 #pragma once
4 
5 #include "ABC_alembic.h"
6 #include "abc_archive.h"
7 
9 
10 #include <string>
11 
12 #include <Alembic/Abc/OArchive.h>
13 #include <Alembic/Abc/OObject.h>
14 
15 struct Depsgraph;
16 struct Main;
17 struct Object;
18 
19 namespace blender::io::alembic {
20 
21 class ABCAbstractWriter;
22 class ABCHierarchyIterator;
23 
27  Alembic::Abc::OObject abc_parent;
28  std::string abc_name;
29  std::string abc_path;
32 };
33 
35  private:
36  ABCArchive *abc_archive_;
37  const AlembicExportParams &params_;
38 
39  public:
42  ABCArchive *abc_archive_,
44 
45  virtual void iterate_and_write() override;
46  virtual std::string make_valid_name(const std::string &name) const override;
47 
48  Alembic::Abc::OObject get_alembic_object(const std::string &export_path) const;
49 
50  protected:
51  virtual bool mark_as_weak_export(const Object *object) const override;
52 
53  virtual ExportGraph::key_type determine_graph_index_object(
54  const HierarchyContext *context) override;
55  virtual AbstractHierarchyIterator::ExportGraph::key_type determine_graph_index_dupli(
57  const DupliObject *dupli_object,
58  const DupliParentFinder &dupli_parent_finder) override;
59 
61  const HierarchyContext *context) override;
65  const HierarchyContext *context) override;
66 
67  virtual void release_writer(AbstractHierarchyWriter *writer) override;
68 
69  private:
70  Alembic::Abc::OObject get_alembic_parent(const HierarchyContext *context) const;
71  ABCWriterConstructorArgs writer_constructor_args(const HierarchyContext *context) const;
72  void update_archive_bounding_box();
73  void update_bounding_box_recursive(Imath::Box3d &bounds, const HierarchyContext *context);
74 
75  ABCAbstractWriter *create_data_writer_for_object_type(
76  const HierarchyContext *context, const ABCWriterConstructorArgs &writer_args);
77 };
78 
79 } // namespace blender::io::alembic
struct Depsgraph Depsgraph
Definition: DEG_depsgraph.h:35
static btDbvtVolume bounds(btDbvtNode **leaves, int count)
Definition: btDbvt.cpp:299
virtual bool mark_as_weak_export(const Object *object) const override
virtual AbstractHierarchyWriter * create_particle_writer(const HierarchyContext *context) override
ABCHierarchyIterator(Main *bmain, Depsgraph *depsgraph, ABCArchive *abc_archive_, const AlembicExportParams &params)
Alembic::Abc::OObject get_alembic_object(const std::string &export_path) const
virtual AbstractHierarchyWriter * create_hair_writer(const HierarchyContext *context) override
virtual std::string make_valid_name(const std::string &name) const override
virtual AbstractHierarchyWriter * create_data_writer(const HierarchyContext *context) override
virtual AbstractHierarchyWriter * create_transform_writer(const HierarchyContext *context) override
virtual AbstractHierarchyIterator::ExportGraph::key_type determine_graph_index_dupli(const HierarchyContext *context, const DupliObject *dupli_object, const DupliParentFinder &dupli_parent_finder) override
virtual void release_writer(AbstractHierarchyWriter *writer) override
virtual ExportGraph::key_type determine_graph_index_object(const HierarchyContext *context) override
const Depsgraph * depsgraph
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]
Definition: BKE_main.h:121