12 #ifndef __FBX_SCENEPROXY_H_INCLUDED__
13 #define __FBX_SCENEPROXY_H_INCLUDED__
51 using FBX_PropertyID::FBX_PropertyID;
72 myNodeToName[node] =
name;
73 myNameToNode[
name] = node;
80 auto item = myNameToNode.
find(name);
81 return item != myNameToNode.
end() ? item->second : fallback;
88 auto item = myNodeToName.find(node);
89 return (item != myNodeToName.end()) ? item->second : fallback;
95 return myNodeToName.contains(node);
114 bool myConvertUnits =
true;
115 bool myConvertAxisSystem =
true;
116 bool myConvertAxisSystemForceYUp =
true;
117 bool myImportTemplates =
true;
118 bool myImportPivots =
true;
119 bool myImportGlobalSettings =
true;
120 bool myImportCharacters =
true;
121 bool myImportConstraints =
true;
122 bool myImportGobos =
true;
123 bool myImportShapes =
true;
124 bool myImportLinks =
true;
125 bool myImportTextures =
true;
126 bool myImportModels =
true;
127 bool myImportAnimations =
true;
128 bool myImportMaterials =
false;
131 bool myExtractEmbeddedData =
false;
136 bool myBinary =
true;
137 bool myAnimationOnly =
false;
138 bool myEmbedData =
false;
154 bool load(
const char*
path,
163 return load(path, options, errors);
170 bool save(
const char*
path,
172 const SaveOptions& options)
const;
176 bool animation_only =
false)
const
181 return save(path, errors, options);
187 void stampDocumentInfo(
const char* orig_fbx_filename =
nullptr);
189 fpreal globalFrameRate()
const;
190 void setGlobalFrameRate(
fpreal fps);
214 bool convertAxisSystem(AxisSystemPreset preset);
222 bool setGlobalSystemUnit(SystemUnitPreset preset);
226 bool convertToHoudiniAxisSystem();
229 const char* nodeName(FBX_NodeID node)
const;
236 void importCustomProperties(
237 const FBX_NodeID node,
239 bool is_animated =
false,
240 const fpreal time_seconds = 0)
const;
245 FBX_AnimCurveID outputCustomProperties(
246 const FBX_NodeID node,
247 FBX_AnimLayerID
layer,
250 bool is_animated =
false);
252 FBX_AnimCurveID outputCustomEnumProperties(
253 const FBX_NodeID node,
254 FBX_AnimLayerID
layer,
262 FBX_AnimCurveNodeID outputCustomCompoundProperties(
263 const FBX_NodeID node,
264 FBX_AnimLayerID
layer,
270 FBX_AnimCurveID createCurveOnNode(
271 FBX_AnimCurveNodeID curve_node,
277 int getChannelsCount(FBX_AnimCurveNodeID curve_node);
280 FBX_NodeID findNode(
const char*
name)
const;
288 FBX_NodeID findNodeByPath(
const char*
path)
const;
293 int nodeCount()
const;
294 FBX_NodeID node(
int i)
const;
296 FBX_NodeID rootNode()
const;
297 FBX_NodeID parentNode(FBX_NodeID node)
const;
298 int childNodeCount(FBX_NodeID node)
const;
299 FBX_NodeID childNode(FBX_NodeID node,
int i)
const;
326 NodeType nodeType(FBX_NodeID node)
const;
329 FBX_NodeID createJointNode(
const char*
name,
bool is_root);
333 void nodeAddChild(FBX_NodeID parent, FBX_NodeID child);
335 bool visibility(FBX_NodeID node)
const;
337 FBX_GeometryID geometry(FBX_NodeID node)
const;
338 FBX_NodeID geometryNode(FBX_GeometryID geometry)
const;
339 int geometrySkinDeformerCount(FBX_GeometryID geometry)
const;
342 int skinDeformerCount()
const;
346 FBX_GeometryID skinDeformerGeometry(
int i)
const;
348 FBX_MeshID geometryMesh(FBX_NodeID node)
const;
351 bool computeSmoothingGroupInfo(FBX_MeshID mesh)
const;
361 bool convertGeometry(
363 FBX_GeometryID geometry,
365 bool add_unused_joints,
368 bool convertGeometry(
370 FBX_GeometryID geometry,
372 bool add_unused_joints,
385 SkinningType geometrySkinDeformerType(FBX_GeometryID geometry,
int i)
const;
388 int blendshapeCount(FBX_GeometryID geometry)
const;
390 int blendshapeChannelCount(
391 FBX_GeometryID geometry,
int blendshape_idx)
const;
394 int blendshape_idx,
int channel_idx)
const;
399 bool convertBlendShapeBaseGeometry(
401 FBX_GeometryID geometry,
411 void blendShapeChannelTargets(
412 FBX_GeometryID geometry,
422 void blendShapeChannelTargets(
423 FBX_GeometryID geometry,
436 FBX_AnimCurveID blendshapeChannelCurve(
437 FBX_GeometryID geometry,
439 int channel_idx)
const;
440 FBX_AnimCurveID blendshapeChannelCurve(
441 FBX_GeometryID geometry,
444 bool create_if_needed);
449 FBX_AnimCurveID curve,
fpreal time_seconds)
const;
452 int animCurveKeyCount(FBX_AnimCurveID curve)
const;
455 void getAnimCurveTimeInterval(
456 FBX_AnimCurveID curve,
475 bool nodeIsRotationActive(FBX_NodeID node)
const;
485 UT_Vector3D nodeRotationPivot(FBX_NodeID node)
const;
487 int animLayerCount(FBX_ClipID
clip)
const;
488 FBX_AnimLayerID animLayer(FBX_ClipID
clip,
int i)
const;
491 FBX_AnimLayerID createAnimLayer(
const char*
name,
492 FBX_ClipID
clip = FBX_ClipID{});
496 void destroyAnimLayer(FBX_AnimLayerID
layer,
497 bool recurse_unused =
false);
501 void addAnimLayer(FBX_ClipID
clip, FBX_AnimLayerID
layer);
502 void removeAnimLayer(FBX_ClipID
clip, FBX_AnimLayerID
layer);
506 int animLayerSrcCount(FBX_AnimLayerID
layer)
const;
509 FBX_AnimCurveID propertyAnimCurve(
510 FBX_PropertyID property,
511 FBX_AnimLayerID
layer,
513 bool create =
false);
518 FBX_PropertyID property,
527 void propertySetFloat(
528 FBX_PropertyID property,
530 void propertySetVector(
531 FBX_PropertyID property,
537 double sceneScale()
const;
544 FBX_NodeID node,
fpreal time_seconds)
const;
549 FBX_NodeID node,
fpreal time_seconds)
const;
552 UT_Matrix4D nodeGlobalRestTransform(FBX_NodeID node)
const;
557 UT_Matrix4D nodeLocalRestTransform(FBX_NodeID node)
const;
560 void setNodeLocalRestTransform(
569 bool nodeGeometricTransform(
573 void removeNodeAnimation(FBX_NodeID node);
578 double computeConversionFactor()
const;
581 nodeScaleInheritanceMode(FBX_NodeID node)
const;
588 bool setNodeScaleInheritanceMode(
591 int clipCount()
const;
592 FBX_ClipID
clip(
int i)
const;
594 FBX_ClipID findClip(
const char* name)
const;
595 const char* clipName(FBX_ClipID
clip)
const;
597 void setActiveClip(FBX_ClipID
clip);
598 FBX_ClipID activeClip()
const;
600 FBX_ClipID createClip(
const char* name);
604 void getClipTimeRange(
606 void setClipTimeRange(
697 template <
typename FBX_T,
typename ID_T>
698 static inline FBX_T * castID(ID_T
id);
721 void reset(FBX_AnimCurveID curve);
722 void markForDeletion();
725 int addKey(
fpreal time_seconds);
732 fpreal keyValue(
int key_i)
const;
734 FBX_AnimCurveID
curve()
const {
return myCurve; }
738 template <
typename FBX_T,
typename ID_T>
739 static inline FBX_T * castID(ID_T
id)
740 {
return FBX_SceneProxy::castID<FBX_T,ID_T>(
id); }
743 FBX_AnimCurveID myCurve = FBX_AnimCurveID{};
744 int myLastKeyIndex = 0;
745 bool myDestroyCurveOnCleanup =
false;
779 return !(*
this ==
x);
795 D1::clearConstruct(&(p->
myNode));
797 D2::clearConstruct(&(p->
mySkins));
799 static const bool clearNeedsDestruction =
false;
803 #endif // __FBX_SCENEPROXY_H_INCLUDED__
FrontVector myFrontVector
SYS_FORCE_INLINE bool exists(FBX_NodeID node) const
CoordSystem myCoordSystem
bool contains(const Key &key) const
SYS_FORCE_INLINE void add(FBX_NodeID node, const UT_StringHolder &name)
const GLuint GLenum const void * binary
GLsizei const GLchar *const * path
static bool isClear(const T &v)
iterator end()
Returns a non-const end iterator for the set.
bool save(const char *path, FBX_ErrorManager &errors, bool binary=true, bool animation_only=false) const
iterator find(const Key &key)
GLenum GLuint GLint GLint layer
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
bool operator!=(const FBX_AxisSystem &x) const
GA_API const UT_StringHolder scale
PXL_API const char * getName(const ColorSpace *space)
Return the name of the color space.
static void clearConstruct(T *p)
SYS_FORCE_INLINE bool exists(const UT_StringRef &name) const
bool load(const char *path, bool convert_units, FBX_ErrorManager &errors)
GLuint const GLchar * name
GA_API const UT_StringHolder transform
A map of string to various well defined value types.
bool operator==(const FBX_AxisSystem &x) const
FBX_AnimCurveID curve() const
Iterates over a node's user properties.
SYS_FORCE_INLINE UT_StringRef getName(FBX_NodeID node, const UT_StringRef &fallback) const
SYS_FORCE_INLINE FBX_NodeID getNode(const UT_StringRef &name, FBX_NodeID fallback) const
IMATH_INTERNAL_NAMESPACE_HEADER_ENTER IMATH_HOSTDEVICE IMATH_CONSTEXPR14 T clip(const T &p, const Box< T > &box) IMATH_NOEXCEPT
FBX_SCENEPROXY_DECLARE_ID(FBX_NodeID)
JointInfoMap myCapturePose