Bug in der Camera behoben, was nahgelegene Objekte anbelangt, weitere Modelle hochgeladen
BIN
assets/imported/models/ausdauertrank.glb
Normal file
BIN
assets/imported/models/flasche.glb
Normal file
BIN
assets/imported/models/heiltrank.glb
Normal file
BIN
assets/imported/models/manatrank.glb
Normal file
BIN
assets/imported/models/schwacherausdauertrank.glb
Normal file
BIN
assets/imported/models/schwacherheiltrank.glb
Normal file
BIN
assets/imported/models/schwachermanatrank.glb
Normal file
BIN
assets/imported/models/starkerausdauertrank.glb
Normal file
BIN
assets/imported/models/starkerheiltrank.glb
Normal file
BIN
assets/imported/models/starkermanatrank.glb
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 6.7 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
@@ -0,0 +1,28 @@
|
|||||||
|
#Wed Jul 22 21:34:49 CEST 2026
|
||||||
|
attachedEmitters.count=0
|
||||||
|
attachedLights.count=0
|
||||||
|
castShadow=true
|
||||||
|
category=
|
||||||
|
cullDistance=120.0
|
||||||
|
footstepSurface=
|
||||||
|
interactableOffsetX=0.0
|
||||||
|
interactableOffsetY=0.5
|
||||||
|
interactableOffsetZ=0.0
|
||||||
|
interactableRotY=0.0
|
||||||
|
interactableType=NONE
|
||||||
|
lod1Distance=30.0
|
||||||
|
lod1Path=
|
||||||
|
lod2Distance=80.0
|
||||||
|
lod2Path=
|
||||||
|
name=ausdauertrank
|
||||||
|
pivotOffsetY=0.0
|
||||||
|
placementOffsetY=0.0
|
||||||
|
randomScaleMax=1.0
|
||||||
|
randomScaleMin=1.0
|
||||||
|
receiveShadow=true
|
||||||
|
scaleX=1.0
|
||||||
|
scaleY=1.0
|
||||||
|
scaleZ=1.0
|
||||||
|
solid=false
|
||||||
|
tags=
|
||||||
|
uniformScale=true
|
||||||
BIN
blight-assets/src/main/resources/Models/imported/flasche.j3o
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
#Wed Jul 22 21:34:54 CEST 2026
|
||||||
|
attachedEmitters.count=0
|
||||||
|
attachedLights.count=0
|
||||||
|
castShadow=true
|
||||||
|
category=
|
||||||
|
cullDistance=120.0
|
||||||
|
footstepSurface=
|
||||||
|
interactableOffsetX=0.0
|
||||||
|
interactableOffsetY=0.5
|
||||||
|
interactableOffsetZ=0.0
|
||||||
|
interactableRotY=0.0
|
||||||
|
interactableType=NONE
|
||||||
|
lod1Distance=30.0
|
||||||
|
lod1Path=
|
||||||
|
lod2Distance=80.0
|
||||||
|
lod2Path=
|
||||||
|
name=flasche
|
||||||
|
pivotOffsetY=0.0
|
||||||
|
placementOffsetY=0.0
|
||||||
|
randomScaleMax=1.0
|
||||||
|
randomScaleMin=1.0
|
||||||
|
receiveShadow=true
|
||||||
|
scaleX=1.0
|
||||||
|
scaleY=1.0
|
||||||
|
scaleZ=1.0
|
||||||
|
solid=false
|
||||||
|
tags=
|
||||||
|
uniformScale=true
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#Wed Jul 22 21:34:58 CEST 2026
|
||||||
|
attachedEmitters.count=0
|
||||||
|
attachedLights.count=0
|
||||||
|
castShadow=true
|
||||||
|
category=
|
||||||
|
cullDistance=120.0
|
||||||
|
footstepSurface=
|
||||||
|
interactableOffsetX=0.0
|
||||||
|
interactableOffsetY=0.5
|
||||||
|
interactableOffsetZ=0.0
|
||||||
|
interactableRotY=0.0
|
||||||
|
interactableType=NONE
|
||||||
|
lod1Distance=30.0
|
||||||
|
lod1Path=
|
||||||
|
lod2Distance=80.0
|
||||||
|
lod2Path=
|
||||||
|
name=heiltrank
|
||||||
|
pivotOffsetY=0.0
|
||||||
|
placementOffsetY=0.0
|
||||||
|
randomScaleMax=1.0
|
||||||
|
randomScaleMin=1.0
|
||||||
|
receiveShadow=true
|
||||||
|
scaleX=1.0
|
||||||
|
scaleY=1.0
|
||||||
|
scaleZ=1.0
|
||||||
|
solid=false
|
||||||
|
tags=
|
||||||
|
uniformScale=true
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#Wed Jul 22 21:35:03 CEST 2026
|
||||||
|
attachedEmitters.count=0
|
||||||
|
attachedLights.count=0
|
||||||
|
castShadow=true
|
||||||
|
category=
|
||||||
|
cullDistance=120.0
|
||||||
|
footstepSurface=
|
||||||
|
interactableOffsetX=0.0
|
||||||
|
interactableOffsetY=0.5
|
||||||
|
interactableOffsetZ=0.0
|
||||||
|
interactableRotY=0.0
|
||||||
|
interactableType=NONE
|
||||||
|
lod1Distance=30.0
|
||||||
|
lod1Path=
|
||||||
|
lod2Distance=80.0
|
||||||
|
lod2Path=
|
||||||
|
name=manatrank
|
||||||
|
pivotOffsetY=0.0
|
||||||
|
placementOffsetY=0.0
|
||||||
|
randomScaleMax=1.0
|
||||||
|
randomScaleMin=1.0
|
||||||
|
receiveShadow=true
|
||||||
|
scaleX=1.0
|
||||||
|
scaleY=1.0
|
||||||
|
scaleZ=1.0
|
||||||
|
solid=false
|
||||||
|
tags=
|
||||||
|
uniformScale=true
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#Wed Jul 22 21:35:07 CEST 2026
|
||||||
|
attachedEmitters.count=0
|
||||||
|
attachedLights.count=0
|
||||||
|
castShadow=true
|
||||||
|
category=
|
||||||
|
cullDistance=120.0
|
||||||
|
footstepSurface=
|
||||||
|
interactableOffsetX=0.0
|
||||||
|
interactableOffsetY=0.5
|
||||||
|
interactableOffsetZ=0.0
|
||||||
|
interactableRotY=0.0
|
||||||
|
interactableType=NONE
|
||||||
|
lod1Distance=30.0
|
||||||
|
lod1Path=
|
||||||
|
lod2Distance=80.0
|
||||||
|
lod2Path=
|
||||||
|
name=schwacherausdauertrank
|
||||||
|
pivotOffsetY=0.0
|
||||||
|
placementOffsetY=0.0
|
||||||
|
randomScaleMax=1.0
|
||||||
|
randomScaleMin=1.0
|
||||||
|
receiveShadow=true
|
||||||
|
scaleX=1.0
|
||||||
|
scaleY=1.0
|
||||||
|
scaleZ=1.0
|
||||||
|
solid=false
|
||||||
|
tags=
|
||||||
|
uniformScale=true
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#Wed Jul 22 21:35:11 CEST 2026
|
||||||
|
attachedEmitters.count=0
|
||||||
|
attachedLights.count=0
|
||||||
|
castShadow=true
|
||||||
|
category=
|
||||||
|
cullDistance=120.0
|
||||||
|
footstepSurface=
|
||||||
|
interactableOffsetX=0.0
|
||||||
|
interactableOffsetY=0.5
|
||||||
|
interactableOffsetZ=0.0
|
||||||
|
interactableRotY=0.0
|
||||||
|
interactableType=NONE
|
||||||
|
lod1Distance=30.0
|
||||||
|
lod1Path=
|
||||||
|
lod2Distance=80.0
|
||||||
|
lod2Path=
|
||||||
|
name=schwacherheiltrank
|
||||||
|
pivotOffsetY=0.0
|
||||||
|
placementOffsetY=0.0
|
||||||
|
randomScaleMax=1.0
|
||||||
|
randomScaleMin=1.0
|
||||||
|
receiveShadow=true
|
||||||
|
scaleX=1.0
|
||||||
|
scaleY=1.0
|
||||||
|
scaleZ=1.0
|
||||||
|
solid=false
|
||||||
|
tags=
|
||||||
|
uniformScale=true
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#Wed Jul 22 21:35:15 CEST 2026
|
||||||
|
attachedEmitters.count=0
|
||||||
|
attachedLights.count=0
|
||||||
|
castShadow=true
|
||||||
|
category=
|
||||||
|
cullDistance=120.0
|
||||||
|
footstepSurface=
|
||||||
|
interactableOffsetX=0.0
|
||||||
|
interactableOffsetY=0.5
|
||||||
|
interactableOffsetZ=0.0
|
||||||
|
interactableRotY=0.0
|
||||||
|
interactableType=NONE
|
||||||
|
lod1Distance=30.0
|
||||||
|
lod1Path=
|
||||||
|
lod2Distance=80.0
|
||||||
|
lod2Path=
|
||||||
|
name=schwachermanatrank
|
||||||
|
pivotOffsetY=0.0
|
||||||
|
placementOffsetY=0.0
|
||||||
|
randomScaleMax=1.0
|
||||||
|
randomScaleMin=1.0
|
||||||
|
receiveShadow=true
|
||||||
|
scaleX=1.0
|
||||||
|
scaleY=1.0
|
||||||
|
scaleZ=1.0
|
||||||
|
solid=false
|
||||||
|
tags=
|
||||||
|
uniformScale=true
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#Wed Jul 22 21:35:19 CEST 2026
|
||||||
|
attachedEmitters.count=0
|
||||||
|
attachedLights.count=0
|
||||||
|
castShadow=true
|
||||||
|
category=
|
||||||
|
cullDistance=120.0
|
||||||
|
footstepSurface=
|
||||||
|
interactableOffsetX=0.0
|
||||||
|
interactableOffsetY=0.5
|
||||||
|
interactableOffsetZ=0.0
|
||||||
|
interactableRotY=0.0
|
||||||
|
interactableType=NONE
|
||||||
|
lod1Distance=30.0
|
||||||
|
lod1Path=
|
||||||
|
lod2Distance=80.0
|
||||||
|
lod2Path=
|
||||||
|
name=starkerausdauertrank
|
||||||
|
pivotOffsetY=0.0
|
||||||
|
placementOffsetY=0.0
|
||||||
|
randomScaleMax=1.0
|
||||||
|
randomScaleMin=1.0
|
||||||
|
receiveShadow=true
|
||||||
|
scaleX=1.0
|
||||||
|
scaleY=1.0
|
||||||
|
scaleZ=1.0
|
||||||
|
solid=false
|
||||||
|
tags=
|
||||||
|
uniformScale=true
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#Wed Jul 22 21:35:23 CEST 2026
|
||||||
|
attachedEmitters.count=0
|
||||||
|
attachedLights.count=0
|
||||||
|
castShadow=true
|
||||||
|
category=
|
||||||
|
cullDistance=120.0
|
||||||
|
footstepSurface=
|
||||||
|
interactableOffsetX=0.0
|
||||||
|
interactableOffsetY=0.5
|
||||||
|
interactableOffsetZ=0.0
|
||||||
|
interactableRotY=0.0
|
||||||
|
interactableType=NONE
|
||||||
|
lod1Distance=30.0
|
||||||
|
lod1Path=
|
||||||
|
lod2Distance=80.0
|
||||||
|
lod2Path=
|
||||||
|
name=starkerheiltrank
|
||||||
|
pivotOffsetY=0.0
|
||||||
|
placementOffsetY=0.0
|
||||||
|
randomScaleMax=1.0
|
||||||
|
randomScaleMin=1.0
|
||||||
|
receiveShadow=true
|
||||||
|
scaleX=1.0
|
||||||
|
scaleY=1.0
|
||||||
|
scaleZ=1.0
|
||||||
|
solid=false
|
||||||
|
tags=
|
||||||
|
uniformScale=true
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#Wed Jul 22 21:35:26 CEST 2026
|
||||||
|
attachedEmitters.count=0
|
||||||
|
attachedLights.count=0
|
||||||
|
castShadow=true
|
||||||
|
category=
|
||||||
|
cullDistance=120.0
|
||||||
|
footstepSurface=
|
||||||
|
interactableOffsetX=0.0
|
||||||
|
interactableOffsetY=0.5
|
||||||
|
interactableOffsetZ=0.0
|
||||||
|
interactableRotY=0.0
|
||||||
|
interactableType=NONE
|
||||||
|
lod1Distance=30.0
|
||||||
|
lod1Path=
|
||||||
|
lod2Distance=80.0
|
||||||
|
lod2Path=
|
||||||
|
name=starkermanatrank
|
||||||
|
pivotOffsetY=0.0
|
||||||
|
placementOffsetY=0.0
|
||||||
|
randomScaleMax=1.0
|
||||||
|
randomScaleMin=1.0
|
||||||
|
receiveShadow=true
|
||||||
|
scaleX=1.0
|
||||||
|
scaleY=1.0
|
||||||
|
scaleZ=1.0
|
||||||
|
solid=false
|
||||||
|
tags=
|
||||||
|
uniformScale=true
|
||||||
BIN
blight-assets/src/main/resources/Models/traenke/heiltrank.j3o
Normal file
BIN
blight-assets/src/main/resources/Models/traenke/manatrank.j3o
Normal file
@@ -164,6 +164,7 @@ public class JmeEditorApp extends SimpleApplication {
|
|||||||
@Override
|
@Override
|
||||||
public void simpleInitApp() {
|
public void simpleInitApp() {
|
||||||
flyCam.setEnabled(false);
|
flyCam.setEnabled(false);
|
||||||
|
cam.setFrustumPerspective(45f, (float) vpWidth / vpHeight, 0.05f, 4000f);
|
||||||
|
|
||||||
input.loadingStatus = "Registriere Asset-Loader...";
|
input.loadingStatus = "Registriere Asset-Loader...";
|
||||||
assetManager.registerLoader(com.jme3.scene.plugins.gltf.GltfLoader.class, "gltf");
|
assetManager.registerLoader(com.jme3.scene.plugins.gltf.GltfLoader.class, "gltf");
|
||||||
|
|||||||
@@ -237,7 +237,9 @@ public class WorldScene extends BaseAppState {
|
|||||||
com.jme3.asset.plugins.FileLocator.class);
|
com.jme3.asset.plugins.FileLocator.class);
|
||||||
} catch (Exception ignored) {}
|
} 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...");
|
BlightGame.status("Baue Beleuchtung und Himmel...");
|
||||||
buildLighting();
|
buildLighting();
|
||||||
|
|||||||
@@ -271,9 +271,13 @@ public class WorldObjectsState extends BaseAppState {
|
|||||||
initImpostor(lod2Node);
|
initImpostor(lod2Node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
treeNode.addControl(new ModelLodControl(
|
// ModelLodControl nur wenn tatsächliche LOD-Varianten vorhanden — sonst
|
||||||
app.getCamera(), lod0, lod1, lod2,
|
// würde das Objekt ab lod1Distance komplett ausgeblendet (targetSlot=-1).
|
||||||
m.lod1Distance() * lodFactor, m.lod2Distance() * lodFactor));
|
if (lod1 != null || lod2 != null) {
|
||||||
|
treeNode.addControl(new ModelLodControl(
|
||||||
|
app.getCamera(), lod0, lod1, lod2,
|
||||||
|
m.lod1Distance() * lodFactor, m.lod2Distance() * lodFactor));
|
||||||
|
}
|
||||||
return treeNode;
|
return treeNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -321,18 +325,24 @@ public class WorldObjectsState extends BaseAppState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Fallback: externe LOD-Dateien (lod1Path / lod2Path)
|
// Fallback: externe LOD-Dateien (lod1Path / lod2Path)
|
||||||
Node lodRoot = new Node("lodRoot_" + path);
|
// Nur wenn mindestens eine Datei tatsächlich angegeben ist — ohne Dateien würde
|
||||||
lodRoot.attachChild(spatial);
|
// ModelLodControl das Objekt ab lod1Distance komplett ausblenden (targetSlot=-1).
|
||||||
ModelLodControl ctrl = new ModelLodControl(
|
String lp1 = m.lod1Path() != null && !m.lod1Path().isBlank() ? m.lod1Path() : null;
|
||||||
assets, app.getCamera(),
|
String lp2 = m.lod2Path() != null && !m.lod2Path().isBlank() ? m.lod2Path() : null;
|
||||||
m.lod1Path(), m.lod2Path(),
|
if (lp1 != null || lp2 != null) {
|
||||||
m.lod1Distance() * lodFactor, m.lod2Distance() * lodFactor);
|
Node lodRoot = new Node("lodRoot_" + path);
|
||||||
ctrl.setLodLoadCallback(lod -> {
|
lodRoot.attachChild(spatial);
|
||||||
convertUnshadedToPbr(lod);
|
ModelLodControl ctrl = new ModelLodControl(
|
||||||
collectSceneLitMaterials(lod);
|
assets, app.getCamera(),
|
||||||
});
|
lp1, lp2,
|
||||||
lodRoot.addControl(ctrl);
|
m.lod1Distance() * lodFactor, m.lod2Distance() * lodFactor);
|
||||||
return lodRoot;
|
ctrl.setLodLoadCallback(lod -> {
|
||||||
|
convertUnshadedToPbr(lod);
|
||||||
|
collectSceneLitMaterials(lod);
|
||||||
|
});
|
||||||
|
lodRoot.addControl(ctrl);
|
||||||
|
return lodRoot;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return spatial;
|
return spatial;
|
||||||
|
|||||||