39 update_archive_bounding_box();
42void ABCHierarchyIterator::update_archive_bounding_box()
49void ABCHierarchyIterator::update_bounding_box_recursive(Imath::Box3d &
bounds,
52 if (context !=
nullptr) {
54 ABCAbstractWriter *abc_writer =
static_cast<ABCAbstractWriter *
>(abstract_writer);
56 if (abc_writer !=
nullptr) {
57 bounds.extendBy(abc_writer->bounding_box());
66 for (HierarchyContext *child_context : *children) {
67 update_bounding_box_recursive(bounds, child_context);
93 if (params_.flatten_hierarchy) {
105 if (params_.flatten_hierarchy) {
110 context, dupli_object, dupli_parent_finder);
114 const std::string &export_path)
const
116 if (export_path.empty()) {
117 return Alembic::Abc::OObject();
121 if (writer ==
nullptr) {
122 return Alembic::Abc::OObject();
129Alembic::Abc::OObject ABCHierarchyIterator::get_alembic_parent(
134 if (!parent.valid()) {
137 return abc_archive_->
archive->getTop();
143ABCWriterConstructorArgs ABCHierarchyIterator::writer_constructor_args(
144 const HierarchyContext *context)
const
146 ABCWriterConstructorArgs constructor_args;
148 constructor_args.abc_archive = abc_archive_;
149 constructor_args.abc_parent = get_alembic_parent(context);
150 constructor_args.abc_name = context->export_name;
151 constructor_args.abc_path = context->export_path;
152 constructor_args.hierarchy_iterator =
this;
153 constructor_args.export_params = ¶ms_;
154 return constructor_args;
162 return transform_writer;
170 if (params_.use_instancing && context->is_instance()) {
174 data_writer = create_data_writer_for_object_type(context, writer_args);
177 if (data_writer ==
nullptr || !data_writer->
is_supported(context)) {
189 switch (context->object->type) {
199 return new ABCCurveWriter(writer_args);
202 return new ABCCurveMeshWriter(writer_args);
204 return new ABCNurbsWriter(writer_args);
206 return new ABCMetaballWriter(writer_args);
227 if (!params_.export_hair) {
246 if (!params_.export_particles) {
251 std::unique_ptr<ABCPointsWriter> particle_writer(std::make_unique<ABCPointsWriter>(writer_args));
253 if (!particle_writer->is_supported(context)) {
257 particle_writer->create_alembic_objects(context);
258 return particle_writer.release();
#define BLI_assert_msg(a, msg)
Object is a sort of wrapper for general info.
#define BASE_SELECTED(v3d, base)
BPy_StructRNA * depsgraph
const Value & lookup(const Key &key) const
virtual ObjectIdentifier determine_graph_index_object(const HierarchyContext *context)
ExportChildren * graph_children(const HierarchyContext *context)
AbstractHierarchyIterator(Main *bmain, Depsgraph *depsgraph)
virtual void iterate_and_write()
virtual ObjectIdentifier determine_graph_index_dupli(const HierarchyContext *context, const DupliObject *dupli_object, const DupliParentFinder &dupli_parent_finder)
AbstractHierarchyWriter * get_writer(const std::string &export_path) const
blender::Set< HierarchyContext * > ExportChildren
static ObjectIdentifier for_graph_root()
virtual void create_alembic_objects(const HierarchyContext *context)=0
virtual bool is_supported(const HierarchyContext *context) const
virtual Alembic::Abc::OObject get_alembic_object() const =0
Alembic::Abc::OArchive * archive
void update_bounding_box(const Imath::Box3d &bounds)
bool mark_as_weak_export(const Object *object) const override
AbstractHierarchyWriter * create_particle_writer(const HierarchyContext *context) override
Alembic::Abc::OObject get_alembic_object(const std::string &export_path) const
AbstractHierarchyWriter * create_hair_writer(const HierarchyContext *context) override
ObjectIdentifier determine_graph_index_dupli(const HierarchyContext *context, const DupliObject *dupli_object, const DupliParentFinder &dupli_parent_finder) override
void iterate_and_write() override
std::string make_valid_name(const std::string &name) const override
AbstractHierarchyWriter * create_data_writer(const HierarchyContext *context) override
ObjectIdentifier determine_graph_index_object(const HierarchyContext *context) override
AbstractHierarchyWriter * create_transform_writer(const HierarchyContext *context) override
void release_writer(AbstractHierarchyWriter *writer) override
ABCHierarchyIterator(Main *bmain, Depsgraph *depsgraph, ABCArchive *abc_archive, const AlembicExportParams ¶ms)
std::string get_valid_abc_name(const char *name)
static const HierarchyContext * root()