40 update_archive_bounding_box();
43 void ABCHierarchyIterator::update_archive_bounding_box()
50 void ABCHierarchyIterator::update_bounding_box_recursive(Imath::Box3d &
bounds,
55 ABCAbstractWriter *abc_writer =
static_cast<ABCAbstractWriter *
>(abstract_writer);
57 if (abc_writer !=
nullptr) {
58 bounds.extendBy(abc_writer->bounding_box());
63 update_bounding_box_recursive(
bounds, child_context);
83 std::string abc_name(name);
84 std::replace(abc_name.begin(), abc_name.end(),
' ',
'_');
85 std::replace(abc_name.begin(), abc_name.end(),
'.',
'_');
86 std::replace(abc_name.begin(), abc_name.end(),
':',
'_');
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();
129 Alembic::Abc::OObject ABCHierarchyIterator::get_alembic_parent(
134 if (!parent.valid()) {
137 return abc_archive_->
archive->getTop();
143 ABCWriterConstructorArgs 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;
174 data_writer = create_data_writer_for_object_type(
context, writer_args);
189 switch (
context->object->type) {
198 return new ABCCurveWriter(writer_args);
201 return new ABCCurveMeshWriter(writer_args);
203 return new ABCNurbsWriter(writer_args);
205 return new ABCMetaballWriter(writer_args);
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)
struct Depsgraph Depsgraph
ID and Library types, which are fundamental for sdna.
Object is a sort of wrapper for general info.
static btDbvtVolume bounds(btDbvtNode **leaves, int count)
virtual ExportGraph::key_type determine_graph_index_object(const HierarchyContext *context)
virtual void iterate_and_write()
ExportChildren & graph_children(const HierarchyContext *parent_context)
AbstractHierarchyWriter * get_writer(const std::string &export_path) const
virtual ExportGraph::key_type determine_graph_index_dupli(const HierarchyContext *context, const DupliObject *dupli_object, const DupliParentFinder &dupli_parent_finder)
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)
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 ¶ms)
Alembic::Abc::OObject get_alembic_object(const std::string &export_path) const
virtual AbstractHierarchyWriter * create_hair_writer(const HierarchyContext *context) override
virtual void iterate_and_write() 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
static const HierarchyContext * root()