fix(3d-synthezier): correct mirrored face winding in generated OBJ files master
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Sun, 27 Sep 2026 18:49:12 +0000 (21:49 +0300)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Sun, 27 Sep 2026 18:49:12 +0000 (21:49 +0300)
commit60620e1bd284bbf078d65f2e6a821c60e128a46a
treefd731f2b9c180cbdc1f3acacb96abc1933c44cbf
parentdd48c81d973b653aab3e3a36c34107072f934fd1
fix(3d-synthezier): correct mirrored face winding in generated OBJ files

The parser negates Z when writing vertices but emitted faces in their original order, so every generated OBJ had globally mirrored winding - building walls pointed inward and one-sided lighting/GI in consuming renderers produced uniform gray facades. Faces are now emitted reversed to compensate, and the transform stack tracks negative-scale (mirror) parity so mirrored instances flip winding back automatically.

Sixteen include files also had faces authored inward (dome, prisms, pipe, plate, solar, police parts, car, bus, hextower, roof slabs); these are flipped at source. Roof slabs had been authored downward and only rendered correctly by accident of the parser bug.

Component and material names are now English (maja->building, krs->storey, sein->wall, blk->window/hextower, nrk->prism, katus->roof, kuppel->dome, pol->police, muld->soil, kivi->stone and so on), and the scene language gained readable command aliases (origin, use, pick, pickmtl, ifeq, if) with all scene files and documentation converted. Both cities regenerated; AGENTS.org documents layout, build, language essentials and winding rules.
91 files changed:
3D GFX/3D Synthezier/AGENTS.org [new file with mode: 0644]
3D GFX/3D Synthezier/bin/3dparse.bas
3D GFX/3D Synthezier/bin/backup/3dparse.bas [new file with mode: 0755]
3D GFX/3D Synthezier/bin/backup/city1.obj [new file with mode: 0644]
3D GFX/3D Synthezier/bin/backup/city2.obj [new file with mode: 0644]
3D GFX/3D Synthezier/bin/city1.3d
3D GFX/3D Synthezier/bin/city1.obj
3D GFX/3D Synthezier/bin/city2.3d
3D GFX/3D Synthezier/bin/city2.obj
3D GFX/3D Synthezier/bin/result.mtl
3D GFX/3D Synthezier/doc/Diagrams/Command cache.svg [new file with mode: 0644]
3D GFX/3D Synthezier/doc/Diagrams/Face indices.svg [new file with mode: 0644]
3D GFX/3D Synthezier/doc/Diagrams/Minimal scene.svg [new file with mode: 0644]
3D GFX/3D Synthezier/doc/Diagrams/Parsing pipeline.svg [new file with mode: 0644]
3D GFX/3D Synthezier/doc/Diagrams/Rotation planes.svg [new file with mode: 0644]
3D GFX/3D Synthezier/doc/Diagrams/Transform stack.svg [new file with mode: 0644]
3D GFX/3D Synthezier/doc/Diagrams/Variables and flags.svg [new file with mode: 0644]
3D GFX/3D Synthezier/doc/Diagrams/Vertex and face buffers.svg [new file with mode: 0644]
3D GFX/3D Synthezier/doc/Diagrams/Weighted random.svg [new file with mode: 0644]
3D GFX/3D Synthezier/doc/index.org
3D GFX/3D Synthezier/doc/rectangular city, 1.jpeg
3D GFX/3D Synthezier/doc/rectangular city, 2.jpeg
3D GFX/3D Synthezier/doc/rectangular city, 3.jpeg [deleted file]
3D GFX/3D Synthezier/include/6nrk0s.3d [deleted file]
3D GFX/3D Synthezier/include/6nrk2s.3d [deleted file]
3D GFX/3D Synthezier/include/blk1.3d [deleted file]
3D GFX/3D Synthezier/include/blk2.3d [deleted file]
3D GFX/3D Synthezier/include/blk3.3d [deleted file]
3D GFX/3D Synthezier/include/blk4.3d [deleted file]
3D GFX/3D Synthezier/include/bridge.3d
3D GFX/3D Synthezier/include/bridge1.3d
3D GFX/3D Synthezier/include/bridge_glass.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/bridgegl.3d [deleted file]
3D GFX/3D Synthezier/include/building.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/bus.3d
3D GFX/3D Synthezier/include/bus_frnt.3d [deleted file]
3D GFX/3D Synthezier/include/bus_front.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/bus_wind.3d [deleted file]
3D GFX/3D Synthezier/include/bus_windshield.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/car.3d
3D GFX/3D Synthezier/include/car_frnt.3d [deleted file]
3D GFX/3D Synthezier/include/car_front.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/cars.3d
3D GFX/3D Synthezier/include/dome.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/flare_r.3d [deleted file]
3D GFX/3D Synthezier/include/flare_red.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/flare_w.3d [deleted file]
3D GFX/3D Synthezier/include/flare_white.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/handrail.3d
3D GFX/3D Synthezier/include/hexcluster.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/hexcluster_bridges.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/hexdistrict.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/hextower.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/katus.3d [deleted file]
3D GFX/3D Synthezier/include/katus2.3d [deleted file]
3D GFX/3D Synthezier/include/katus3.3d [deleted file]
3D GFX/3D Synthezier/include/krs1.3d [deleted file]
3D GFX/3D Synthezier/include/krs2.3d [deleted file]
3D GFX/3D Synthezier/include/kuppel.3d [deleted file]
3D GFX/3D Synthezier/include/maja.3d [deleted file]
3D GFX/3D Synthezier/include/nrk4.3d [deleted file]
3D GFX/3D Synthezier/include/nrk6.3d [deleted file]
3D GFX/3D Synthezier/include/nrk8.3d [deleted file]
3D GFX/3D Synthezier/include/pipe.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/plaat.3d [deleted file]
3D GFX/3D Synthezier/include/plate.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/pol.3d [deleted file]
3D GFX/3D Synthezier/include/pol_ceil.3d [deleted file]
3D GFX/3D Synthezier/include/pol_frnt.3d [deleted file]
3D GFX/3D Synthezier/include/police.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/police_front.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/police_roof.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/prism4.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/prism6.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/prism8.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/ring.3d
3D GFX/3D Synthezier/include/roof.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/roof2.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/roof3.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/seinl1.3d [deleted file]
3D GFX/3D Synthezier/include/seinp1.3d [deleted file]
3D GFX/3D Synthezier/include/solar.3d
3D GFX/3D Synthezier/include/spring.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/storey_hex.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/storey_square.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/toru.3d [deleted file]
3D GFX/3D Synthezier/include/vedru.3d [deleted file]
3D GFX/3D Synthezier/include/wall_hex.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/wall_square.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/window_big.3d [new file with mode: 0644]
3D GFX/3D Synthezier/include/window_small.3d [new file with mode: 0644]