55 update_archive_bounding_box();
58 void ABCHierarchyIterator::update_archive_bounding_box()
65 void ABCHierarchyIterator::update_bounding_box_recursive(Imath::Box3d &
bounds,
70 ABCAbstractWriter *abc_writer =
static_cast<ABCAbstractWriter *
>(abstract_writer);
72 if (abc_writer !=
nullptr) {
73 bounds.extendBy(abc_writer->bounding_box());
78 update_bounding_box_recursive(
bounds, child_context);
98 std::string abc_name(name);
99 std::replace(abc_name.begin(), abc_name.end(),
' ',
'_');
100 std::replace(abc_name.begin(), abc_name.end(),
'.',
'_');
101 std::replace(abc_name.begin(), abc_name.end(),
':',
'_');
125 context, dupli_object, dupli_parent_finder);
129 const std::string &export_path)
const
131 if (export_path.empty()) {
132 return Alembic::Abc::OObject();
136 if (writer ==
nullptr) {
137 return Alembic::Abc::OObject();
144 Alembic::Abc::OObject ABCHierarchyIterator::get_alembic_parent(
149 if (!parent.valid()) {
152 return abc_archive_->
archive->getTop();
158 ABCWriterConstructorArgs ABCHierarchyIterator::writer_constructor_args(
159 const HierarchyContext *
context)
const
161 ABCWriterConstructorArgs constructor_args;
163 constructor_args.abc_archive = abc_archive_;
164 constructor_args.abc_parent = get_alembic_parent(
context);
165 constructor_args.abc_name =
context->export_name;
166 constructor_args.abc_path =
context->export_path;
167 constructor_args.hierarchy_iterator =
this;
168 constructor_args.export_params = ¶ms_;
169 return constructor_args;
177 return transform_writer;
189 data_writer = create_data_writer_for_object_type(
context, writer_args);
204 switch (
context->object->type) {
213 return new ABCCurveWriter(writer_args);
216 return new ABCCurveMeshWriter(writer_args);
218 return new ABCNurbsWriter(writer_args);
220 return new ABCMetaballWriter(writer_args);
232 BLI_assert(!
"OB_TYPE_MAX should not be used");
266 std::unique_ptr<ABCPointsWriter> particle_writer(std::make_unique<ABCPointsWriter>(writer_args));
268 if (!particle_writer->is_supported(
context)) {
272 particle_writer->create_alembic_objects(
context);
273 return particle_writer.release();
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
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
ABCHierarchyIterator(Depsgraph *depsgraph, ABCArchive *abc_archive_, const AlembicExportParams ¶ms)
virtual ExportGraph::key_type determine_graph_index_object(const HierarchyContext *context) override
const Depsgraph * depsgraph
struct SELECTID_Context context
static const HierarchyContext * root()