public FbxAMatrix(FbxAMatrix pOther) : this(NativeMethods.new_FbxAMatrix__SWIG_1(FbxAMatrix.getCPtr(pOther)), true) { if (NativeMethods.SWIGPendingException.Pending) { throw NativeMethods.SWIGPendingException.Retrieve(); } }
public FbxMatrix(FbxAMatrix pM) : this(FbxWrapperNativePINVOKE.new_FbxMatrix__SWIG_2(FbxAMatrix.getCPtr(pM)), true) { if (FbxWrapperNativePINVOKE.SWIGPendingException.Pending) { throw FbxWrapperNativePINVOKE.SWIGPendingException.Retrieve(); } }
//ToDo : учет associate model? // GlobalTransform of the bone at the binding moment. // // (Comments from fbxcluster.h) // Transformation matrices. A link has three transformation matrices: // - Transform refers to the global initial transform of the geometry node(geometry is the attribute of the node) that contains the link node. // - TransformLink refers to global initial transform of the link(bone) node. // - TransformAssociateModel refers to the global initial transform of the associate model. // // For example, given a mesh binding with several bones(links), Transform is the global transform // of the mesh at the binding moment, TransformLink is the global transform of the bone(link) // at the binding moment, TransformAssociateModel is the global transform of the associate model // at the binding moment. FbxAMatrix GetInitialTransform() { if (cluster == null) { return(FbxMath.EvaluateGlobalTransform(Node)); } //Each cluster is associated with a FbxNode (bone) //cluster.GetLink().GetUniqueID() == Node.GetUniqueID(); //??? Учитывать ли AxisSystem? //??? Не совсем понятны отличаи globalMeshTransform == skin.GetGeometry().GetNode().EvaluateGlobalTransform(), от cluster.GetTransformMatrix() //matrix associated with the geometry node containing the link. (global transform of the mesh at the binding moment) FbxAMatrix globalMeshInitialTransform = new FbxAMatrix(); cluster.GetTransformMatrix(globalMeshInitialTransform); //Get matrix associated with the link node (bind pose, bone transform) at the binding moment FbxAMatrix boneInitialTransform = new FbxAMatrix(); cluster.GetTransformLinkMatrix(boneInitialTransform); //Дополнительная матрица которую cluster ассоциирует с Node - Трансформация в момент привязки. //bind pose matrix that is local for the mesh = Inverse(TransformMatrix) * TransformLinkMatrix FbxAMatrix localBindPose = (globalMeshInitialTransform.mul(geometryOffset).Inverse()).mul(boneInitialTransform); //globalMeshTransform * Inverse(globalMeshInitialTransform) * boneInitialTransform return(globalMeshTransform.mul(geometryOffset).mul(localBindPose)); }
public FbxAMatrix(FbxAMatrix pOther) : this(fbx_wrapperPINVOKE.new_FbxAMatrix__SWIG_1(FbxAMatrix.getCPtr(pOther)), true) { if (fbx_wrapperPINVOKE.SWIGPendingException.Pending) { throw fbx_wrapperPINVOKE.SWIGPendingException.Retrieve(); } }
public void LT2DoF(FbxVector4 pDoF, FbxVector4 pLT, FbxAMatrix pLRM, FbxAMatrix pLSM) { fbx_wrapperPINVOKE.FbxTransform_LT2DoF(swigCPtr, FbxVector4.getCPtr(pDoF), FbxVector4.getCPtr(pLT), FbxAMatrix.getCPtr(pLRM), FbxAMatrix.getCPtr(pLSM)); if (fbx_wrapperPINVOKE.SWIGPendingException.Pending) { throw fbx_wrapperPINVOKE.SWIGPendingException.Retrieve(); } }
public void GTRSM2GX(FbxAMatrix pGX, FbxVector4 pGT, FbxAMatrix pGRM, FbxAMatrix pGSM) { FbxWrapperNativePINVOKE.FbxTransform_GTRSM2GX(swigCPtr, FbxAMatrix.getCPtr(pGX), FbxVector4.getCPtr(pGT), FbxAMatrix.getCPtr(pGRM), FbxAMatrix.getCPtr(pGSM)); if (FbxWrapperNativePINVOKE.SWIGPendingException.Pending) { throw FbxWrapperNativePINVOKE.SWIGPendingException.Retrieve(); } }
public void LSM2GSM(FbxAMatrix pGSM, FbxAMatrix pPGSM, FbxAMatrix pLSM, FbxAMatrix pLRM, FbxVector4 pPLS) { FbxWrapperNativePINVOKE.FbxTransform_LSM2GSM(swigCPtr, FbxAMatrix.getCPtr(pGSM), FbxAMatrix.getCPtr(pPGSM), FbxAMatrix.getCPtr(pLSM), FbxAMatrix.getCPtr(pLRM), FbxVector4.getCPtr(pPLS)); if (FbxWrapperNativePINVOKE.SWIGPendingException.Pending) { throw FbxWrapperNativePINVOKE.SWIGPendingException.Retrieve(); } }
public void LRM2DoF(FbxVector4 pRDoF, FbxAMatrix pLRM) { FbxWrapperNativePINVOKE.FbxTransform_LRM2DoF__SWIG_1(swigCPtr, FbxVector4.getCPtr(pRDoF), FbxAMatrix.getCPtr(pLRM)); if (FbxWrapperNativePINVOKE.SWIGPendingException.Pending) { throw FbxWrapperNativePINVOKE.SWIGPendingException.Retrieve(); } }
public void DoF2LRM(FbxAMatrix pLRM, FbxVector4 pRDoF, bool pForLimit) { FbxWrapperNativePINVOKE.FbxTransform_DoF2LRM__SWIG_0(swigCPtr, FbxAMatrix.getCPtr(pLRM), FbxVector4.getCPtr(pRDoF), pForLimit); if (FbxWrapperNativePINVOKE.SWIGPendingException.Pending) { throw FbxWrapperNativePINVOKE.SWIGPendingException.Retrieve(); } }
public void DoF2LT(FbxVector4 pLT, FbxVector4 pDoF, FbxAMatrix pLRM, FbxAMatrix pLSM) { FbxWrapperNativePINVOKE.FbxTransform_DoF2LT(swigCPtr, FbxVector4.getCPtr(pLT), FbxVector4.getCPtr(pDoF), FbxAMatrix.getCPtr(pLRM), FbxAMatrix.getCPtr(pLSM)); if (FbxWrapperNativePINVOKE.SWIGPendingException.Pending) { throw FbxWrapperNativePINVOKE.SWIGPendingException.Retrieve(); } }
public void M2V(FbxVector4 pV, FbxAMatrix pRM) { fbx_wrapperPINVOKE.FbxRotationOrder_M2V(swigCPtr, FbxVector4.getCPtr(pV), FbxAMatrix.getCPtr(pRM)); if (fbx_wrapperPINVOKE.SWIGPendingException.Pending) { throw fbx_wrapperPINVOKE.SWIGPendingException.Retrieve(); } }
public void SetTransformAssociateModelMatrix(FbxAMatrix pMatrix) { fbx_wrapperPINVOKE.FbxCluster_SetTransformAssociateModelMatrix(swigCPtr, FbxAMatrix.getCPtr(pMatrix)); if (fbx_wrapperPINVOKE.SWIGPendingException.Pending) { throw fbx_wrapperPINVOKE.SWIGPendingException.Retrieve(); } }
public void GetMatrix(FbxAMatrix pMatrix) { FbxWrapperNativePINVOKE.FbxAxisSystem_GetMatrix(swigCPtr, FbxAMatrix.getCPtr(pMatrix)); if (FbxWrapperNativePINVOKE.SWIGPendingException.Pending) { throw FbxWrapperNativePINVOKE.SWIGPendingException.Retrieve(); } }
public void V2M(FbxAMatrix pRM, FbxVector4 pV) { FbxWrapperNativePINVOKE.FbxRotationOrder_V2M(swigCPtr, FbxAMatrix.getCPtr(pRM), FbxVector4.getCPtr(pV)); if (FbxWrapperNativePINVOKE.SWIGPendingException.Pending) { throw FbxWrapperNativePINVOKE.SWIGPendingException.Retrieve(); } }
public void LRM2DoF(FbxVector4 pRDoF, FbxAMatrix pLRM, bool pForLimit) { fbx_wrapperPINVOKE.FbxTransform_LRM2DoF__SWIG_0(swigCPtr, FbxVector4.getCPtr(pRDoF), FbxAMatrix.getCPtr(pLRM), pForLimit); if (fbx_wrapperPINVOKE.SWIGPendingException.Pending) { throw fbx_wrapperPINVOKE.SWIGPendingException.Retrieve(); } }
public void DoF2LRM(FbxAMatrix pLRM, FbxVector4 pRDoF) { fbx_wrapperPINVOKE.FbxTransform_DoF2LRM__SWIG_1(swigCPtr, FbxAMatrix.getCPtr(pLRM), FbxVector4.getCPtr(pRDoF)); if (fbx_wrapperPINVOKE.SWIGPendingException.Pending) { throw fbx_wrapperPINVOKE.SWIGPendingException.Retrieve(); } }
public bool Equals(FbxAMatrix other) { if (object.ReferenceEquals(other, null)) { return(false); } return(_equals(other)); }
public void SetTransformParentMatrix(FbxAMatrix pMatrix) { FbxWrapperNativePINVOKE.FbxCluster_SetTransformParentMatrix(swigCPtr, FbxAMatrix.getCPtr(pMatrix)); if (FbxWrapperNativePINVOKE.SWIGPendingException.Pending) { throw FbxWrapperNativePINVOKE.SWIGPendingException.Retrieve(); } }
public void SetTransformLinkMatrix(FbxAMatrix pMatrix) { NativeMethods.FbxCluster_SetTransformLinkMatrix(swigCPtr, FbxAMatrix.getCPtr(pMatrix)); if (NativeMethods.SWIGPendingException.Pending) { throw NativeMethods.SWIGPendingException.Retrieve(); } }
public void SetTRS(FbxVector4 pT, FbxAMatrix pRM, FbxVector4 pS) { fbx_wrapperPINVOKE.FbxAMatrix_SetTRS__SWIG_1(swigCPtr, FbxVector4.getCPtr(pT), FbxAMatrix.getCPtr(pRM), FbxVector4.getCPtr(pS)); if (fbx_wrapperPINVOKE.SWIGPendingException.Pending) { throw fbx_wrapperPINVOKE.SWIGPendingException.Retrieve(); } }
public void SetPivot(FbxAMatrix pXMatrix) { fbx_wrapperPINVOKE.FbxGeometry_SetPivot(swigCPtr, FbxAMatrix.getCPtr(pXMatrix)); if (fbx_wrapperPINVOKE.SWIGPendingException.Pending) { throw fbx_wrapperPINVOKE.SWIGPendingException.Retrieve(); } }
protected void LinkMeshToSkeleton(FbxScene scene, FbxNode meshNode, FbxNode skelRootNode) { FbxNode limb1 = skelRootNode.GetChild(0); FbxNode limb2 = limb1.GetChild(0); FbxCluster rootCluster = FbxCluster.Create(scene, "RootCluster"); rootCluster.SetLink(skelRootNode); rootCluster.SetLinkMode(FbxCluster.ELinkMode.eTotalOne); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { rootCluster.AddControlPointIndex(4 * i + j, 1.0 - 0.25 * i); } } FbxCluster limb1Cluster = FbxCluster.Create(scene, "Limb1Cluster"); limb1Cluster.SetLink(limb1); limb1Cluster.SetLinkMode(FbxCluster.ELinkMode.eTotalOne); for (int i = 1; i < 6; i++) { for (int j = 0; j < 4; j++) { limb1Cluster.AddControlPointIndex(4 * i + j, (i == 1 || i == 5 ? 0.25 : 0.5)); } } FbxCluster limb2Cluster = FbxCluster.Create(scene, "Limb2Cluster"); limb2Cluster.SetLink(limb2); limb2Cluster.SetLinkMode(FbxCluster.ELinkMode.eTotalOne); for (int i = 3; i < 7; i++) { for (int j = 0; j < 4; j++) { limb2Cluster.AddControlPointIndex(4 * i + j, 0.25 * (i - 2)); } } FbxAMatrix globalTransform = meshNode.EvaluateGlobalTransform(); rootCluster.SetTransformMatrix(globalTransform); limb1Cluster.SetTransformMatrix(globalTransform); limb2Cluster.SetTransformMatrix(globalTransform); rootCluster.SetTransformLinkMatrix(skelRootNode.EvaluateGlobalTransform()); limb1Cluster.SetTransformLinkMatrix(limb1.EvaluateGlobalTransform()); limb2Cluster.SetTransformLinkMatrix(limb2.EvaluateGlobalTransform()); FbxSkin skin = FbxSkin.Create(scene, "Skin"); skin.AddCluster(rootCluster); skin.AddCluster(limb1Cluster); skin.AddCluster(limb2Cluster); meshNode.GetMesh().AddDeformer(skin); }
public int Compare(FbxAMatrix pM) { int ret = fbx_wrapperPINVOKE.FbxAMatrix_Compare__SWIG_1(swigCPtr, FbxAMatrix.getCPtr(pM)); if (fbx_wrapperPINVOKE.SWIGPendingException.Pending) { throw fbx_wrapperPINVOKE.SWIGPendingException.Retrieve(); } return(ret); }
public bool ne(FbxAMatrix pOther) { bool ret = fbx_wrapperPINVOKE.FbxAMatrix_ne(swigCPtr, FbxAMatrix.getCPtr(pOther)); if (fbx_wrapperPINVOKE.SWIGPendingException.Pending) { throw fbx_wrapperPINVOKE.SWIGPendingException.Retrieve(); } return(ret); }
public FbxAMatrix Slerp(FbxAMatrix pOther, double pWeight) { FbxAMatrix ret = new FbxAMatrix(fbx_wrapperPINVOKE.FbxAMatrix_Slerp(swigCPtr, FbxAMatrix.getCPtr(pOther), pWeight), true); if (fbx_wrapperPINVOKE.SWIGPendingException.Pending) { throw fbx_wrapperPINVOKE.SWIGPendingException.Retrieve(); } return(ret); }
public FbxAMatrix mul_assign(FbxAMatrix pOther) { FbxAMatrix ret = new FbxAMatrix(fbx_wrapperPINVOKE.FbxAMatrix_mul_assign__SWIG_1(swigCPtr, FbxAMatrix.getCPtr(pOther)), false); if (fbx_wrapperPINVOKE.SWIGPendingException.Pending) { throw fbx_wrapperPINVOKE.SWIGPendingException.Retrieve(); } return(ret); }
public bool ComputeSkinDeformation(FbxVector4 pVertexArray, FbxTime pTime, FbxAMatrix pGX) { bool ret = fbx_wrapperPINVOKE.FbxDeformationsEvaluator_ComputeSkinDeformation__SWIG_1(swigCPtr, FbxVector4.getCPtr(pVertexArray), FbxTime.getCPtr(pTime), FbxAMatrix.getCPtr(pGX)); if (fbx_wrapperPINVOKE.SWIGPendingException.Pending) { throw fbx_wrapperPINVOKE.SWIGPendingException.Retrieve(); } return(ret); }
public FbxAMatrix EvaluateLocalTransform() { FbxAMatrix ret = new FbxAMatrix(NativeMethods.FbxNode_EvaluateLocalTransform__SWIG_4(swigCPtr), false); if (NativeMethods.SWIGPendingException.Pending) { throw NativeMethods.SWIGPendingException.Retrieve(); } return(ret); }
public FbxAMatrix EvaluateLocalTransform(FbxTime pTime, FbxNode.EPivotSet pPivotSet) { FbxAMatrix ret = new FbxAMatrix(NativeMethods.FbxNode_EvaluateLocalTransform__SWIG_2(swigCPtr, FbxTime.getCPtr(pTime), (int)pPivotSet), false); if (NativeMethods.SWIGPendingException.Pending) { throw NativeMethods.SWIGPendingException.Retrieve(); } return(ret); }
public FbxAMatrix EvaluateGlobalTransform(FbxTime pTime) { FbxAMatrix ret = new FbxAMatrix(NativeMethods.FbxNode_EvaluateGlobalTransform__SWIG_3(swigCPtr, FbxTime.getCPtr(pTime)), false); if (NativeMethods.SWIGPendingException.Pending) { throw NativeMethods.SWIGPendingException.Retrieve(); } return(ret); }