Bug in der Camera behoben, was nahgelegene Objekte anbelangt, weitere Modelle hochgeladen

This commit is contained in:
2026-07-22 21:39:36 +02:00
parent 032345b2bc
commit 9ebde59d40
43 changed files with 309 additions and 16 deletions

View File

@@ -237,7 +237,9 @@ public class WorldScene extends BaseAppState {
com.jme3.asset.plugins.FileLocator.class);
} catch (Exception ignored) {}
app.getCamera().setFrustumFar(4000f);
app.getCamera().setFrustumPerspective(45f,
(float) app.getCamera().getWidth() / app.getCamera().getHeight(),
0.05f, 4000f);
BlightGame.status("Baue Beleuchtung und Himmel...");
buildLighting();

View File

@@ -271,9 +271,13 @@ public class WorldObjectsState extends BaseAppState {
initImpostor(lod2Node);
}
}
treeNode.addControl(new ModelLodControl(
app.getCamera(), lod0, lod1, lod2,
m.lod1Distance() * lodFactor, m.lod2Distance() * lodFactor));
// ModelLodControl nur wenn tatsächliche LOD-Varianten vorhanden — sonst
// würde das Objekt ab lod1Distance komplett ausgeblendet (targetSlot=-1).
if (lod1 != null || lod2 != null) {
treeNode.addControl(new ModelLodControl(
app.getCamera(), lod0, lod1, lod2,
m.lod1Distance() * lodFactor, m.lod2Distance() * lodFactor));
}
return treeNode;
}
@@ -321,18 +325,24 @@ public class WorldObjectsState extends BaseAppState {
}
// Fallback: externe LOD-Dateien (lod1Path / lod2Path)
Node lodRoot = new Node("lodRoot_" + path);
lodRoot.attachChild(spatial);
ModelLodControl ctrl = new ModelLodControl(
assets, app.getCamera(),
m.lod1Path(), m.lod2Path(),
m.lod1Distance() * lodFactor, m.lod2Distance() * lodFactor);
ctrl.setLodLoadCallback(lod -> {
convertUnshadedToPbr(lod);
collectSceneLitMaterials(lod);
});
lodRoot.addControl(ctrl);
return lodRoot;
// Nur wenn mindestens eine Datei tatsächlich angegeben ist — ohne Dateien würde
// ModelLodControl das Objekt ab lod1Distance komplett ausblenden (targetSlot=-1).
String lp1 = m.lod1Path() != null && !m.lod1Path().isBlank() ? m.lod1Path() : null;
String lp2 = m.lod2Path() != null && !m.lod2Path().isBlank() ? m.lod2Path() : null;
if (lp1 != null || lp2 != null) {
Node lodRoot = new Node("lodRoot_" + path);
lodRoot.attachChild(spatial);
ModelLodControl ctrl = new ModelLodControl(
assets, app.getCamera(),
lp1, lp2,
m.lod1Distance() * lodFactor, m.lod2Distance() * lodFactor);
ctrl.setLodLoadCallback(lod -> {
convertUnshadedToPbr(lod);
collectSceneLitMaterials(lod);
});
lodRoot.addControl(ctrl);
return lodRoot;
}
}
return spatial;