Blender V4.3
abc_hierarchy_iterator.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2020 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4#pragma once
5
6#include "ABC_alembic.h"
7#include "abc_archive.h"
8
10
11#include <string>
12
13#include <Alembic/Abc/OObject.h>
14
15struct Depsgraph;
16struct Main;
17struct Object;
18
19namespace blender::io::alembic {
20
21class ABCAbstractWriter;
22class ABCHierarchyIterator;
23
33
35 private:
36 ABCArchive *abc_archive_;
37 const AlembicExportParams &params_;
38
39 public:
41 Depsgraph *depsgraph,
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(
56 const HierarchyContext *context,
57 const DupliObject *dupli_object,
58 const DupliParentFinder &dupli_parent_finder) override;
59
61 const HierarchyContext *context) override;
62 virtual AbstractHierarchyWriter *create_data_writer(const HierarchyContext *context) override;
63 virtual AbstractHierarchyWriter *create_hair_writer(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
virtual bool mark_as_weak_export(const Object *object) const override
virtual AbstractHierarchyWriter * create_particle_writer(const HierarchyContext *context) override
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
ABCHierarchyIterator(Main *bmain, Depsgraph *depsgraph, ABCArchive *abc_archive, const AlembicExportParams &params)
virtual ExportGraph::key_type determine_graph_index_object(const HierarchyContext *context) override
const Depsgraph * depsgraph
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]