Blender V4.3
usd_writer_abstract.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
8
9#include <pxr/usd/sdf/path.h>
10#include <pxr/usd/usd/prim.h>
11#include <pxr/usd/usdGeom/boundable.h>
12#include <pxr/usd/usdShade/material.h>
13#include <pxr/usd/usdUtils/sparseValueWriter.h>
14
15#include "WM_types.hh"
16
17#include "DNA_material_types.h"
18
19#include <string>
20
21struct Material;
22struct ReportList;
23
24namespace blender::io::usd {
25
28
30 protected:
32 pxr::UsdUtilsSparseValueWriter usd_value_writer_;
33
36
37 public:
38 USDAbstractWriter(const USDExporterContext &usd_export_context);
39
40 virtual void write(HierarchyContext &context) override;
41
51 virtual bool is_supported(const HierarchyContext *context) const;
52
53 const pxr::SdfPath &usd_path() const;
54
60
61 protected:
62 virtual void do_write(HierarchyContext &context) = 0;
63 std::string get_export_file_path() const;
64 pxr::UsdTimeCode get_export_time_code() const;
65
66 /* Returns the parent path of exported materials. */
67 pxr::SdfPath get_material_library_path() const;
68 pxr::UsdShadeMaterial ensure_usd_material(const HierarchyContext &context,
69 Material *material) const;
70
71 void write_id_properties(const pxr::UsdPrim &prim,
72 const ID &id,
73 pxr::UsdTimeCode = pxr::UsdTimeCode::Default()) const;
74 void write_user_properties(const pxr::UsdPrim &prim,
75 IDProperty *properties,
76 pxr::UsdTimeCode = pxr::UsdTimeCode::Default()) const;
77
78 void write_visibility(const HierarchyContext &context,
79 const pxr::UsdTimeCode timecode,
80 const pxr::UsdGeomImageable &usd_geometry);
81
88 virtual bool mark_as_instance(const HierarchyContext &context, const pxr::UsdPrim &prim);
89
106 virtual void author_extent(const pxr::UsdTimeCode timecode, pxr::UsdGeomBoundable &prim);
107};
108
109} // namespace blender::io::usd
pxr::UsdShadeMaterial ensure_usd_material(const HierarchyContext &context, Material *material) const
virtual void do_write(HierarchyContext &context)=0
const pxr::SdfPath & usd_path() const
void write_user_properties(const pxr::UsdPrim &prim, IDProperty *properties, pxr::UsdTimeCode=pxr::UsdTimeCode::Default()) const
void write_visibility(const HierarchyContext &context, const pxr::UsdTimeCode timecode, const pxr::UsdGeomImageable &usd_geometry)
virtual void author_extent(const pxr::UsdTimeCode timecode, pxr::UsdGeomBoundable &prim)
virtual bool mark_as_instance(const HierarchyContext &context, const pxr::UsdPrim &prim)
pxr::UsdTimeCode get_export_time_code() const
pxr::UsdUtilsSparseValueWriter usd_value_writer_
USDAbstractWriter(const USDExporterContext &usd_export_context)
void write_id_properties(const pxr::UsdPrim &prim, const ID &id, pxr::UsdTimeCode=pxr::UsdTimeCode::Default()) const
virtual void write(HierarchyContext &context) override
virtual bool is_supported(const HierarchyContext *context) const
const USDExporterContext usd_export_context_
Definition DNA_ID.h:413
wmJobWorkerStatus * worker_status
Definition usd.hh:173
ReportList * reports
Definition WM_types.hh:985