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);
122 bool myConvertUnits =
true;
123 bool myConvertAxisSystem =
true;
125 bool myConvertAxisSystemForceYUp =
true;
126 bool myImportTemplates =
true;
127 bool myImportPivots =
true;
128 bool myImportGlobalSettings =
true;
129 bool myImportCharacters =
true;
130 bool myImportConstraints =
true;
131 bool myImportGobos =
true;
132 bool myImportShapes =
true;
133 bool myImportLinks =
true;
134 bool myImportTextures =
true;
135 bool myImportModels =
true;
136 bool myImportAnimations =
true;
137 bool myImportMaterials =
false;
140 bool myExtractEmbeddedData =
false;
145 bool myBinary =
true;
146 bool myAnimationOnly =
false;
147 bool myEmbedData =
false;
163 bool load(
const char*
path,
172 return load(path, options, errors);
179 bool save(
const char*
path,
181 const SaveOptions& options)
const;
185 bool animation_only =
false)
const
190 return save(path, errors, options);
196 void stampDocumentInfo(
const char* orig_fbx_filename =
nullptr);
198 fpreal globalFrameRate()
const;
199 void setGlobalFrameRate(
fpreal fps);
216 bool convertAxisSystem(AxisSystemPreset preset);
224 bool setGlobalSystemUnit(SystemUnitPreset preset);
228 bool convertToHoudiniAxisSystem();
231 const char* nodeName(FBX_NodeID node)
const;
235 static bool stripNamespace(
244 void importCustomProperties(
245 const FBX_NodeID node,
247 bool is_animated =
false,
248 const fpreal time_seconds = 0)
const;
253 FBX_AnimCurveID outputCustomProperties(
254 const FBX_NodeID node,
255 FBX_AnimLayerID
layer,
258 bool is_animated =
false);
260 FBX_AnimCurveID outputCustomEnumProperties(
261 const FBX_NodeID node,
262 FBX_AnimLayerID
layer,
270 FBX_AnimCurveNodeID outputCustomCompoundProperties(
271 const FBX_NodeID node,
272 FBX_AnimLayerID
layer,
278 FBX_AnimCurveID createCurveOnNode(
279 FBX_AnimCurveNodeID curve_node,
285 int getChannelsCount(FBX_AnimCurveNodeID curve_node);
288 FBX_NodeID findNode(
const char*
name)
const;
296 FBX_NodeID findNodeByPath(
const char*
path)
const;
299 void getUniqueNodeNames(
301 bool remove_namespace,
304 int nodeCount()
const;
305 FBX_NodeID node(
int i)
const;
307 FBX_NodeID rootNode()
const;
308 FBX_NodeID parentNode(FBX_NodeID node)
const;
309 int childNodeCount(FBX_NodeID node)
const;
310 FBX_NodeID childNode(FBX_NodeID node,
int i)
const;
337 NodeType nodeType(FBX_NodeID node)
const;
342 FBX_NodeID createJointNode(
348 FBX_NodeID createLODGroupNode(
const char*
name);
351 FBX_NodeID createNullNode(
const char*
name);
354 static bool isLODGroupNullNodeName(
const char *node_name);
358 void nodeAddChild(FBX_NodeID parent, FBX_NodeID child);
360 bool visibility(FBX_NodeID node)
const;
362 FBX_GeometryID geometry(FBX_NodeID node)
const;
363 FBX_NodeID geometryNode(FBX_GeometryID geometry)
const;
364 int geometrySkinDeformerCount(FBX_GeometryID geometry)
const;
367 int skinDeformerCount()
const;
371 FBX_GeometryID skinDeformerGeometry(
int i)
const;
373 FBX_MeshID geometryMesh(FBX_NodeID node)
const;
376 bool computeSmoothingGroupInfo(FBX_MeshID mesh)
const;
386 bool convertGeometry(
388 FBX_GeometryID geometry,
390 bool add_unused_joints,
393 bool convertGeometry(
395 FBX_GeometryID geometry,
397 bool add_unused_joints,
410 SkinningType geometrySkinDeformerType(FBX_GeometryID geometry,
int i)
const;
413 int blendshapeCount(FBX_GeometryID geometry)
const;
415 int blendshapeChannelCount(
416 FBX_GeometryID geometry,
int blendshape_idx)
const;
419 int blendshape_idx,
int channel_idx)
const;
424 bool convertBlendShapeBaseGeometry(
426 FBX_GeometryID geometry,
436 void blendShapeChannelTargets(
437 FBX_GeometryID geometry,
447 void blendShapeChannelTargets(
448 FBX_GeometryID geometry,
461 FBX_AnimCurveID blendshapeChannelCurve(
462 FBX_GeometryID geometry,
464 int channel_idx)
const;
465 FBX_AnimCurveID blendshapeChannelCurve(
466 FBX_GeometryID geometry,
469 bool create_if_needed);
474 FBX_AnimCurveID curve,
fpreal time_seconds)
const;
477 int animCurveKeyCount(FBX_AnimCurveID curve)
const;
480 void getAnimCurveTimeInterval(
481 FBX_AnimCurveID curve,
500 bool nodeIsRotationActive(FBX_NodeID node)
const;
510 UT_Vector3D nodeRotationPivot(FBX_NodeID node)
const;
512 int animLayerCount(FBX_ClipID
clip)
const;
513 FBX_AnimLayerID animLayer(FBX_ClipID
clip,
int i)
const;
516 FBX_AnimLayerID createAnimLayer(
const char*
name,
517 FBX_ClipID
clip = FBX_ClipID{});
521 void destroyAnimLayer(FBX_AnimLayerID
layer,
522 bool recurse_unused =
false);
526 void addAnimLayer(FBX_ClipID
clip, FBX_AnimLayerID
layer);
527 void removeAnimLayer(FBX_ClipID
clip, FBX_AnimLayerID
layer);
531 int animLayerSrcCount(FBX_AnimLayerID
layer)
const;
534 FBX_AnimCurveID propertyAnimCurve(
535 FBX_PropertyID property,
536 FBX_AnimLayerID
layer,
538 bool create =
false);
543 FBX_PropertyID property,
552 void propertySetFloat(
553 FBX_PropertyID property,
555 void propertySetVector(
556 FBX_PropertyID property,
562 double sceneScale()
const;
569 FBX_NodeID node,
fpreal time_seconds)
const;
574 FBX_NodeID node,
fpreal time_seconds)
const;
577 UT_Matrix4D nodeGlobalRestTransform(FBX_NodeID node)
const;
582 UT_Matrix4D nodeLocalRestTransform(FBX_NodeID node)
const;
585 void setNodeLocalRestTransform(
594 bool nodeGeometricTransform(
598 void removeNodeAnimation(FBX_NodeID node);
603 double computeConversionFactor()
const;
606 nodeScaleInheritanceMode(FBX_NodeID node)
const;
613 bool setNodeScaleInheritanceMode(
616 int clipCount()
const;
617 FBX_ClipID
clip(
int i)
const;
619 FBX_ClipID findClip(
const char* name)
const;
620 const char* clipName(FBX_ClipID
clip)
const;
622 void setActiveClip(FBX_ClipID
clip);
623 FBX_ClipID activeClip()
const;
625 FBX_ClipID createClip(
const char* name);
629 void getClipTimeRange(
631 void setClipTimeRange(
722 template <
typename FBX_T,
typename ID_T>
723 static inline FBX_T * castID(ID_T
id);
746 void reset(FBX_AnimCurveID curve);
747 void markForDeletion();
750 int addKey(
fpreal time_seconds);
757 fpreal keyValue(
int key_i)
const;
759 FBX_AnimCurveID
curve()
const {
return myCurve; }
763 template <
typename FBX_T,
typename ID_T>
764 static inline FBX_T * castID(ID_T
id)
765 {
return FBX_SceneProxy::castID<FBX_T,ID_T>(
id); }
768 FBX_AnimCurveID myCurve = FBX_AnimCurveID{};
769 int myLastKeyIndex = 0;
770 bool myDestroyCurveOnCleanup =
false;
804 return !(*
this ==
x);
820 D1::clearConstruct(&(p->
myNode));
822 D2::clearConstruct(&(p->
mySkins));
824 static const bool clearNeedsDestruction =
false;
828 #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.
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