21#include <pxr/base/gf/matrix4f.h>
22#include <pxr/usd/usdGeom/xformable.h>
38 float transform_from_usd[4][4];
47 std::string
prim_path = use_parent_xform_ ?
prim_.GetParent().GetPath().GetAsString() :
65 bool *r_is_constant)
const
70 *r_is_constant =
true;
79 std::get<0>(*xf_result).Get(r_mat);
80 *r_is_constant = std::get<1>(*xf_result);
87 float scale_mat[4][4];
100 pxr::UsdGeomXformable xformable(
prim_);
107 bool reset_xform_stack =
false;
109 return !xformable.GetOrderedXformOps(&reset_xform_stack).empty();
114 if (!
prim_.IsValid()) {
125 if (
prim_.IsA<pxr::UsdGeomXformable>()) {
131 pxr::UsdPrim cur_parent =
prim_.GetParent();
133 if (use_parent_xform_) {
134 cur_parent = cur_parent.GetParent();
137 while (cur_parent && !cur_parent.IsPseudoRoot()) {
138 if (cur_parent.IsA<pxr::UsdGeomXformable>()) {
141 cur_parent = cur_parent.GetParent();
153 pxr::UsdGeomXformable xformable = use_parent_xform_ ? pxr::UsdGeomXformable(
prim_.GetParent()) :
154 pxr::UsdGeomXformable(
prim_);
161 bool is_constant = !xformable.TransformMightBeTimeVarying();
163 bool reset_xform_stack;
164 pxr::GfMatrix4d xform;
165 if (!xformable.GetLocalTransformation(&xform, &reset_xform_stack, time)) {
172 return XformResult(pxr::GfMatrix4f(xform), is_constant);
struct bConstraint * BKE_constraint_add_for_object(struct Object *ob, const char *name, short type)
General operations, lookup, etc. for blender objects.
void BKE_object_apply_mat4(Object *ob, const float mat[4][4], bool use_compat, bool use_parent)
Object * BKE_object_add_only_object(Main *bmain, int type, const char *name) ATTR_RETURNS_NONNULL
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
void unit_m4(float m[4][4])
void scale_m4_fl(float R[4][4], float scale)
#define STRNCPY(dst, src)
@ CONSTRAINT_TYPE_TRANSFORM_CACHE
Object is a sort of wrapper for general info.
const std::string & prim_path() const
const ImportSettings * settings_
void set_props(bool merge_with_parent=false, pxr::UsdTimeCode motionSampleTime=pxr::UsdTimeCode::Default())
const USDImportParams & import_params_
std::tuple< pxr::GfMatrix4f, bool > XformResult
float conversion_mat[4][4]
std::function< CacheFile *()> get_cache_file