Esempio n. 1
0
 public FbxAMatrix(FbxAMatrix pOther) : this(NativeMethods.new_FbxAMatrix__SWIG_1(FbxAMatrix.getCPtr(pOther)), true)
 {
     if (NativeMethods.SWIGPendingException.Pending)
     {
         throw NativeMethods.SWIGPendingException.Retrieve();
     }
 }
Esempio n. 2
0
 public FbxMatrix(FbxAMatrix pM) : this(FbxWrapperNativePINVOKE.new_FbxMatrix__SWIG_2(FbxAMatrix.getCPtr(pM)), true)
 {
     if (FbxWrapperNativePINVOKE.SWIGPendingException.Pending)
     {
         throw FbxWrapperNativePINVOKE.SWIGPendingException.Retrieve();
     }
 }
Esempio n. 3
0
        //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));
        }
Esempio n. 4
0
 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();
     }
 }
Esempio n. 5
0
 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();
     }
 }
Esempio n. 6
0
 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();
     }
 }
Esempio n. 7
0
 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();
     }
 }
Esempio n. 8
0
 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();
     }
 }
Esempio n. 9
0
 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();
     }
 }
Esempio n. 10
0
 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();
     }
 }
Esempio n. 11
0
 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();
     }
 }
Esempio n. 12
0
 public void SetTransformAssociateModelMatrix(FbxAMatrix pMatrix)
 {
     fbx_wrapperPINVOKE.FbxCluster_SetTransformAssociateModelMatrix(swigCPtr, FbxAMatrix.getCPtr(pMatrix));
     if (fbx_wrapperPINVOKE.SWIGPendingException.Pending)
     {
         throw fbx_wrapperPINVOKE.SWIGPendingException.Retrieve();
     }
 }
Esempio n. 13
0
 public void GetMatrix(FbxAMatrix pMatrix)
 {
     FbxWrapperNativePINVOKE.FbxAxisSystem_GetMatrix(swigCPtr, FbxAMatrix.getCPtr(pMatrix));
     if (FbxWrapperNativePINVOKE.SWIGPendingException.Pending)
     {
         throw FbxWrapperNativePINVOKE.SWIGPendingException.Retrieve();
     }
 }
Esempio n. 14
0
 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();
     }
 }
Esempio n. 15
0
 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();
     }
 }
Esempio n. 16
0
 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();
     }
 }
Esempio n. 17
0
 public bool Equals(FbxAMatrix other)
 {
     if (object.ReferenceEquals(other, null))
     {
         return(false);
     }
     return(_equals(other));
 }
Esempio n. 18
0
 public void SetTransformParentMatrix(FbxAMatrix pMatrix)
 {
     FbxWrapperNativePINVOKE.FbxCluster_SetTransformParentMatrix(swigCPtr, FbxAMatrix.getCPtr(pMatrix));
     if (FbxWrapperNativePINVOKE.SWIGPendingException.Pending)
     {
         throw FbxWrapperNativePINVOKE.SWIGPendingException.Retrieve();
     }
 }
Esempio n. 19
0
 public void SetTransformLinkMatrix(FbxAMatrix pMatrix)
 {
     NativeMethods.FbxCluster_SetTransformLinkMatrix(swigCPtr, FbxAMatrix.getCPtr(pMatrix));
     if (NativeMethods.SWIGPendingException.Pending)
     {
         throw NativeMethods.SWIGPendingException.Retrieve();
     }
 }
Esempio n. 20
0
 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();
     }
 }
Esempio n. 21
0
 public void SetPivot(FbxAMatrix pXMatrix)
 {
     fbx_wrapperPINVOKE.FbxGeometry_SetPivot(swigCPtr, FbxAMatrix.getCPtr(pXMatrix));
     if (fbx_wrapperPINVOKE.SWIGPendingException.Pending)
     {
         throw fbx_wrapperPINVOKE.SWIGPendingException.Retrieve();
     }
 }
Esempio n. 22
0
        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);
        }
Esempio n. 23
0
        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);
        }
Esempio n. 24
0
        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);
        }
Esempio n. 25
0
        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);
        }
Esempio n. 26
0
        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);
        }
Esempio n. 27
0
        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);
        }
Esempio n. 28
0
        public FbxAMatrix EvaluateLocalTransform()
        {
            FbxAMatrix ret = new FbxAMatrix(NativeMethods.FbxNode_EvaluateLocalTransform__SWIG_4(swigCPtr), false);

            if (NativeMethods.SWIGPendingException.Pending)
            {
                throw NativeMethods.SWIGPendingException.Retrieve();
            }
            return(ret);
        }
Esempio n. 29
0
        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);
        }
Esempio n. 30
0
        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);
        }