Blender V4.5
usd_writer_pointinstancer.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2025 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
10#include <pxr/usd/usdGeom/pointInstancer.h>
11#include <pxr/usd/usdGeom/points.h>
12#include <vector>
13
14struct USDExporterContext;
15
16namespace blender::io::usd {
17
19 public:
21 std::set<std::pair<pxr::SdfPath, Object *>> &prototype_paths,
22 std::unique_ptr<USDAbstractWriter> base_writer);
24
25 protected:
26 virtual void do_write(HierarchyContext &context) override;
27
28 private:
29 std::unique_ptr<USDAbstractWriter> base_writer_;
30 std::set<std::pair<pxr::SdfPath, Object *>> prototype_paths_;
31 const std::string proto_name_ = "Prototype";
32
33 void write_attribute_data(const bke::AttributeIter &attr,
34 const pxr::UsdGeomPointInstancer &usd_instancer,
35 const pxr::UsdTimeCode timecode);
36
37 void process_instance_reference(
38 const bke::InstanceReference &reference,
39 int instance_index,
40 std::map<std::string, int> &proto_index_map,
41 std::map<std::string, int> &final_proto_index_map,
42 std::map<std::string, pxr::SdfPath> &proto_path_map,
43 pxr::UsdStageRefPtr stage,
44 pxr::VtArray<int> &proto_indices,
45 std::vector<std::pair<int, int>> &collection_instance_object_count_map);
46
47 void compact_prototypes(const pxr::UsdGeomPointInstancer &usd_instancer,
48 const pxr::UsdTimeCode timecode,
49 const pxr::SdfPathVector &proto_paths);
50
51 void override_transform(pxr::UsdStageRefPtr stage,
52 const pxr::SdfPath &proto_path,
53 const float4x4 &transform);
54
55 void handle_collection_prototypes(
56 const pxr::UsdGeomPointInstancer &usd_instancer,
57 const pxr::UsdTimeCode timecode,
58 int instance_num,
59 const std::vector<std::pair<int, int>> &collection_instance_object_count_map);
60};
61
62} // namespace blender::io::usd
#define final(a, b, c)
Definition BLI_hash.h:19
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
USDAbstractWriter(const USDExporterContext &usd_export_context)
USDPointInstancerWriter(const USDExporterContext &ctx, std::set< std::pair< pxr::SdfPath, Object * > > &prototype_paths, std::unique_ptr< USDAbstractWriter > base_writer)
virtual void do_write(HierarchyContext &context) override
MatBase< float, 4, 4 > float4x4
bool override
Definition wm_files.cc:1184