Blender V5.0
usd_hierarchy_iterator.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2019 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4#pragma once
5
7#include "usd.hh"
9#include "usd_skel_convert.hh"
10
11#include <string>
12
13#include <pxr/usd/usd/common.h>
14#include <pxr/usd/usd/timeCode.h>
15
16struct Depsgraph;
17struct Main;
18struct Object;
19
20namespace blender::io::usd {
21
22using blender::io::AbstractHierarchyIterator;
23using blender::io::AbstractHierarchyWriter;
24using blender::io::HierarchyContext;
25
27 private:
28 const pxr::UsdStageRefPtr stage_;
29 pxr::UsdTimeCode export_time_;
30 const USDExportParams &params_;
31
32 ObjExportMap armature_export_map_;
33 ObjExportMap skinned_mesh_export_map_;
34 ObjExportMap shape_key_mesh_export_map_;
35
36 /* Map prototype_paths[instancer path] = [
37 * (proto_path_1, proto_object_1), (proto_path_2, proto_object_2), ... ] */
39
40 public:
42 Depsgraph *depsgraph,
43 pxr::UsdStageRefPtr stage,
44 const USDExportParams &params);
45
46 void set_export_frame(float frame_nr);
47
48 std::string make_valid_name(const std::string &name) const override;
49
50 void process_usd_skel() const;
51
52 protected:
53 bool mark_as_weak_export(const Object *object) const override;
55
60
61 void release_writer(AbstractHierarchyWriter *writer) override;
62
63 bool include_data_writers(const HierarchyContext *context) const override;
64 bool include_child_writers(const HierarchyContext *context) const override;
65
66 private:
67 USDExporterContext create_usd_export_context(const HierarchyContext *context);
68 USDExporterContext create_point_instancer_context(
69 const HierarchyContext *context, const USDExporterContext &usd_export_context) const;
70
71 void add_usd_skel_export_mapping(const Object *obj, const pxr::SdfPath &usd_path);
72};
73
74} // namespace blender::io::usd
BPy_StructRNA * depsgraph
AbstractHierarchyIterator(Main *bmain, Depsgraph *depsgraph)
bool mark_as_weak_export(const Object *object) const override
AbstractHierarchyWriter * create_data_writer(const HierarchyContext *context) override
void release_writer(AbstractHierarchyWriter *writer) override
bool determine_point_instancers(const HierarchyContext *context)
AbstractHierarchyWriter * create_particle_writer(const HierarchyContext *context) override
USDHierarchyIterator(Main *bmain, Depsgraph *depsgraph, pxr::UsdStageRefPtr stage, const USDExportParams &params)
AbstractHierarchyWriter * create_hair_writer(const HierarchyContext *context) override
bool include_child_writers(const HierarchyContext *context) const override
bool include_data_writers(const HierarchyContext *context) const override
std::string make_valid_name(const std::string &name) const override
AbstractHierarchyWriter * create_transform_writer(const HierarchyContext *context) override
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]
Map< const Object *, pxr::SdfPath > ObjExportMap
const char * name