11using System . Text ;
2- using System . Text . Json . Nodes ;
32
43using FEZRepacker . Core . Definitions . Game . ArtObject ;
5- using FEZRepacker . Core . Definitions . Game . Graphics ;
64using FEZRepacker . Core . Definitions . Game . XNA ;
75using FEZRepacker . Core . FileSystem ;
86using FEZRepacker . Core . Helpers ;
97using FEZRepacker . Core . Helpers . Json ;
108
119using SharpGLTF . Schema2 ;
12- using SharpGLTF . Validation ;
13-
1410using SixLabors . ImageSharp . Formats . Png ;
1511
1612namespace FEZRepacker . Core . Conversion . Formats
@@ -61,7 +57,8 @@ private static Stream GetTextureStream(ArtObject data, TexturesUtil.CubemapPart
6157
6258 private static Stream GetModelStream ( ArtObject data )
6359 {
64- return new MemoryStream ( Encoding . UTF8 . GetBytes ( data . Geometry . ToWavefrontObj ( ) ) ) ;
60+ var geometry = data . Geometry . WithReversedWindingIndices ( ) ;
61+ return new MemoryStream ( Encoding . UTF8 . GetBytes ( geometry . ToWavefrontObj ( ) ) ) ;
6562 }
6663
6764 private static Stream GetTransmissionFormatStream ( ArtObject data )
@@ -71,7 +68,7 @@ private static Stream GetTransmissionFormatStream(ArtObject data)
7168 using var emission =
7269 TexturesUtil . ExtractCubemapPartFromTexture ( data . Cubemap , TexturesUtil . CubemapPart . Emission ) ;
7370 var extras = ConfiguredJsonSerializer . SerializeToNode ( data ) ;
74- var entry = new GltfEntry < Matrix > ( data . Name , data . Geometry , extras ) ;
71+ var entry = new GltfEntry < Matrix > ( data . Name , data . Geometry . WithReversedWindingIndices ( ) , extras ) ;
7572 return GltfUtil . ToGltfModel ( entry , albedo , emission ) . SaveAsGlb ( ) ;
7673 }
7774
@@ -85,8 +82,8 @@ private static ArtObject LoadFromTransmissionFormat(Stream modelStream)
8582
8683 var entry = entries . First ( ) ;
8784 var artObject = ConfiguredJsonSerializer . DeserializeFromNode < ArtObject > ( entry . Extras ) ?? new ArtObject ( ) ;
88- artObject . Geometry = entry . Geometry ;
89- TrixelArtUtil . RecalculateCubemapTexCoords ( artObject . Geometry , artObject . Size ) ;
85+ artObject . Geometry = entry . Geometry . WithReversedWindingIndices ( ) ;
86+ FezGeometryUtil . RecalculateCubemapTexCoords ( artObject . Geometry , artObject . Size ) ;
9087
9188 ( Stream ? albedo , Stream ? emission ) = GltfUtil . ExtractCubemapStreams ( modelRoot ) ;
9289 LoadCubemap ( ref artObject , albedo , emission ) ;
@@ -96,10 +93,10 @@ private static ArtObject LoadFromTransmissionFormat(Stream modelStream)
9693
9794 private static void AppendGeometryStream ( ref ArtObject data , Stream geometryStream )
9895 {
99- var geometries = TrixelArtUtil . LoadGeometry < Matrix > ( geometryStream ) ;
96+ var geometries = WavefrontObjUtil . FromWavefrontObjStream < Matrix > ( geometryStream ) ;
10097 if ( geometries . Count < 1 ) return ;
101- data . Geometry = geometries . First ( ) . Value ;
102- TrixelArtUtil . RecalculateCubemapTexCoords ( data . Geometry , data . Size ) ;
98+ data . Geometry = geometries . First ( ) . Value . WithReversedWindingIndices ( ) ;
99+ FezGeometryUtil . RecalculateCubemapTexCoords ( data . Geometry , data . Size ) ;
103100 }
104101
105102 private static void LoadCubemap ( ref ArtObject data , Stream ? albedoStream , Stream ? emissionStream )
0 commit comments