Blender V5.0
usd_reader_curve.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later
4 * Adapted from the Blender Alembic importer implementation. Copyright 2016 Kévin Dietrich.
5 * Modifications Copyright 2021 Tangent Animation. All rights reserved. */
6#pragma once
7
8#include "usd.hh"
9#include "usd_reader_geom.hh"
10
11#include <pxr/usd/usd/prim.h>
12#include <pxr/usd/usdGeom/basisCurves.h>
13#include <pxr/usd/usdGeom/curves.h>
14
15struct Curves;
16struct Main;
17
18namespace blender::bke {
19struct GeometrySet;
20class CurvesGeometry;
21} // namespace blender::bke
22
23namespace blender::io::usd {
24
26 public:
27 USDCurvesReader(const pxr::UsdPrim &prim,
28 const USDImportParams &import_params,
29 const ImportSettings &settings)
30 : USDGeomReader(prim, import_params, settings)
31 {
32 }
33
34 void create_object(Main *bmain) override;
35 void read_object_data(Main *bmain, pxr::UsdTimeCode time) override;
36
37 void read_geometry(bke::GeometrySet &geometry_set,
39 const char **r_err_str) override;
40
42 const pxr::UsdGeomCurves &usd_curves,
43 const pxr::UsdTimeCode time) const;
44 void read_custom_data(bke::CurvesGeometry &curves, const pxr::UsdTimeCode time) const;
45
46 virtual bool is_animated() const = 0;
47 virtual void read_curve_sample(Curves *curves_id, pxr::UsdTimeCode time) = 0;
48};
49
51 private:
52 pxr::UsdGeomBasisCurves curve_prim_;
53
54 public:
55 USDBasisCurvesReader(const pxr::UsdPrim &prim,
56 const USDImportParams &import_params,
57 const ImportSettings &settings)
58 : USDCurvesReader(prim, import_params, settings), curve_prim_(prim)
59 {
60 }
61
62 bool valid() const override
63 {
64 return bool(curve_prim_);
65 }
66
67 bool is_animated() const override;
68 void read_curve_sample(Curves *curves_id, pxr::UsdTimeCode time) override;
69};
70
71} // namespace blender::io::usd
void read_curve_sample(Curves *curves_id, pxr::UsdTimeCode time) override
USDBasisCurvesReader(const pxr::UsdPrim &prim, const USDImportParams &import_params, const ImportSettings &settings)
void read_object_data(Main *bmain, pxr::UsdTimeCode time) override
void read_geometry(bke::GeometrySet &geometry_set, USDMeshReadParams params, const char **r_err_str) override
void read_custom_data(bke::CurvesGeometry &curves, const pxr::UsdTimeCode time) const
void create_object(Main *bmain) override
virtual bool is_animated() const =0
virtual void read_curve_sample(Curves *curves_id, pxr::UsdTimeCode time)=0
USDCurvesReader(const pxr::UsdPrim &prim, const USDImportParams &import_params, const ImportSettings &settings)
void read_velocities(bke::CurvesGeometry &curves, const pxr::UsdGeomCurves &usd_curves, const pxr::UsdTimeCode time) const
USDGeomReader(const pxr::UsdPrim &prim, const USDImportParams &import_params, const ImportSettings &settings)
const pxr::UsdPrim & prim() const
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]