Animations-Import, Massenimport-Queue, Asset-Archivierung, Voxel-Refactor
- Animations-Import: GLB wird direkt vom Ursprungspfad geladen (kein Zwischenkopieren), J3O in clips/ gespeichert - RetargetingSystem: Translations-Tracks im Full-Retarget-Pfad erhalten (Hips-Y für sit_down) - AnimationLibrary: lädt nur J3O, Clip-Name wird bei applyTo() auf Library-Key umbenannt - SharedInput: animPreviewAddAnimPath → ConcurrentLinkedQueue animImportQueue (Massenimport-Fix) - EditorApp: archiveOriginal() archiviert Originaldateien nach assets/imported/<assettyp>/ - EditorApp: Animations-Unterknoten im Asset-Baum zeigen enthaltene Clip-Namen - Neue Animations-Clips: sit_down, get_up_sitting, sitting, pickup, sprinting u.a. - Voxel: VoxelChunkState entfernt, VoxelChunkNode/MarchingCubes überarbeitet - Map: Voxel-Chunks bereinigt, Terrain-Chunks aktualisiert Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 6.3 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 6.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
@@ -3,13 +3,10 @@ MaterialDef Voxel {
|
||||
MaterialParameters {
|
||||
Texture2D TexFlat
|
||||
Texture2D TexSteep
|
||||
Texture2D TexCeil
|
||||
Texture2D NormalMapFlat
|
||||
Texture2D NormalMapSteep
|
||||
Texture2D NormalMapCeil
|
||||
Texture2D DisplacementMapFlat
|
||||
Texture2D DisplacementMapSteep
|
||||
Texture2D DisplacementMapCeil
|
||||
Float TexScale : 8.0
|
||||
Float DisplacementScale : 0.3
|
||||
Float TessellationLevel : 4.0
|
||||
@@ -32,7 +29,6 @@ MaterialDef Voxel {
|
||||
Defines {
|
||||
HAS_NM_FLAT : NormalMapFlat
|
||||
HAS_NM_STEEP : NormalMapSteep
|
||||
HAS_NM_CEIL : NormalMapCeil
|
||||
HAS_LIGHTDIR : LightDir
|
||||
HAS_SCENE_LIGHT : SunColor
|
||||
DEBUG_NO_LIGHT : DebugNoLight
|
||||
@@ -60,10 +56,8 @@ MaterialDef Voxel {
|
||||
Defines {
|
||||
HAS_NM_FLAT : NormalMapFlat
|
||||
HAS_NM_STEEP : NormalMapSteep
|
||||
HAS_NM_CEIL : NormalMapCeil
|
||||
HAS_DISP_FLAT : DisplacementMapFlat
|
||||
HAS_DISP_STEEP : DisplacementMapSteep
|
||||
HAS_DISP_CEIL : DisplacementMapCeil
|
||||
HAS_LIGHTDIR : LightDir
|
||||
HAS_SCENE_LIGHT : SunColor
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,23 @@
|
||||
#Thu Jun 18 17:47:21 CEST 2026
|
||||
attachedEmitters.count=0
|
||||
attachedLight.0=0.00000|0.10000|0.00000|0.80000|1.00000|0.80000|12.00000|50.00000
|
||||
attachedLights.count=1
|
||||
castShadow=true
|
||||
category=
|
||||
cullDistance=120.0
|
||||
lod1Distance=30.0
|
||||
lod1Path=
|
||||
lod2Distance=80.0
|
||||
lod2Path=
|
||||
name=Höhlenkristall1
|
||||
pivotOffsetY=0.0
|
||||
placementOffsetY=0.0
|
||||
randomScaleMax=1.0
|
||||
randomScaleMin=1.0
|
||||
receiveShadow=true
|
||||
scaleX=1.0
|
||||
scaleY=1.0
|
||||
scaleZ=1.0
|
||||
solid=true
|
||||
tags=
|
||||
uniformScale=true
|
||||
@@ -0,0 +1,27 @@
|
||||
#Sat Jun 20 13:06:13 CEST 2026
|
||||
attachedEmitters.count=0
|
||||
attachedLights.count=0
|
||||
castShadow=true
|
||||
category=
|
||||
cullDistance=120.0
|
||||
interactableOffsetX=0.0
|
||||
interactableOffsetY=0.6
|
||||
interactableOffsetZ=0.0
|
||||
interactableRotY=1.5707964
|
||||
interactableType=BENCH
|
||||
lod1Distance=30.0
|
||||
lod1Path=
|
||||
lod2Distance=80.0
|
||||
lod2Path=
|
||||
name=bank
|
||||
pivotOffsetY=0.0
|
||||
placementOffsetY=0.0
|
||||
randomScaleMax=1.0
|
||||
randomScaleMin=1.0
|
||||
receiveShadow=true
|
||||
scaleX=1.0
|
||||
scaleY=1.0
|
||||
scaleZ=1.0
|
||||
solid=true
|
||||
tags=
|
||||
uniformScale=true
|
||||
BIN
blight-assets/src/main/resources/Models/imported/bank1.j3o
Normal file
BIN
blight-assets/src/main/resources/Models/imported/bank1.j3o
Normal file
Binary file not shown.
@@ -0,0 +1,27 @@
|
||||
#Sat Jun 20 14:30:44 CEST 2026
|
||||
attachedEmitters.count=0
|
||||
attachedLights.count=0
|
||||
castShadow=true
|
||||
category=
|
||||
cullDistance=120.0
|
||||
interactableOffsetX=0.0
|
||||
interactableOffsetY=0.5
|
||||
interactableOffsetZ=0.0
|
||||
interactableRotY=1.5707964
|
||||
interactableType=BENCH
|
||||
lod1Distance=30.0
|
||||
lod1Path=
|
||||
lod2Distance=80.0
|
||||
lod2Path=
|
||||
name=bank1
|
||||
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
|
||||
Binary file not shown.
@@ -1,6 +1,5 @@
|
||||
uniform sampler2D m_TexFlat;
|
||||
uniform sampler2D m_TexSteep;
|
||||
uniform sampler2D m_TexCeil;
|
||||
uniform float m_TexScale;
|
||||
|
||||
#ifdef HAS_NM_FLAT
|
||||
@@ -9,9 +8,6 @@ uniform sampler2D m_NormalMapFlat;
|
||||
#ifdef HAS_NM_STEEP
|
||||
uniform sampler2D m_NormalMapSteep;
|
||||
#endif
|
||||
#ifdef HAS_NM_CEIL
|
||||
uniform sampler2D m_NormalMapCeil;
|
||||
#endif
|
||||
|
||||
in vec3 vWorldPos;
|
||||
in vec3 vNormal;
|
||||
@@ -55,27 +51,24 @@ void main() {
|
||||
vec2 uvY = vWorldPos.xz / m_TexScale;
|
||||
vec2 uvZ = vWorldPos.xy / m_TexScale;
|
||||
|
||||
// Flach ab ~11° Gefälle (20% grade, normal.y≈0.98); Fels darunter.
|
||||
// Flach ab ~11° Gefälle (20% grade, normal.y≈0.98); alles andere Fels.
|
||||
float flatBlend = smoothstep(0.94, 0.99, vNormal.y);
|
||||
float ceilBlend = 1.0 - smoothstep(-0.6, -0.3, vNormal.y);
|
||||
float steepBlend = max(0.0, 1.0 - flatBlend - ceilBlend);
|
||||
float steepBlend = 1.0 - flatBlend;
|
||||
|
||||
// Flat: reines XZ-UV wie das Terrain (uvY = worldPos.xz / texScale), kein Triplanar.
|
||||
// Steep/Ceil: Triplanar bleibt, da es dort keine eindeutige Projektion gibt.
|
||||
// Steep: Triplanar für alle nicht-flachen Flächen inkl. Decken und Tunnelwände.
|
||||
vec4 col = texture(m_TexFlat, uvY) * flatBlend
|
||||
+ triplanar(m_TexSteep, uvX, uvY, uvZ, bw) * steepBlend
|
||||
+ triplanar(m_TexCeil, uvX, uvY, uvZ, bw) * ceilBlend;
|
||||
+ triplanar(m_TexSteep, uvX, uvY, uvZ, bw) * steepBlend;
|
||||
|
||||
// Geometrie-Normale für Beleuchtung, ggf. durch Normal-Map ersetzt.
|
||||
vec3 N = normalize(vNormal);
|
||||
|
||||
#if defined(HAS_NM_FLAT) || defined(HAS_NM_STEEP) || defined(HAS_NM_CEIL)
|
||||
#if defined(HAS_NM_FLAT) || defined(HAS_NM_STEEP)
|
||||
vec3 pertN = vec3(0.0);
|
||||
float totalBlend = 0.0;
|
||||
#ifdef HAS_NM_FLAT
|
||||
if (flatBlend > 0.001) {
|
||||
vec3 nmFlat = texture(m_NormalMapFlat, uvY).rgb * 2.0 - 1.0;
|
||||
// Y-Projektion RNM (identisch mit triplanarNormal Y-Achse bei bw.y=1)
|
||||
nmFlat = vec3(nmFlat.xy + N.xz, abs(nmFlat.z) * N.y);
|
||||
pertN += normalize(nmFlat.xzy) * flatBlend;
|
||||
totalBlend += flatBlend;
|
||||
@@ -86,12 +79,6 @@ void main() {
|
||||
pertN += triplanarNormal(m_NormalMapSteep, uvX, uvY, uvZ, bw, N) * steepBlend;
|
||||
totalBlend += steepBlend;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAS_NM_CEIL
|
||||
if (ceilBlend > 0.001) {
|
||||
pertN += triplanarNormal(m_NormalMapCeil, uvX, uvY, uvZ, bw, N) * ceilBlend;
|
||||
totalBlend += ceilBlend;
|
||||
}
|
||||
#endif
|
||||
if (totalBlend > 0.001) {
|
||||
N = normalize(pertN / totalBlend);
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
blight-assets/src/main/resources/animations/clips/pickup.j3o
Normal file
BIN
blight-assets/src/main/resources/animations/clips/pickup.j3o
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
blight-assets/src/main/resources/animations/clips/sit_down.j3o
Normal file
BIN
blight-assets/src/main/resources/animations/clips/sit_down.j3o
Normal file
Binary file not shown.
BIN
blight-assets/src/main/resources/animations/clips/sitting.j3o
Normal file
BIN
blight-assets/src/main/resources/animations/clips/sitting.j3o
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
blight-assets/src/main/resources/animations/clips/sprinting.j3o
Normal file
BIN
blight-assets/src/main/resources/animations/clips/sprinting.j3o
Normal file
Binary file not shown.
Binary file not shown.
BIN
blight-assets/src/main/resources/animations/clips/standup.j3o
Normal file
BIN
blight-assets/src/main/resources/animations/clips/standup.j3o
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,23 +1,33 @@
|
||||
{
|
||||
"clips": [
|
||||
"get_up_sitting",
|
||||
"idle",
|
||||
"idle_jump",
|
||||
"pickup",
|
||||
"running",
|
||||
"running_jump",
|
||||
"sprint",
|
||||
"sit_down",
|
||||
"sitting",
|
||||
"sitting_floor",
|
||||
"sprinting",
|
||||
"stand_up",
|
||||
"tpose",
|
||||
"walking",
|
||||
"pickup"
|
||||
"walking"
|
||||
],
|
||||
"actionMap": {
|
||||
"DEFAULT": "tpose",
|
||||
"IDLE": "idle",
|
||||
"WALK": "walking",
|
||||
"RUN": "running",
|
||||
"SPRINT": "sprint",
|
||||
"JUMP": "idle_jump",
|
||||
"SPRINT": "sprinting",
|
||||
"RUNNING_JUMP": "running_jump",
|
||||
"PICK_UP": "pickup"
|
||||
}
|
||||
"JUMP": "idle_jump",
|
||||
"PICK_UP": "pickup",
|
||||
"SIT_DOWN": "sit_down",
|
||||
"SIT_UP": "stand_up",
|
||||
"SITTING": "sitting"
|
||||
},
|
||||
"previewModelPath": "Models/Chars/mainchar.j3o",
|
||||
"sinkMap": {},
|
||||
"anchorBoneMap": {}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
{
|
||||
"clips": [
|
||||
"idle",
|
||||
"idle_jump",
|
||||
"running",
|
||||
"running_jump",
|
||||
"sprint",
|
||||
"stand_up",
|
||||
"tpose",
|
||||
"walking"
|
||||
],
|
||||
"actionMap": {
|
||||
"DEFAULT": "tpose",
|
||||
"IDLE": "idle",
|
||||
"JUMP": "idle_jump",
|
||||
"WALK": "walking",
|
||||
"RUN": "running",
|
||||
"SPRINT": "sprint",
|
||||
"RUNNING_JUMP": "running_jump"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user