From 786e96373d4c2e8d68bbf26a42996a52623a589a Mon Sep 17 00:00:00 2001 From: austin Date: Fri, 22 Nov 2024 20:55:18 -0500 Subject: [PATCH] foliage placement fixes --- docs/src/progress/renderertodo.md | 1 + .../electrosphere/client/terrain/foliage/FoliageModel.java | 2 +- .../terrain/generation/voxelphase/NoiseVoxelGen.java | 7 ++++--- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 81dff2bf..a3c80577 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1127,6 +1127,7 @@ Small noise sampling refactor Fix test data for main menu render test Change voxel weight reporting from server to align with foliage Use jenkins data for unit test temporarily +Disable tunnel noise to align foliage better + adjust manual value for foliage placement # TODO diff --git a/src/main/java/electrosphere/client/terrain/foliage/FoliageModel.java b/src/main/java/electrosphere/client/terrain/foliage/FoliageModel.java index 282401ab..0e754144 100644 --- a/src/main/java/electrosphere/client/terrain/foliage/FoliageModel.java +++ b/src/main/java/electrosphere/client/terrain/foliage/FoliageModel.java @@ -349,7 +349,7 @@ public class FoliageModel { //determine quadrant we're placing in double offsetY = 0; boolean addBlade = false; - double manualAdjustment = -0.55; + double manualAdjustment = -0.50; // System.out.println(relativePositionOnGridX + " " + relativePositionOnGridZ); //if we have heights for all four surrounding spots, interpolate for y value offsetY = diff --git a/src/main/java/electrosphere/server/terrain/generation/voxelphase/NoiseVoxelGen.java b/src/main/java/electrosphere/server/terrain/generation/voxelphase/NoiseVoxelGen.java index 7cbbfbf6..88ab62a3 100644 --- a/src/main/java/electrosphere/server/terrain/generation/voxelphase/NoiseVoxelGen.java +++ b/src/main/java/electrosphere/server/terrain/generation/voxelphase/NoiseVoxelGen.java @@ -51,12 +51,13 @@ public class NoiseVoxelGen implements VoxelGenerator { ) { double strideMultiplier = Math.pow(2,stride); double heightDiff = realY - surfaceHeight; - double sample = this.sampler.getValue(0, realX, realY, realZ); + double sample = 1.0;//this.sampler.getValue(0, realX, realY, realZ); if(sample <= 0){ voxel.weight = (float)(sample * 2); voxel.type = 0; return; } + sample = Math.min(sample,1.0); if(heightDiff < -strideMultiplier * SURFACE_VOXEL_WIDTH){ //below surface double finalSurface = sample; @@ -77,8 +78,8 @@ public class NoiseVoxelGen implements VoxelGenerator { if(surfacePercent > 1.0 || surfacePercent < 0){ throw new Error("surfacePercent " + surfacePercent + " " + realY + " " + surfaceHeight + " " + heightDiff + " " + strideMultiplier); } - double finalHeight = sample * surfacePercent; - voxel.weight = (float)finalHeight * 2 - 1; + double finalHeight = sample * surfacePercent * 2 - 1; + voxel.weight = (float)(finalHeight * sample); voxel.type = 2; } }