コード例 #1
0
        public FbxMatrix GetNodeLocalTransform(FbxNode pNode, FbxTime pTime, FbxNode.EPivotSet pPivotSet = FbxNode.EPivotSet.eSourcePivot, bool pApplyTarget = false, bool pForceEval = false)
        {
            var translation = GetNodeLocalTranslation(pNode, pTime, pPivotSet, pApplyTarget, pForceEval);
            var rotation    = GetNodeLocalRotation(pNode, pTime, pPivotSet, pApplyTarget, pForceEval);
            var scaling     = GetNodeLocalScaling(pNode, pTime, pPivotSet, pApplyTarget, pForceEval);
            var m           = new FbxMatrix(translation, rotation, scaling);

            return(m);
        }
コード例 #2
0
 //Add a child node and its underlying node tree.
 public bool AddChild(FbxNode pNode)
 {
     if (pNode == null)
     {
         return(false);
     }
     this.ConnectSrcObject(pNode);
     return(true);
 }
コード例 #3
0
 void DisconnectScene(FbxNode child)
 {
     if (child.Scene != null)
     {
         child.DisconnectDstObject(child.Scene);
     }
     foreach (var subchild in child.ChildNodes)
     {
         DisconnectScene(subchild);
     }
 }
コード例 #4
0
        public FbxMatrix GetNodeGlobalTransform(FbxNode pNode, FbxTime pTime, FbxNode.EPivotSet pPivotSet = FbxNode.EPivotSet.eSourcePivot, bool pApplyTarget = false, bool pForceEval = false)
        {
            var m = GetNodeLocalTransform(pNode, pTime, pPivotSet, pApplyTarget, pForceEval);

            if (pNode.GetParent() != null)
            {
                var p = GetNodeGlobalTransform(pNode.GetParent(), pTime, pPivotSet, pApplyTarget, pForceEval);
                m = p * m;
            }
            return(m);
        }
コード例 #5
0
ファイル: ObjectPrinter.cs プロジェクト: shaunejan/FbxSharp
        protected void _PrintFbxNodeAttribute(FbxNodeAttribute obj, TextWriter writer)
        {
            writer.WriteLine("    AttributeType = {0}", obj.GetAttributeType());
            int i;

            writer.WriteLine("    NodeCount = {0}", obj.GetNodeCount());
            for (i = 0; i < obj.GetNodeCount(); i++)
            {
                FbxNode node = obj.GetNode(i);
                writer.WriteLine("        #{0} {1}", i, PrintObjectID(node));
            }
        }
コード例 #6
0
ファイル: FbxScene.cs プロジェクト: shoff/FbxSharp
        public FbxScene(string name = "")
            : base(name)
        {
            RootNode = new FbxNode();

            Poses     = SrcObjects.CreateCollectionView <FbxPose>();
            Materials = SrcObjects.CreateCollectionView <FbxSurfaceMaterial>();
            Textures  = SrcObjects.CreateCollectionView <FbxTexture>();
            Nodes     = SrcObjects.CreateCollectionView <FbxNode>();

            SrcObjects.Add(new FbxGlobalSettings());
            SetAnimationEvaluator(new FbxAnimEvaluator());
        }
コード例 #7
0
ファイル: FbxScene.cs プロジェクト: shoff/FbxSharp
        public bool AddNode(FbxNode pNode)
        {
            if (!Nodes.Contains(pNode))
            {
                ConnectSrcObject(pNode);
                foreach (var child in pNode.ChildNodes)
                {
                    AddNode(child);
                }
                return(true);
            }

            return(false);
        }
コード例 #8
0
ファイル: FbxScene.cs プロジェクト: shoff/FbxSharp
        public bool RemoveNode(FbxNode pNode)
        {
            if (Nodes.Contains(pNode))
            {
                DisconnectSrcObject(pNode);
                foreach (var child in pNode.ChildNodes)
                {
                    RemoveNode(child);
                }
                return(true);
            }

            return(false);
        }
コード例 #9
0
ファイル: FbxCluster.cs プロジェクト: shoff/FbxSharp
        public void SetLink(FbxNode pNode)
        {
            if (GetLink() == pNode)
            {
                return;
            }

            if (GetLink() != null)
            {
                DisconnectSrcObject(GetLink());
            }

            ConnectSrcObject(pNode);
        }
コード例 #10
0
ファイル: FbxPose.cs プロジェクト: shoff/FbxSharp
        public int Add(FbxNode pNode, FbxMatrix pMatrix, bool pLocalMatrix = false /*, bool pMultipleBindPose=true*/)
        {
            var match = poseInfos.FindIndex(pi => pi.Node == pNode);

            if (match >= 0)
            {
                if (poseInfos[match].Matrix != pMatrix)
                {
                    return(-1);
                }
                return(match);
            }

            var p = new FbxPoseInfo(pNode, pMatrix, pLocalMatrix);

            poseInfos.Add(p);

            return(poseInfos.IndexOf(p));
        }
コード例 #11
0
ファイル: Visitor.cs プロジェクト: shoff/FbxSharp
        protected void AcceptNode(FbxNode node, ISet <object> visitedObjects)
        {
            AcceptFbxObject(node, visitedObjects);
            Visit(node);

            if (node.GetParent() != null)
            {
                Accept(node.GetParent(), visitedObjects);
            }

            int i;

            for (i = 0; i < node.GetChildCount(); i++)
            {
                Accept(node.GetChild(i), visitedObjects);
            }

            //if (node.GetTarget() != null)
            //{
            //    Accept(node.GetTarget());
            //}
            //if (node.GetTargetUp() != null)
            //{
            //    Accept(node.GetTargetUp());
            //}

            for (i = 0; i < node.GetNodeAttributeCount(); i++)
            {
                Accept(node.GetNodeAttributeByIndex(i), visitedObjects);
            }

            for (i = 0; i < node.GetMaterialCount(); i++)
            {
                Accept(node.GetMaterial(i), visitedObjects);
            }
        }
コード例 #12
0
ファイル: Visitor.cs プロジェクト: shoff/FbxSharp
 public virtual void Visit(FbxNode node)
 {
 }
コード例 #13
0
ファイル: FbxCluster.cs プロジェクト: shoff/FbxSharp
 public void SetAssociateModel(FbxNode pNode)
 {
     throw new NotImplementedException();
 }
コード例 #14
0
 public FbxVector4 GetNodeLocalRotation(FbxNode pNode)
 {
     return(GetNodeLocalRotation(pNode, FbxTime.Infinite));
 }
コード例 #15
0
 public FbxVector4 GetNodeLocalScaling(FbxNode pNode)
 {
     return(GetNodeLocalScaling(pNode, FbxTime.Infinite));
 }
コード例 #16
0
 public FbxVector4 GetNodeLocalScaling(FbxNode pNode, FbxTime pTime, FbxNode.EPivotSet pPivotSet = FbxNode.EPivotSet.eSourcePivot, bool pApplyTarget = false, bool pForceEval = false)
 {
     return(GetPropertyValue <FbxVector4>(pNode.LclScaling, pTime, pForceEval));
 }
コード例 #17
0
 public FbxMatrix GetNodeGlobalTransform(FbxNode pNode)
 {
     return(GetNodeGlobalTransform(pNode, FbxTime.Infinite));
 }
コード例 #18
0
 public FbxPoseInfo(FbxNode node, FbxMatrix matrix, bool matrixIsLocal = false)
 {
     Node          = node;
     Matrix        = matrix;
     MatrixIsLocal = matrixIsLocal;
 }
コード例 #19
0
        protected void AcceptFbxNode(FbxNode obj, ISet <object> visitedObjects = null)
        {
            Visit(obj);

            _AcceptFbxNode(obj, visitedObjects);
        }
コード例 #20
0
 public virtual void Visit(FbxNode obj)
 {
 }
コード例 #21
0
 public void ComputeLocalTRSFromGlobal(out FbxVector4 pRetLT, out FbxVector4 pRetLR, out FbxVector4 pRetLS, FbxNode pNode, FbxMatrix pGX, FbxTime pTime, FbxNode.EPivotSet pPivotSet = FbxNode.EPivotSet.eSourcePivot, bool pApplyTarget = false, bool pForceEval = false)
 {
     throw new NotImplementedException();
 }
コード例 #22
0
 public void Flush(FbxNode pNode)
 {
     throw new NotImplementedException();
 }
コード例 #23
0
 protected void PrintFbxNode(FbxNode obj, TextWriter writer)
 {
     _PrintFbxNode(obj, writer);
 }
コード例 #24
0
 public void ComputeLocalTRSFromGlobal(out FbxVector4 pRetLT, out FbxVector4 pRetLR, out FbxVector4 pRetLS, FbxNode pNode, FbxMatrix pGX)
 {
     ComputeLocalTRSFromGlobal(out pRetLT, out pRetLR, out pRetLS, pNode, pGX, FbxTime.Infinite);
 }