public void OverwriteConvexWithCooked(string cookedName, string output) { if (colType == CollisionTypes.Convex) { FBXHelper.CookConvexCollision("uncooked.bin", "cooked.bin"); byte[] data = File.ReadAllBytes(cookedName); using (BinaryWriter writer = new BinaryWriter(File.Open(output, FileMode.Create))) { writer.Write(frameRef); writer.Write(unk_byte); writer.Write((byte)colType); writer.Write(idHash); writer.Write(colMaterial); Matrix.WriteToFile(writer); writer.Write(unkByte); writer.Write((ushort)data.Length); writer.Write(data); } if (File.Exists("cooked.bin")) { File.Delete("cooked.bin"); } if (File.Exists("uncooked.bin")) { File.Delete("uncooked.bin"); } Log.WriteLine("Recooked ItemDesc", LoggingTypes.MESSAGE, LogCategoryTypes.APPLICATION); } }
public bool ExportSkinnedMeshToFBX(SkeletonAsset skeleton, MeshAsset mesh, int lodIndex, String targetdir, bool asOne) { FBXManager lSdkManager = new FBXManager(); FBXScene lScene = new FBXScene(); FBXHelper.InitializeSdkObjects(lSdkManager, lScene); FBXNode SceneRoot = lScene.GetRootNode(); FBXNode lSkeletonRoot = CreateFbxSkeleton(skeleton, lScene); SceneRoot.AddChild(lSkeletonRoot); if (asOne) { FBXNode fbxMesh = CreateFbxMesh(mesh.lods[lodIndex], lScene); CreateMeshSkinning(skeleton, mesh.lods[lodIndex], fbxMesh, lSkeletonRoot, lScene); SceneRoot.AddChild(fbxMesh); StoreRestPose(lScene, lSkeletonRoot, skeleton); } else { for (int i = 0; i < mesh.lods[lodIndex].sections.Count; i++) { FBXNode CurrentSectionMesh = CreateFbxMesh(mesh.lods[lodIndex].sections[i], lScene); CreateMeshSkinning(skeleton, mesh.lods[lodIndex].sections[i], CurrentSectionMesh, lSkeletonRoot, lScene); SceneRoot.AddChild(CurrentSectionMesh); StoreBindPose(lScene, CurrentSectionMesh); } } return(SaveScene(targetdir, lSdkManager, lScene)); }
public void ExportSkeletalMeshToFbx(MESkeletalMesh mesh, string meshName, string targetdir) { FBXManager lSdkManager = new FBXManager(); FBXScene lScene = new FBXScene(); FBXHelper.InitializeSdkObjects(lSdkManager, lScene); FBXNode SceneRoot = lScene.GetRootNode(); FBXNode lSkeletonRoot = CreateFbxSkeleton(mesh.Bones, lScene); SceneRoot.AddChild(lSkeletonRoot); try { FBXNode fbxMesh = CreateFbxMesh(mesh, meshName, lScene); CreateMeshSkinning(mesh, 0, fbxMesh, lSkeletonRoot, lScene); SceneRoot.AddChild(fbxMesh); //StoreRestPose(lScene, lSkeletonRoot, skeleton); } catch (Exception e) { Console.WriteLine(e.Message); } bool lResult = FBXHelper.SaveScene(lSdkManager, lScene, targetdir); FBXHelper.DestroySdkObjects(lSdkManager, lResult); }
public TriangleMesh Build(IList <Vector3> vertexList, IList <Triangle> triangleList, IList <ushort> materialsList) { Init(vertexList, triangleList, materialsList); using (BinaryWriter writer = new BinaryWriter(File.Open("mesh.bin", FileMode.Create))) { Save(writer); } FBXHelper.CookTriangleCollision("mesh.bin", "cook.bin"); TriangleMesh cookedTriangleMesh = new TriangleMesh(); using (BinaryReader reader = new BinaryReader(File.Open("cook.bin", FileMode.Open))) { cookedTriangleMesh.Load(reader); } if (File.Exists("mesh.bin")) { File.Delete("mesh.bin"); } if (File.Exists("cook.bin")) { File.Delete("cook.bin"); } cookedTriangleMesh.Force32BitIndices(); return(cookedTriangleMesh); }
private bool SaveScene(String targetdir, FBXManager pSdkManager, FBXScene pScene) { bool lResult = FBXHelper.SaveScene(pSdkManager, pScene, targetdir); FBXHelper.DestroySdkObjects(pSdkManager, lResult); return(lResult); }
private void ConvertButton_Click(object sender, EventArgs e) { if (ImportBox.Text.Contains(".m2t")) { FBXHelper.ConvertM2T(ImportBox.Text, ExportBox.Text); } else if (ImportBox.Text.Contains(".fbx")) { FBXHelper.ConvertFBX(ImportBox.Text, ExportBox.Text); } }
public bool ReadFromFbx(string file) { string m2tFile = file.Remove(file.Length - 4, 4) + ".m2t"; int result = FBXHelper.ConvertFBX(file, m2tFile); using (BinaryReader reader = new BinaryReader(File.Open(m2tFile, FileMode.Open))) { ReadFromM2T(reader); } if (File.Exists(m2tFile)) { File.Delete(m2tFile); } return(true); }
private void ConvertButton_Click(object sender, EventArgs e) { if (File.Exists(ImportBox.Text)) { if (ImportBox.Text.Contains(".m2t")) { FBXHelper.ConvertM2T(ImportBox.Text, ExportBox.Text); } else if (ImportBox.Text.Contains(".fbx")) { FBXHelper.ConvertFBX(ImportBox.Text, ExportBox.Text); } } else { MessageBox.Show("Import file does not exist!", "Toolkit", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void SetBoneTransform(SkeletonAsset Skeleton, FBXNode pSkeletonRoot) { Dictionary <String, FBBone> pose = Skeleton.ModelBones; foreach (string key in pose.Keys) { FBBone bonePose = pose[key]; FBXNode fbxBone = pSkeletonRoot.FindChild(key); FBXVector4 ForwardM = new FBXVector4(bonePose.Forward.members[0], bonePose.Forward.members[1], bonePose.Forward.members[2], 0); FBXVector4 RightM = new FBXVector4(bonePose.Right.members[0], bonePose.Right.members[1], bonePose.Right.members[2], 0); FBXVector4 UpM = new FBXVector4(bonePose.Up.members[0], bonePose.Up.members[1], bonePose.Up.members[2], 0); FBXVector4 TransM = new FBXVector4(bonePose.Location.members[0] * exportScale, bonePose.Location.members[1] * exportScale, bonePose.Location.members[2] * exportScale, 1); FBXAMatrix transfoMatrix = new FBXAMatrix(); transfoMatrix.SetRow(0, RightM); transfoMatrix.SetRow(1, UpM); transfoMatrix.SetRow(2, ForwardM); transfoMatrix.SetRow(3, TransM); FBXHelper.SetGlobalDefaultPosition(fbxBone, transfoMatrix); } }
public bool ExportMeshWithMorph(SkeletonAsset Skeleton, MeshAsset mesh, int lodIndex, List <Vector> morphVertex, List <Vector> morphBones, String targetdir) { FBXManager lSdkManager = new FBXManager(); FBXScene lScene = new FBXScene(); FBXHelper.InitializeSdkObjects(lSdkManager, lScene); FBXNode SceneRoot = lScene.GetRootNode(); FBXNode fbxMesh = CreateFbxMesh(mesh.lods[lodIndex], lScene); AddMorphToMesh(lScene, fbxMesh, morphVertex); SceneRoot.AddChild(fbxMesh); if (Skeleton != null) { FBXNode lSkeletonRoot = CreateFbxSkeleton(Skeleton, lScene); CreateMeshSkinning(Skeleton, mesh.lods[lodIndex], fbxMesh, lSkeletonRoot, lScene); UpdateSkeletonWithMorph(Skeleton, lSkeletonRoot, morphBones); SceneRoot.AddChild(lSkeletonRoot); StoreBindPose(lScene, fbxMesh); } return(SaveScene(targetdir, lSdkManager, lScene)); }
public bool ReadFromFbx(string file) { string args = "-ConvertToM2T "; string m2tFile = file.Remove(file.Length - 4, 4) + ".m2t"; args += ("\"" + file + "\" "); args += ("\"" + m2tFile + "\" "); if (FBXHelper.ConvertFBX(file, m2tFile) == 0) { using (BinaryReader reader = new BinaryReader(File.Open(m2tFile, FileMode.Open))) ReadFromM2T(reader); if (File.Exists(m2tFile)) { File.Delete(m2tFile); } return(true); } return(false); }
public void ExportMeshWithMorph(Unreal.BioMorphFace morph, int lodIndex, String targetdir) { FBXManager lSdkManager = new FBXManager(); FBXScene lScene = new FBXScene(); FBXHelper.InitializeSdkObjects(lSdkManager, lScene); FBXNode SceneRoot = lScene.GetRootNode(); MESkeletalMesh mesh = morph.Apply(); FBXNode fbxMesh = CreateFbxMesh(mesh, morph.Name, lScene); SceneRoot.AddChild(fbxMesh); if (mesh.Bones != null) { FBXNode lSkeletonRoot = CreateFbxSkeleton(mesh.Bones, lScene); CreateMeshSkinning(mesh, lodIndex, fbxMesh, lSkeletonRoot, lScene); UpdateSkeletonWithMorph(morph, lSkeletonRoot); SceneRoot.AddChild(lSkeletonRoot); //StoreBindPose(lScene, fbxMesh); } bool lResult = FBXHelper.SaveScene(lSdkManager, lScene, targetdir); FBXHelper.DestroySdkObjects(lSdkManager, lResult); }
public bool ExportStaticMeshToFBX(MeshAsset mesh, int lodIndex, String targetdir, bool asOne) { FBXManager lSdkManager = new FBXManager(); FBXScene lScene = new FBXScene(); FBXHelper.InitializeSdkObjects(lSdkManager, lScene); FBXNode SceneRoot = lScene.GetRootNode(); if (asOne) { FBXNode fbxMesh = CreateFbxMesh(mesh.lods[lodIndex], lScene); SceneRoot.AddChild(fbxMesh); } else { for (int i = 0; i < mesh.lods[lodIndex].sections.Count; i++) { FBXNode CurrentSectionMesh = CreateFbxMesh(mesh.lods[lodIndex].sections[i], lScene); SceneRoot.AddChild(CurrentSectionMesh); } } return(SaveScene(targetdir, lSdkManager, lScene)); }
public void WriteToFile(BinaryWriter writer) { writer.Write(version); writer.Write(unk0); writer.Write(placementData.Count); for (int i = 0; i != placementData.Count; i++) { placementData[i].WriteToFile(writer); } writer.Write(nxsData.Count); for (int i = 0; i != nxsData.Count; i++) { NXSStruct data = nxsData.ElementAt(i).Value; using (BinaryWriter meshWriter = new BinaryWriter(File.Open("mesh.bin", FileMode.Create))) data.Data.WriteToFile(meshWriter); string args = "-CookCollisions "; args += ("\"" + "mesh" + ".bin\" "); args += ("\"" + "cook" + ".bin\""); FBXHelper.CookTriangleCollision("mesh.bin", "cook.bin"); using (BinaryReader meshReader = new BinaryReader(File.Open("cook.bin", FileMode.Open))) nxsData.ElementAt(i).Value.Data.ReadFromFile(meshReader); nxsData.ElementAt(i).Value.WriteToFile(writer); } if (File.Exists("mesh.bin")) { File.Delete("mesh.bin"); } if (File.Exists("cook.bin")) { File.Delete("cook.bin"); } }
public void ExportToFbx(string path, bool saveBinary) { FBXHelper.ConvertM2T(path + name + ".m2t", path + name + ".fbx"); }