Skip to content

Commit ffe2441

Browse files
committed
Texture tiling fixes
1 parent 50de78d commit ffe2441

File tree

1 file changed

+6
-45
lines changed

1 file changed

+6
-45
lines changed

RenderWarePreviewer/Helpers/MeshHelper.cs

Lines changed: 6 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,11 @@ public static DiffuseMaterial GetMaterial(SixLabors.ImageSharp.Image<Rgba32>? im
9898
};
9999
if (image != null)
100100
{
101-
material.Brush = new ImageBrush(GetBitMap(image));
101+
material.Brush = new ImageBrush(GetBitMap(image))
102+
{
103+
TileMode = TileMode.Tile,
104+
ViewportUnits = BrushMappingMode.Absolute
105+
};
102106
}
103107
else
104108
{
@@ -139,54 +143,11 @@ public static MeshGeometry3D GetMesh(RenderWareIo.Structs.Dff.Geometry geometry,
139143

140144
foreach (var uv in geometry.TexCoords)
141145
{
142-
mesh.TextureCoordinates.Add(SanitzeUv(uv));
146+
mesh.TextureCoordinates.Add(new Point(uv.X, uv.Y));
143147
}
144148
return mesh;
145149
}
146150

147-
private static Point SanitzeUv(Uv uv)
148-
{
149-
//return new Point(uv.X, uv.Y);
150-
//return new Point((uv.X + 100f) % 1, (uv.Y + 100) % 1f);
151-
//return new Point(
152-
// uv.X < 0 ? uv.X + MathF.Round(MathF.Abs(uv.X) + 0.5f) :
153-
// uv.X > 1 ? uv.X % 1f :
154-
// uv.X,
155-
// uv.Y < 0 ? uv.Y + MathF.Round(MathF.Abs(uv.Y) + 0.5f) :
156-
// uv.Y > 1 ? uv.Y % 1f :
157-
// uv.Y
158-
//);
159-
160-
//return new Point(
161-
// uv.X < -1 ? -(MathF.Abs(uv.X) % 1f) + MathF.Round(MathF.Abs(-(MathF.Abs(uv.X) % 1f)) + 0.5f) :
162-
// uv.X < 0 ? uv.X + MathF.Round(MathF.Abs(uv.X) + 0.5f) :
163-
// uv.X > 1 ? uv.X % 1f :
164-
// uv.X,
165-
// uv.Y < -1 ? -(MathF.Abs(uv.Y) % 1f) + MathF.Round(MathF.Abs(-(MathF.Abs(uv.Y) % 1f)) + 0.5f) :
166-
// uv.Y < 0 ? uv.Y + MathF.Round(MathF.Abs(uv.Y) + 0.5f) :
167-
// uv.Y > 1 ? uv.Y % 1f :
168-
// uv.Y
169-
//);
170-
171-
172-
if (uv.X < -1)
173-
uv.X = -(MathF.Abs(uv.X) % 1f);
174-
if (uv.Y < -1)
175-
uv.Y = -(MathF.Abs(uv.Y) % 1f);
176-
177-
if (uv.X < 0)
178-
uv.X = (uv.X + 100);
179-
if (uv.Y < 0)
180-
uv.Y = (uv.Y + 100);
181-
182-
if (uv.X > 1)
183-
uv.X = uv.X % 1.0f;
184-
if (uv.Y > 1)
185-
uv.Y = uv.Y % 1.0f;
186-
187-
return new Point(uv.X, uv.Y);
188-
}
189-
190151
private static BitmapSource GetBitMap(SixLabors.ImageSharp.Image<Rgba32> image)
191152
{
192153
Rgba32[] rgbaArray = new Rgba32[image.Width * image.Height];

0 commit comments

Comments
 (0)