Blender V5.0
usd_reader_points.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2024 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4#pragma once
5
6#include "usd.hh"
7#include "usd_reader_geom.hh"
8
9#include <pxr/usd/usdGeom/points.h>
10
11struct Main;
12struct PointCloud;
13
14namespace blender::io::usd {
15
16/*
17 * Read UsdGeomPoints primitives as Blender point clouds.
18 */
20 private:
21 pxr::UsdGeomPoints points_prim_;
22
23 public:
24 USDPointsReader(const pxr::UsdPrim &prim,
25 const USDImportParams &import_params,
26 const ImportSettings &settings)
27 : USDGeomReader(prim, import_params, settings), points_prim_(prim)
28 {
29 }
30
31 bool valid() const override
32 {
33 return bool(points_prim_);
34 }
35
36 /* Initial object creation. */
37 void create_object(Main *bmain) override;
38
39 /* Initial point cloud data update. */
40 void read_object_data(Main *bmain, pxr::UsdTimeCode time) override;
41
42 /* Implement point cloud update. This may be called by the cache modifier
43 * to update animated geometry. */
44 void read_geometry(bke::GeometrySet &geometry_set,
46 const char **r_err_str) override;
47
48 void read_velocities(PointCloud *pointcloud, const pxr::UsdTimeCode time) const;
49 void read_custom_data(PointCloud *pointcloud, const pxr::UsdTimeCode time) const;
50
51 /* Return true if the USD data may be time varying. */
52 bool is_animated() const;
53};
54
55} // namespace blender::io::usd
USDGeomReader(const pxr::UsdPrim &prim, const USDImportParams &import_params, const ImportSettings &settings)
void read_velocities(PointCloud *pointcloud, const pxr::UsdTimeCode time) const
void create_object(Main *bmain) override
void read_geometry(bke::GeometrySet &geometry_set, USDMeshReadParams params, const char **r_err_str) override
void read_custom_data(PointCloud *pointcloud, const pxr::UsdTimeCode time) const
USDPointsReader(const pxr::UsdPrim &prim, const USDImportParams &import_params, const ImportSettings &settings)
void read_object_data(Main *bmain, pxr::UsdTimeCode time) override
const pxr::UsdPrim & prim() const
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]