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); } }
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 }); }
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 }); }