v0.4.3: lucht op de grond (grounded skybox) met gras en schaduw; webserver verplicht

- core/skybox.js: panorama op de grond geprojecteerd (port GroundedSkybox),
  grastextuur in cirkel rond het object met overvloeiing, zon met schaduw,
  camera niet onder de grond
- woning: maaiveld als instelling (standaard 350 mm onder bovenkant vloer)
- assets opgeschoond (alleen grass.jpg + skybox.webp), skybox-data.js weg
- start.sh + melding bij file://

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Machiel
2026-09-30 12:07:35 +02:00
co-authored by Claude Opus 5.5
parent 3a4b9608c0
commit f8da490640
12 changed files with 175 additions and 80 deletions
+4 -3
View File
@@ -727,11 +727,11 @@ function mountFloorEditor(container, callbacks) {
isolatieVisible = v.isolatie;
update3DScene();
});
// Lucht-achtergrond (core/skybox.js).
// Lucht en gras (core/skybox.js); de vloer staat met zijn onderkant op het gras.
let skyOn = Skybox.isOn();
const applySky = () => { grid.visible = !skyOn; Skybox.apply(scene, skyOn, 0x1a1a1a, () => skyOn); };
const skyEnv = Skybox.createEnvironment(scene);
const applySky = () => Skybox.apply(skyOn, { env: skyEnv, grid, controls, sun: dirLight, shadowRoot: floorGroup3D });
Skybox.createToggle(document.getElementById('floor-toolbar-3d'), (on) => { skyOn = on; applySky(); });
applySky();
function update3DScene() {
if (floorGroup3D) scene.remove(floorGroup3D);
@@ -739,6 +739,7 @@ function mountFloorEditor(container, callbacks) {
? RoofModel.build3D(calcData, lastResolvedOpenings, { materials: floorMaterials, osbVisible, isolatieVisible, dakleerVisible: osbVisible })
: FloorModel.build3D(calcData, lastResolvedOpenings, lastChassisData, { materials: floorMaterials, osbVisible, isolatieVisible });
scene.add(floorGroup3D);
applySky(); // schaduw van de nieuwe vloer
}
// ------------------------------------------------------------