FBX2glTF/sdk/Darwin/2019.2/include/fbxsdk/scene/constraint/fbxconstraintsinglechainik.h

170 lines
5.5 KiB
C++

/****************************************************************************************
Copyright (C) 2015 Autodesk, Inc.
All rights reserved.
Use of this software is subject to the terms of the Autodesk license agreement
provided at the time of installation or download, or which otherwise accompanies
this software in either electronic or hard copy form.
****************************************************************************************/
//! \file fbxconstraintsinglechainik.h
#ifndef _FBXSDK_SCENE_CONSTRAINT_SINGLE_CHAIN_IK_H_
#define _FBXSDK_SCENE_CONSTRAINT_SINGLE_CHAIN_IK_H_
#include <fbxsdk/fbxsdk_def.h>
#include <fbxsdk/scene/constraint/fbxconstraint.h>
#include <fbxsdk/fbxsdk_nsbegin.h>
/** \brief This constraint class contains methods for accessing the properties of a single chain IK constraint.
* \nosubgrouping
*/
class FBXSDK_DLL FbxConstraintSingleChainIK : public FbxConstraint
{
FBXSDK_OBJECT_DECLARE(FbxConstraintSingleChainIK, FbxConstraint);
public:
/** Solver pole vector mode.
*/
enum ESolverMode
{
eRotatePlane, //! Rotate plane solver.
eSingleChain //! Single chain solver.
};
/** Pole vector mode.
*/
enum EPoleVectorMode
{
eVector, //! Pole vector type is vector.
eObject //! Pole vector type is object.
};
/** If the constraints read its animation on Translation and Scale for the nodes it constraints.
*/
enum EEvaluationMode
{
eNeverTS, //! The constraints never read its animation on translation and scale for the nodes.
eAutoDetect, //! The constraints read its animation on translation and scale for the nodes according to automatic detection.
eAlwaysTS //! The constraints always read its animation on translation and scale for the nodes.
};
/**
* \name Properties
*/
//@{
/** This property handles pole vector type.
*/
FbxPropertyT<FbxEnum> PoleVectorType;
/** This property handles solver type.
*/
FbxPropertyT<FbxEnum> SolverType;
/** This property handles evaluate TS animation.
*/
FbxPropertyT<FbxEnum> EvaluateTSAnim;
/** This property handles pole vector objects.
*/
FbxPropertyT<FbxReference> PoleVectorObjects;
/** This property handles pole vector.
*
* Default value is (0, 1, 0).
*/
FbxPropertyT<FbxDouble3> PoleVector;
/** This property handles twist value.
*
* Default value is 0.
*/
FbxPropertyT<FbxDouble> Twist;
/** This property handles first joint object.
*/
FbxPropertyT<FbxReference> FirstJointObject;
/** This property handles end joint object.
*/
FbxPropertyT<FbxReference> EndJointObject;
/** This property handles effector object.
*/
FbxPropertyT<FbxReference> EffectorObject;
//@}
/** Get the weight of a source.
* \param pObject Source object that we want the weight.
*/
double GetPoleVectorObjectWeight(const FbxObject* pObject) const;
/** Add a source to the constraint.
* \param pObject New source object.
* \param pWeight Weight value of the source object expressed as a percentage.
* \remarks pWeight value is 100 percent by default.
*/
void AddPoleVectorObject(FbxObject* pObject, double pWeight = 100);
/** Retrieve the constraint source count.
* \return Current constraint source count.
*/
int GetConstraintPoleVectorCount() const;
/** Retrieve a constraint source object.
* \param pIndex Index of constraint source object.
* \return Current source at the specified index.
*/
FbxObject* GetPoleVectorObject(int pIndex) const;
/** Set the first joint object.
* \param pObject The first joint object.
*/
void SetFirstJointObject(FbxObject* pObject);
/** Retrieve the first joint object.
* \return Current first joint object.
*/
FbxObject* GetFirstJointObject() const;
/** Set the end joint object.
* \param pObject The end joint object.
*/
void SetEndJointObject(FbxObject* pObject);
/** Retrieve the end joint object.
* \return Current end joint object.
*/
FbxObject* GetEndJointObject() const;
/** Set the effector object.
* \param pObject The effector object.
*/
void SetEffectorObject(FbxObject* pObject);
/** Retrieve the effector object.
* \return Current effector object.
*/
FbxObject* GetEffectorObject() const;
/*****************************************************************************************************************************
** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
*****************************************************************************************************************************/
#ifndef DOXYGEN_SHOULD_SKIP_THIS
protected:
void ConstructProperties(bool pForceSet) override;
EType GetConstraintType() const override;
#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
};
inline EFbxType FbxTypeOf(const FbxConstraintSingleChainIK::EPoleVectorMode&){ return eFbxEnum; }
inline EFbxType FbxTypeOf(const FbxConstraintSingleChainIK::ESolverMode&){ return eFbxEnum; }
inline EFbxType FbxTypeOf(const FbxConstraintSingleChainIK::EEvaluationMode&){ return eFbxEnum; }
#include <fbxsdk/fbxsdk_nsend.h>
#endif /* _FBXSDK_SCENE_CONSTRAINT_SINGLE_CHAIN_IK_H_ */