12 #ifndef __FBX_SCENEPROXY_H_INCLUDED__
13 #define __FBX_SCENEPROXY_H_INCLUDED__
53 using FBX_PropertyID::FBX_PropertyID;
74 myNodeToName[node] =
name;
75 myNameToNode[
name] = node;
82 auto item = myNameToNode.
find(name);
83 return item != myNameToNode.
end() ? item->second : fallback;
90 auto item = myNodeToName.find(node);
91 return (item != myNodeToName.end()) ? item->second : fallback;
97 return myNodeToName.contains(node);
124 bool myConvertUnits =
true;
125 bool myConvertAxisSystem =
true;
127 bool myConvertAxisSystemForceYUp =
true;
128 bool myImportTemplates =
true;
129 bool myImportPivots =
true;
130 bool myImportGlobalSettings =
true;
131 bool myImportCharacters =
true;
132 bool myImportConstraints =
true;
133 bool myImportGobos =
true;
134 bool myImportShapes =
true;
135 bool myImportLinks =
true;
136 bool myImportTextures =
true;
137 bool myImportModels =
true;
138 bool myImportAnimations =
true;
139 bool myImportMaterials =
false;
142 bool myExtractEmbeddedData =
false;
147 bool myBinary =
true;
148 bool myAnimationOnly =
false;
149 bool myEmbedData =
false;
165 bool load(
const char*
path,
174 return load(path, options, errors);
181 bool save(
const char*
path,
183 const SaveOptions& options)
const;
187 bool animation_only =
false)
const
192 return save(path, errors, options);
198 void stampDocumentInfo(
const char* orig_fbx_filename =
nullptr);
200 fpreal globalFrameRate()
const;
201 void setGlobalFrameRate(
fpreal fps);
218 bool convertAxisSystem(AxisSystemPreset preset);
226 bool setGlobalSystemUnit(SystemUnitPreset preset);
230 bool convertToHoudiniAxisSystem();
233 const char* nodeName(FBX_NodeID node)
const;
237 static bool stripNamespace(
246 void importCustomProperties(
247 const FBX_NodeID node,
249 bool is_animated =
false,
250 const fpreal time_seconds = 0)
const;
255 FBX_AnimCurveID outputCustomProperties(
256 const FBX_NodeID node,
257 FBX_AnimLayerID
layer,
260 bool is_animated =
false);
262 FBX_AnimCurveID outputCustomEnumProperties(
263 const FBX_NodeID node,
264 FBX_AnimLayerID
layer,
272 FBX_AnimCurveNodeID outputCustomCompoundProperties(
273 const FBX_NodeID node,
274 FBX_AnimLayerID
layer,
280 FBX_AnimCurveID createCurveOnNode(
281 FBX_AnimCurveNodeID curve_node,
287 int getChannelsCount(FBX_AnimCurveNodeID curve_node);
290 FBX_NodeID findNode(
const char*
name)
const;
298 FBX_NodeID findNodeByPath(
const char*
path)
const;
301 void getUniqueNodeNames(
303 bool remove_namespace,
306 int nodeCount()
const;
307 FBX_NodeID node(
int i)
const;
309 FBX_NodeID rootNode()
const;
310 FBX_NodeID parentNode(FBX_NodeID node)
const;
311 int childNodeCount(FBX_NodeID node)
const;
312 FBX_NodeID childNode(FBX_NodeID node,
int i)
const;
339 NodeType nodeType(FBX_NodeID node)
const;
344 FBX_NodeID createJointNode(
350 FBX_NodeID createLODGroupNode(
const char*
name);
353 FBX_NodeID createNullNode(
const char*
name);
356 static bool isLODGroupNullNodeName(
const char *node_name);
360 void nodeAddChild(FBX_NodeID parent, FBX_NodeID child);
362 bool visibility(FBX_NodeID node)
const;
364 FBX_GeometryID geometry(FBX_NodeID node)
const;
365 FBX_NodeID geometryNode(FBX_GeometryID geometry)
const;
366 int geometrySkinDeformerCount(FBX_GeometryID geometry)
const;
369 int skinDeformerCount()
const;
373 FBX_GeometryID skinDeformerGeometry(
int i)
const;
375 FBX_MeshID geometryMesh(FBX_NodeID node)
const;
377 FBX_CameraID camera(FBX_NodeID node)
const;
379 void extractCameraParameters(
380 const FBX_CameraID camera,
384 bool computeSmoothingGroupInfo(FBX_MeshID mesh)
const;
394 bool convertGeometry(
396 FBX_GeometryID geometry,
398 bool add_unused_joints,
401 bool convertGeometry(
403 FBX_GeometryID geometry,
405 bool add_unused_joints,
408 bool import_to_materialx =
false)
const;
419 SkinningType geometrySkinDeformerType(FBX_GeometryID geometry,
int i)
const;
422 int blendshapeCount(FBX_GeometryID geometry)
const;
424 int blendshapeChannelCount(
425 FBX_GeometryID geometry,
int blendshape_idx)
const;
428 int blendshape_idx,
int channel_idx)
const;
433 bool convertBlendShapeBaseGeometry(
435 FBX_GeometryID geometry,
445 void blendShapeChannelTargets(
446 FBX_GeometryID geometry,
456 void blendShapeChannelTargets(
457 FBX_GeometryID geometry,
470 FBX_AnimCurveID blendshapeChannelCurve(
471 FBX_GeometryID geometry,
473 int channel_idx)
const;
474 FBX_AnimCurveID blendshapeChannelCurve(
475 FBX_GeometryID geometry,
478 bool create_if_needed);
483 FBX_AnimCurveID curve,
fpreal time_seconds)
const;
486 int animCurveKeyCount(FBX_AnimCurveID curve)
const;
489 void getAnimCurveTimeInterval(
490 FBX_AnimCurveID curve,
509 bool nodeIsRotationActive(FBX_NodeID node)
const;
519 UT_Vector3D nodeRotationPivot(FBX_NodeID node)
const;
521 int animLayerCount(FBX_ClipID
clip)
const;
522 FBX_AnimLayerID animLayer(FBX_ClipID
clip,
int i)
const;
525 FBX_AnimLayerID createAnimLayer(
const char*
name,
526 FBX_ClipID
clip = FBX_ClipID{});
530 void destroyAnimLayer(FBX_AnimLayerID
layer,
531 bool recurse_unused =
false);
535 void addAnimLayer(FBX_ClipID
clip, FBX_AnimLayerID
layer);
536 void removeAnimLayer(FBX_ClipID
clip, FBX_AnimLayerID
layer);
540 int animLayerSrcCount(FBX_AnimLayerID
layer)
const;
543 FBX_AnimCurveID propertyAnimCurve(
544 FBX_PropertyID property,
545 FBX_AnimLayerID
layer,
547 bool create =
false);
552 FBX_PropertyID property,
561 void propertySetFloat(
562 FBX_PropertyID property,
564 void propertySetVector(
565 FBX_PropertyID property,
571 double sceneScale()
const;
578 FBX_NodeID node,
fpreal time_seconds)
const;
583 FBX_NodeID node,
fpreal time_seconds)
const;
586 UT_Matrix4D nodeGlobalRestTransform(FBX_NodeID node)
const;
591 UT_Matrix4D nodeLocalRestTransform(FBX_NodeID node)
const;
594 void setNodeLocalRestTransform(
603 bool nodeGeometricTransform(
607 void removeNodeAnimation(FBX_NodeID node);
612 double computeConversionFactor()
const;
615 nodeScaleInheritanceMode(FBX_NodeID node)
const;
622 bool setNodeScaleInheritanceMode(
625 int clipCount()
const;
626 FBX_ClipID
clip(
int i)
const;
628 FBX_ClipID findClip(
const char* name)
const;
629 const char* clipName(FBX_ClipID
clip)
const;
631 void setActiveClip(FBX_ClipID
clip);
632 FBX_ClipID activeClip()
const;
634 FBX_ClipID createClip(
const char* name);
638 void getClipTimeRange(
640 void setClipTimeRange(
672 bool export_user_attribs,
680 bool export_user_attribs,
733 template <
typename FBX_T,
typename ID_T>
734 static inline FBX_T * castID(ID_T
id);
757 void reset(FBX_AnimCurveID curve);
758 void markForDeletion();
761 int addKey(
fpreal time_seconds);
768 fpreal keyValue(
int key_i)
const;
770 FBX_AnimCurveID
curve()
const {
return myCurve; }
774 template <
typename FBX_T,
typename ID_T>
775 static inline FBX_T * castID(ID_T
id)
776 {
return FBX_SceneProxy::castID<FBX_T,ID_T>(
id); }
779 FBX_AnimCurveID myCurve = FBX_AnimCurveID{};
780 int myLastKeyIndex = 0;
781 bool myDestroyCurveOnCleanup =
false;
815 return !(*
this ==
x);
831 D1::clearConstruct(&(p->
myNode));
833 D2::clearConstruct(&(p->
mySkins));
835 static const bool clearNeedsDestruction =
false;
839 #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)
GLsizei const GLfloat * value
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
GLint GLint GLsizei GLint GLenum GLenum type
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.
GA_API const UT_StringHolder parms
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