blob: 0c0ec5202e51463ee74f322d5aa8b0e0bf6d2b15 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
/* SPDX-License-Identifier: GPL-2.0-or-later
* Adapted from the Blender Alembic importer implementation.
* Modifications Copyright 2021 Tangent Animation. All rights reserved. */
#pragma once
#include "usd.h"
#include "usd_reader_prim.h"
namespace blender::io::usd {
class USDXformReader : public USDPrimReader {
private:
bool use_parent_xform_;
/* Indicates if the created object is the root of a
* transform hierarchy. */
bool is_root_xform_;
public:
USDXformReader(const pxr::UsdPrim &prim,
const USDImportParams &import_params,
const ImportSettings &settings)
: USDPrimReader(prim, import_params, settings),
use_parent_xform_(false),
is_root_xform_(is_root_xform_prim())
{
}
void create_object(Main *bmain, double motionSampleTime) override;
void read_object_data(Main *bmain, double motionSampleTime) override;
void read_matrix(float r_mat[4][4], float time, float scale, bool *r_is_constant);
bool use_parent_xform() const
{
return use_parent_xform_;
}
void set_use_parent_xform(bool flag)
{
use_parent_xform_ = flag;
is_root_xform_ = is_root_xform_prim();
}
bool prim_has_xform_ops() const;
protected:
/* Returns true if the contained USD prim is the root of a transform hierarchy. */
bool is_root_xform_prim() const;
};
} // namespace blender::io::usd
|