the mesh loads!

This commit is contained in:
tresabhi committed 2026-06-06 21:45:25 -05:00
1 parent 39ffc6ae51
commit 9cc94635a8
2 files changed
+30 -57

No files matched your search

+1 -24
View File
@@ -20,14 +20,12 @@ namespace BlitzKit.Game.JSExport;
public partial class GameInterface public partial class GameInterface
{ {
private readonly BlitzFileProvider provider; private readonly BlitzFileProvider provider;
private readonly BlitzExporter exporter;
public HashSet<string> files; public HashSet<string> files;
public GameInterface(string directory, string map, string temp) public GameInterface(string directory, string map, string temp)
{ {
provider = new(directory, map, temp); provider = new(directory, map, temp);
exporter = new();
files = [.. provider.Files.Keys]; files = [.. provider.Files.Keys];
} }
@@ -149,27 +147,6 @@ public partial class GameInterface
var mesh = meshSettings.Get<UStaticMesh>("GunMesh"); var mesh = meshSettings.Get<UStaticMesh>("GunMesh");
var gltf = new MonoGltf(mesh); var gltf = new MonoGltf(mesh);
exporter.glb(mesh); return [.. gltf.Write()];
// var options = new ExporterOptions() {
// LodFormat = ELodFormat.FirstLod,
// MeshFormat = EMeshFormat.Gltf2,
// TextureFormat = ETextureFormat.Jpeg,
// };
// var exporter = new MeshExporter(mesh, options);
// var lod0 = exporter.MeshLods[0];
// exporter.TryWriteToDir(new("../../temp/model"), out var _, out var _);
// Console.WriteLine(lod0.FileName);
// Console.WriteLine(lod0.FileData.Length);
// foreach (var material in lod0.Materials)
// {
// material.ma
// // material.TryWriteToDir
// }
return [];
} }
} }
+29 -33
View File
@@ -39,9 +39,13 @@ public class MonoGltf
MaterialBuilder emptyMaterial = new("empty_material"); MaterialBuilder emptyMaterial = new("empty_material");
Dictionary<string, MaterialBuilder> namedMaterials = []; Dictionary<string, MaterialBuilder> namedMaterials = [];
Console.WriteLine(lod.Sections.Value.Length);
int sectionIndex = 0; int sectionIndex = 0;
foreach (var section in lod.Sections.Value) foreach (var section in lod.Sections.Value)
{ {
Console.WriteLine(section.MaterialName);
ConfiguredMeshBuilder meshBuilder = new($"{staticMesh.Name}_section_{sectionIndex}"); ConfiguredMeshBuilder meshBuilder = new($"{staticMesh.Name}_section_{sectionIndex}");
MaterialBuilder materialBuilder; MaterialBuilder materialBuilder;
@@ -68,32 +72,34 @@ public class MonoGltf
texture is not UTexture2D texture2d texture is not UTexture2D texture2d
|| texture2d.Decode(options.Platform) is not { } bitmap || texture2d.Decode(options.Platform) is not { } bitmap
) )
return;
try
{ {
Console.WriteLine($"Failed to decode texture: {texture?.Name}");
continue;
}
switch (parameterTexture.Key) switch (parameterTexture.Key)
{ {
case "BaseColor": case "BaseColor":
{ {
var encoded = bitmap.Encode( var encoded = bitmap.Encode(options.TextureFormat, false, out var _);
options.TextureFormat,
false,
out var _
);
var bytes = encoded.ToArray(); var bytes = encoded.ToArray();
materialBuilder.WithBaseColor(bytes); materialBuilder.WithBaseColor(bytes);
break; break;
} }
case "RM": case "Normal":
{ {
var encoded = bitmap.Encode( var encoded = bitmap.Encode(options.TextureFormat, false, out var _);
options.TextureFormat, var bytes = encoded.ToArray();
false, materialBuilder.WithNormal(bytes);
out var _
); break;
}
case "RMAO":
{
var encoded = bitmap.Encode(options.TextureFormat, false, out var _);
// for (int y = 0; y < bitmap.Height; y++) // for (int y = 0; y < bitmap.Height; y++)
// { // {
@@ -116,35 +122,25 @@ public class MonoGltf
break; break;
} }
case "PM_SpecularMasks": case "CDE":
// materialBuilder.WithSpecularGlossiness(textureBytes); {
break; // idk wtf this is
case "PM_Diffuse":
// materialBuilder.WithDiffuse(textureBytes);
break;
case "T_R90_IS_4_MISC":
case "T_R90_IS_4_MASK":
case "Misc":
case "Mask":
break; break;
}
default: default:
throw new Exception(
$"Unsupported texture type: {parameterTexture.Key}"
);
}
}
catch
{ {
Console.WriteLine($"Failed to load texture: {parameterTexture.Key}"); Console.WriteLine($"Unsupported texture type: {parameterTexture.Key}");
break;
}
} }
} }
} }
var primitive = meshBuilder.UsePrimitive(materialBuilder); var primitive = meshBuilder.UsePrimitive(materialBuilder);
Console.WriteLine($"faces: {section.NumFaces}");
for (int faceIndex = 0; faceIndex < section.NumFaces; faceIndex++) for (int faceIndex = 0; faceIndex < section.NumFaces; faceIndex++)
{ {
var wedgeIndex = new int[3]; var wedgeIndex = new int[3];