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;
233 static bool stripNamespace(
242 void importCustomProperties(
243 const FBX_NodeID node,
245 bool is_animated =
false,
246 const fpreal time_seconds = 0)
const;
251 FBX_AnimCurveID outputCustomProperties(
252 const FBX_NodeID node,
253 FBX_AnimLayerID
layer,
256 bool is_animated =
false);
258 FBX_AnimCurveID outputCustomEnumProperties(
259 const FBX_NodeID node,
260 FBX_AnimLayerID
layer,
268 FBX_AnimCurveNodeID outputCustomCompoundProperties(
269 const FBX_NodeID node,
270 FBX_AnimLayerID
layer,
276 FBX_AnimCurveID createCurveOnNode(
277 FBX_AnimCurveNodeID curve_node,
283 int getChannelsCount(FBX_AnimCurveNodeID curve_node);
286 FBX_NodeID findNode(
const char*
name)
const;
294 FBX_NodeID findNodeByPath(
const char*
path)
const;
297 void getUniqueNodeNames(
299 bool remove_namespace,
302 int nodeCount()
const;
303 FBX_NodeID node(
int i)
const;
305 FBX_NodeID rootNode()
const;
306 FBX_NodeID parentNode(FBX_NodeID node)
const;
307 int childNodeCount(FBX_NodeID node)
const;
308 FBX_NodeID childNode(FBX_NodeID node,
int i)
const;
335 NodeType nodeType(FBX_NodeID node)
const;
340 FBX_NodeID createJointNode(
346 FBX_NodeID createLODGroupNode(
const char*
name);
349 FBX_NodeID createNullNode(
const char*
name);
352 static bool isLODGroupNullNodeName(
const char *node_name);
356 void nodeAddChild(FBX_NodeID parent, FBX_NodeID child);
358 bool visibility(FBX_NodeID node)
const;
360 FBX_GeometryID geometry(FBX_NodeID node)
const;
361 FBX_NodeID geometryNode(FBX_GeometryID geometry)
const;
362 int geometrySkinDeformerCount(FBX_GeometryID geometry)
const;
365 int skinDeformerCount()
const;
369 FBX_GeometryID skinDeformerGeometry(
int i)
const;
371 FBX_MeshID geometryMesh(FBX_NodeID node)
const;
374 bool computeSmoothingGroupInfo(FBX_MeshID mesh)
const;
384 bool convertGeometry(
386 FBX_GeometryID geometry,
388 bool add_unused_joints,
391 bool convertGeometry(
393 FBX_GeometryID geometry,
395 bool add_unused_joints,
408 SkinningType geometrySkinDeformerType(FBX_GeometryID geometry,
int i)
const;
411 int blendshapeCount(FBX_GeometryID geometry)
const;
413 int blendshapeChannelCount(
414 FBX_GeometryID geometry,
int blendshape_idx)
const;
417 int blendshape_idx,
int channel_idx)
const;
422 bool convertBlendShapeBaseGeometry(
424 FBX_GeometryID geometry,
434 void blendShapeChannelTargets(
435 FBX_GeometryID geometry,
445 void blendShapeChannelTargets(
446 FBX_GeometryID geometry,
459 FBX_AnimCurveID blendshapeChannelCurve(
460 FBX_GeometryID geometry,
462 int channel_idx)
const;
463 FBX_AnimCurveID blendshapeChannelCurve(
464 FBX_GeometryID geometry,
467 bool create_if_needed);
472 FBX_AnimCurveID curve,
fpreal time_seconds)
const;
475 int animCurveKeyCount(FBX_AnimCurveID curve)
const;
478 void getAnimCurveTimeInterval(
479 FBX_AnimCurveID curve,
498 bool nodeIsRotationActive(FBX_NodeID node)
const;
508 UT_Vector3D nodeRotationPivot(FBX_NodeID node)
const;
510 int animLayerCount(FBX_ClipID
clip)
const;
511 FBX_AnimLayerID animLayer(FBX_ClipID
clip,
int i)
const;
514 FBX_AnimLayerID createAnimLayer(
const char*
name,
515 FBX_ClipID
clip = FBX_ClipID{});
519 void destroyAnimLayer(FBX_AnimLayerID
layer,
520 bool recurse_unused =
false);
524 void addAnimLayer(FBX_ClipID
clip, FBX_AnimLayerID
layer);
525 void removeAnimLayer(FBX_ClipID
clip, FBX_AnimLayerID
layer);
529 int animLayerSrcCount(FBX_AnimLayerID
layer)
const;
532 FBX_AnimCurveID propertyAnimCurve(
533 FBX_PropertyID property,
534 FBX_AnimLayerID
layer,
536 bool create =
false);
541 FBX_PropertyID property,
550 void propertySetFloat(
551 FBX_PropertyID property,
553 void propertySetVector(
554 FBX_PropertyID property,
560 double sceneScale()
const;
567 FBX_NodeID node,
fpreal time_seconds)
const;
572 FBX_NodeID node,
fpreal time_seconds)
const;
575 UT_Matrix4D nodeGlobalRestTransform(FBX_NodeID node)
const;
580 UT_Matrix4D nodeLocalRestTransform(FBX_NodeID node)
const;
583 void setNodeLocalRestTransform(
592 bool nodeGeometricTransform(
596 void removeNodeAnimation(FBX_NodeID node);
601 double computeConversionFactor()
const;
604 nodeScaleInheritanceMode(FBX_NodeID node)
const;
611 bool setNodeScaleInheritanceMode(
614 int clipCount()
const;
615 FBX_ClipID
clip(
int i)
const;
617 FBX_ClipID findClip(
const char* name)
const;
618 const char* clipName(FBX_ClipID
clip)
const;
620 void setActiveClip(FBX_ClipID
clip);
621 FBX_ClipID activeClip()
const;
623 FBX_ClipID createClip(
const char* name);
627 void getClipTimeRange(
629 void setClipTimeRange(
720 template <
typename FBX_T,
typename ID_T>
721 static inline FBX_T * castID(ID_T
id);
744 void reset(FBX_AnimCurveID curve);
745 void markForDeletion();
748 int addKey(
fpreal time_seconds);
755 fpreal keyValue(
int key_i)
const;
757 FBX_AnimCurveID
curve()
const {
return myCurve; }
761 template <
typename FBX_T,
typename ID_T>
762 static inline FBX_T * castID(ID_T
id)
763 {
return FBX_SceneProxy::castID<FBX_T,ID_T>(
id); }
766 FBX_AnimCurveID myCurve = FBX_AnimCurveID{};
767 int myLastKeyIndex = 0;
768 bool myDestroyCurveOnCleanup =
false;
802 return !(*
this ==
x);
818 D1::clearConstruct(&(p->
myNode));
820 D2::clearConstruct(&(p->
mySkins));
822 static const bool clearNeedsDestruction =
false;
826 #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