예제 #1
0
        public static FbxNodeAttribute GetFromNode(IntPtr ptr)
        {
            var attribute = FbxNodeGetAttribute(ptr);

            if (attribute == IntPtr.Zero)
            {
                return(Empty);
            }
            switch (FbxNodeGetAttributeType(ptr))
            {
            case FbxNodeType.Mesh:
                var meshAttribute = new FbxMeshAttribute(attribute);
                var count         = FbxNodeGetAttributeCount(ptr);
                for (var i = 1; i < count; i++)
                {
                    meshAttribute = FbxMeshAttribute.Combine(meshAttribute, new FbxMeshAttribute(FbxNodeGetAttribute(ptr, i)));
                }
                return(meshAttribute);

            case FbxNodeType.Camera:
                return(new FbxCameraAttribute(attribute));

            default:
                return(Empty);
            }
        }
예제 #2
0
        public static FbxMeshAttribute Combine(FbxMeshAttribute meshAttribute1, FbxMeshAttribute meshAttribute2)
        {
            var sm = new List <FbxSubmesh>();

            sm.AddRange(meshAttribute1.Submeshes);
            sm.AddRange(meshAttribute2.Submeshes);
            return(new FbxMeshAttribute {
                Submeshes = sm
            });
        }
예제 #3
0
        public static FbxMeshAttribute Combine(FbxMeshAttribute meshAttribute1, FbxMeshAttribute meshAttribute2)
        {
            var sm = new List <FbxSubmesh>();

            sm.AddRange(meshAttribute1.Submeshes);
            sm.AddRange(meshAttribute2.Submeshes);
            var skinningMode = meshAttribute1.SkinningMode == meshAttribute2.SkinningMode ?
                               meshAttribute1.SkinningMode : SkinningMode.DualQuaternion;

            return(new FbxMeshAttribute {
                SkinningMode = skinningMode,
                Submeshes = sm
            });
        }