public string ExportMaterial(DrawElement drawElement) { ushort nodeIdex = 0; foreach (var node in Header.Nodes) { for (int i = 0; i < node.ShapeCount; i++) { if (node.ShapeIndex + i == drawElement.ShapeIndex) { nodeIdex = node.NodeIndex; } } } var shape = Header.Shapes[drawElement.ShapeIndex]; var material = Header.Materials[drawElement.MaterialIndex]; var convertedMat = new MaterialConvert(); convertedMat.AlphaFlags = material.AlphaFlags; convertedMat.DiffuseR = material.Color.R; convertedMat.DiffuseG = material.Color.G; convertedMat.DiffuseB = material.Color.B; convertedMat.DiffuseA = material.Color.A; convertedMat.Unknown1 = material.Unknown1; convertedMat.Unknown2 = material.Unknown3; convertedMat.MeshSettings = new ShapeFlags() { NormalsFlags = shape.NormalFlags, Unknown1 = shape.Unknown1, Unknown2 = shape.Unknown2, Unknown3 = shape.Unknown3, NodeIndex = nodeIdex, }; TevStageConvert[] stages = new TevStageConvert[material.NumTevStages]; convertedMat.TevStages = stages; for (int i = 0; i < material.NumTevStages; i++) { stages[i] = new TevStageConvert(); stages[i].SamplerIndex = material.TevStages[i].SamplerIndex; stages[i].Unknown = material.TevStages[i].Unknown; stages[i].Values = material.TevStages[i].Unknowns2; } return(Newtonsoft.Json.JsonConvert.SerializeObject(convertedMat, Newtonsoft.Json.Formatting.Indented)); }
static void Main(string[] args) { ResFile animFile = new ResFile("JugemObj.bfres"); animFile.Save("JugemObjRB.bfres"); return; ResFile resFile = new ResFile(args[0]); string folder = Path.GetFileNameWithoutExtension(args[0]); foreach (var model in resFile.Models.Values) { if (!Directory.Exists($"{folder}/Models/{model.Name}")) { Directory.CreateDirectory($"{folder}/Models/{model.Name}"); } foreach (var mat in model.Materials.Values) { File.WriteAllText($"{folder}/Models/{model.Name}/{mat.Name}.json", MaterialConvert.ToJson(mat)); } } /* * string targetFileWiiU = "test.bfres"; * * * ResFile resFile = new ResFile(targetFileWiiU); * resFile.Models[0].Export("ModelU.bfmdl", resFile); * resFile.Save($"{targetFileWiiU}.new.bfres"); * * //Platform switch, alignment, version * resFile.ChangePlatform(true, 4096, 0, 5, 0, 3); * resFile.Save("newNX.bfres"); * * //Section export/import test * //Swap a switch model with a wii u one * resFile.Models[0].Export("ModelNX.bfmdl", resFile); * resFile.Models[0].Import("ModelU.bfmdl", resFile); * * //Platform wii u, alignment, version * resFile.ChangePlatform(false, 8192, 3, 4, 0, 4); * resFile.Save("newU.bfres");*/ }