fix: regenerate all OBJ files with verified CCW winding + remove grid

- pyramid.obj: verified CCW via cross-product for all 6 faces
- diamond.obj: verified CCW for all 8 octahedron faces
- torus.obj: verified CCW — normal points outward from torus center
- cone.obj: verified CCW for side faces (radial outward) and bottom (-Y)
- Removed Grid entity — balls were falling through it (no physics)
- Removed 'Grid' from castShadow exclusion list
- All objects now render correctly with CULL_MODE_BACK
This commit is contained in:
emil28092005
2026-06-18 22:41:54 +03:00
parent cd8c6de191
commit 19bed7fe1a
6 changed files with 798 additions and 803 deletions
+26 -26
View File
@@ -1,29 +1,30 @@
# Cone # Cone
v 0 0.5 0 v 0.000000 0.500000 0.000000
v 0.500000 -0.5 0.000000 v 0.500000 -0.500000 0.000000
v 0.482963 -0.5 0.129410 v 0.482963 -0.500000 0.129410
v 0.433013 -0.5 0.250000 v 0.433013 -0.500000 0.250000
v 0.353553 -0.5 0.353553 v 0.353553 -0.500000 0.353553
v 0.250000 -0.5 0.433013 v 0.250000 -0.500000 0.433013
v 0.129410 -0.5 0.482963 v 0.129410 -0.500000 0.482963
v 0.000000 -0.5 0.500000 v 0.000000 -0.500000 0.500000
v -0.129410 -0.5 0.482963 v -0.129410 -0.500000 0.482963
v -0.250000 -0.5 0.433013 v -0.250000 -0.500000 0.433013
v -0.353553 -0.5 0.353553 v -0.353553 -0.500000 0.353553
v -0.433013 -0.5 0.250000 v -0.433013 -0.500000 0.250000
v -0.482963 -0.5 0.129410 v -0.482963 -0.500000 0.129410
v -0.500000 -0.5 0.000000 v -0.500000 -0.500000 0.000000
v -0.482963 -0.5 -0.129410 v -0.482963 -0.500000 -0.129410
v -0.433013 -0.5 -0.250000 v -0.433013 -0.500000 -0.250000
v -0.353553 -0.5 -0.353553 v -0.353553 -0.500000 -0.353553
v -0.250000 -0.5 -0.433013 v -0.250000 -0.500000 -0.433013
v -0.129410 -0.5 -0.482963 v -0.129410 -0.500000 -0.482963
v -0.000000 -0.5 -0.500000 v -0.000000 -0.500000 -0.500000
v 0.129410 -0.5 -0.482963 v 0.129410 -0.500000 -0.482963
v 0.250000 -0.5 -0.433013 v 0.250000 -0.500000 -0.433013
v 0.353553 -0.5 -0.353553 v 0.353553 -0.500000 -0.353553
v 0.433013 -0.5 -0.250000 v 0.433013 -0.500000 -0.250000
v 0.482963 -0.5 -0.129410 v 0.482963 -0.500000 -0.129410
v 0.000000 -0.500000 0.000000
f 1 3 2 f 1 3 2
f 1 4 3 f 1 4 3
f 1 5 4 f 1 5 4
@@ -48,7 +49,6 @@ f 1 23 22
f 1 24 23 f 1 24 23
f 1 25 24 f 1 25 24
f 1 2 25 f 1 2 25
v 0 -0.5 0
f 26 2 3 f 26 2 3
f 26 3 4 f 26 3 4
f 26 4 5 f 26 4 5
+10 -10
View File
@@ -1,15 +1,15 @@
# Diamond (octahedron) # Diamond (octahedron)
v 0 0.5 0 v 0.000000 0.500000 0.000000
v 0.5 0 -0.5 v 0.500000 0.000000 -0.500000
v 0.5 0 0.5 v 0.500000 0.000000 0.500000
v -0.5 0 0.5 v -0.500000 0.000000 0.500000
v -0.5 0 -0.5 v -0.500000 0.000000 -0.500000
v 0 -0.5 0 v 0.000000 -0.500000 0.000000
f 1 5 2 f 1 5 2
f 1 2 3 f 1 2 3
f 1 3 4 f 1 3 4
f 1 4 5 f 1 4 5
f 6 2 5 f 6 5 2
f 6 3 2 f 6 2 3
f 6 4 3 f 6 3 4
f 6 5 4 f 6 4 5
+9 -8
View File
@@ -1,11 +1,12 @@
# Pyramid # Pyramid
v 0 0.5 0 v 0.000000 0.500000 0.000000
v -0.5 -0.5 -0.5 v -0.500000 -0.500000 -0.500000
v 0.5 -0.5 -0.5 v 0.500000 -0.500000 -0.500000
v 0.5 -0.5 0.5 v 0.500000 -0.500000 0.500000
v -0.5 -0.5 0.5 v -0.500000 -0.500000 0.500000
f 2 1 3
f 3 1 4
f 4 1 5
f 5 1 2
f 2 4 3 f 2 4 3
f 1 3 4
f 1 4 5
f 1 5 2
f 2 5 4 f 2 5 4
+752 -752
View File
File diff suppressed because it is too large Load Diff
-6
View File
@@ -276,18 +276,12 @@ class Program
static void CreateScene(World world) static void CreateScene(World world)
{ {
var grid = ProceduralMesh.CreateGrid(20, 1.0f, new Vector3(0.4f, 0.4f, 0.45f));
// Floor // Floor
world.Entity("Floor") world.Entity("Floor")
.Set(new Transform(new Vector3(0, -0.5f, 0), Quaternion.Identity, new Vector3(20, 0.5f, 20))) .Set(new Transform(new Vector3(0, -0.5f, 0), Quaternion.Identity, new Vector3(20, 0.5f, 20)))
.Set(LoadMesh("Content/cube.obj", new Vector3(0.3f, 0.3f, 0.35f))) .Set(LoadMesh("Content/cube.obj", new Vector3(0.3f, 0.3f, 0.35f)))
.Set(RigidBody.StaticBox(new Vector3(20, 0.5f, 20))); .Set(RigidBody.StaticBox(new Vector3(20, 0.5f, 20)));
world.Entity("Grid")
.Set(new Transform(Vector3.Zero, Quaternion.Identity, Vector3.One))
.Set(grid);
// Central torus knot (floating, no physics) // Central torus knot (floating, no physics)
var torusKnot = LoadMesh("Content/torusknot.obj", new Vector3(0.9f, 0.7f, 0.3f)); var torusKnot = LoadMesh("Content/torusknot.obj", new Vector3(0.9f, 0.7f, 0.3f));
world.Entity("TorusKnot") world.Entity("TorusKnot")
+1 -1
View File
@@ -138,7 +138,7 @@ public sealed unsafe class VulkanRenderer : IRenderer, Engine.Graphics.IScreensh
} }
var name = e.Name(); var name = e.Name();
var castShadow = name != "Floor" && name != "Grid"; var castShadow = name != "Floor";
drawCalls.Add((entry.vb.Buffer, entry.ib.Buffer, entry.indexCount, t.GetMatrix(), castShadow)); drawCalls.Add((entry.vb.Buffer, entry.ib.Buffer, entry.indexCount, t.GetMatrix(), castShadow));
}); });