diff --git a/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java index ffa0b21d..3872ac37 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java @@ -215,14 +215,20 @@ public class RaceController extends Controller { RaceDataSource raceData = visualiserRace.getVisualiserRaceState().getRaceDataSource(); final GPSConverter gpsConverter = new GPSConverter(raceData, 450, 450); + SkyBox skyBox = new SkyBox(750, 200, 250, 0, 210); + viewSubjects.addAll(skyBox.getSkyBoxPlanes()); + // Set up sea surface SeaSurface sea = new SeaSurface(750, 200); sea.setX(250); sea.setZ(210); viewSubjects.add(sea); - SkyBox skyBox = new SkyBox(750, 200, 250, 0, 210); - viewSubjects.addAll(skyBox.getSkyBoxPlanes()); + // Set up sea surface overlay + SeaSurface seaOverlay = new SeaSurface(4000, 200); + seaOverlay.setX(250); + seaOverlay.setZ(210); + viewSubjects.add(seaOverlay); Boundary3D boundary3D = new Boundary3D(visualiserRace.getVisualiserRaceState().getRaceDataSource().getBoundary(), gpsConverter); for (Subject3D subject3D: boundary3D.getBoundaryNodes()){ diff --git a/racevisionGame/src/main/java/visualiser/layout/SeaSurface.java b/racevisionGame/src/main/java/visualiser/layout/SeaSurface.java index 57056556..e12898f9 100644 --- a/racevisionGame/src/main/java/visualiser/layout/SeaSurface.java +++ b/racevisionGame/src/main/java/visualiser/layout/SeaSurface.java @@ -17,6 +17,7 @@ import visualiser.utils.PerlinNoiseGenerator; * Creates a SeaSurface */ public class SeaSurface extends Subject3D { + private static Image image; /** * Sea Surface Constructor * @param size size of the sea surface (has to be square for simplicity's sake) @@ -24,6 +25,7 @@ public class SeaSurface extends Subject3D { */ public SeaSurface(int size, double freq){ super(createSurface(size, freq)); + image = new Image(getClass().getClassLoader().getResourceAsStream("images/skybox/ThickCloudsWaterDown2048.png")); } /** @@ -31,9 +33,11 @@ public class SeaSurface extends Subject3D { */ private static Shape3D createSurface(int size, double freq){ float[][] noiseArray = PerlinNoiseGenerator.createNoise(size, freq); - Image diffuseMap = createImage(noiseArray.length, noiseArray); + Image diffuseMap = createImage(noiseArray.length, noiseArray); //image PhongMaterial material = new PhongMaterial(); + material.setDiffuseColor(Color.web("#FFFFFF")); + material.setSpecularColor(Color.web("#000000")); material.setDiffuseMap(diffuseMap); Plane3D seaPlane = new Plane3D(noiseArray.length, noiseArray.length, 10, 10); diff --git a/racevisionGame/src/main/java/visualiser/layout/SkyBox.java b/racevisionGame/src/main/java/visualiser/layout/SkyBox.java index 1f8192ec..27943b2c 100644 --- a/racevisionGame/src/main/java/visualiser/layout/SkyBox.java +++ b/racevisionGame/src/main/java/visualiser/layout/SkyBox.java @@ -2,13 +2,10 @@ package visualiser.layout; import javafx.geometry.Point3D; import javafx.scene.image.Image; -import javafx.scene.image.PixelWriter; -import javafx.scene.image.WritableImage; import javafx.scene.paint.Color; import javafx.scene.paint.PhongMaterial; import javafx.scene.shape.MeshView; import javafx.scene.transform.Rotate; -import visualiser.utils.PerlinNoiseGenerator; import java.util.ArrayList; import java.util.List; @@ -22,6 +19,8 @@ public class SkyBox { private double y; private double z; private double freq; + private double yshift; + private double clipOverlap; private List skyBoxPlanes = new ArrayList<>(); public SkyBox(int edgeLength, double freq, double x, double y, double z) { @@ -30,6 +29,8 @@ public class SkyBox { this.y = y; this.z = z; this.freq = freq; + this.yshift = -size/64; + clipOverlap = 3; makeSkyBox(); } @@ -39,17 +40,17 @@ public class SkyBox { addBack(); addLeft(); addRight(); - addSeaOverlay(); + //addSeaOverlay(); } private void addTop() { - MeshView surface = makeSurface(new Image(getClass().getClassLoader().getResourceAsStream("images/skybox/skyTop.png"))); + MeshView surface = makeSurface(new Image(getClass().getClassLoader().getResourceAsStream("images/skybox/ThickCloudsWaterUp2048.png"))); surface.setRotationAxis(new Point3D(0, 0, 1)); surface.setRotate(180); surface.setTranslateX(x); - surface.setTranslateY(y - size + 1); + surface.setTranslateY(y - size/2 + yshift + clipOverlap); surface.setTranslateZ(z); Subject3D top = new SkyBoxPlane(surface); @@ -57,7 +58,7 @@ public class SkyBox { } private void addRight() { - MeshView surface = makeSurface(new Image(getClass().getClassLoader().getResourceAsStream("images/skybox/skyRight.png"))); + MeshView surface = makeSurface(new Image(getClass().getClassLoader().getResourceAsStream("images/skybox/ThickCloudsWaterRight2048.png"))); surface.setTranslateX(size/2); surface.setTranslateY(size/2); @@ -67,8 +68,8 @@ public class SkyBox { surface.setTranslateY(-size/2); surface.setTranslateX(x); - surface.setTranslateY(y - size/2); - surface.setTranslateZ(z + size/2 - 1); + surface.setTranslateY(y + yshift); + surface.setTranslateZ(z + size/2 - clipOverlap); Subject3D right = new SkyBoxPlane(surface); @@ -76,7 +77,7 @@ public class SkyBox { } private void addLeft() { - MeshView surface = makeSurface(new Image(getClass().getClassLoader().getResourceAsStream("images/skybox/skyLeft.png"))); + MeshView surface = makeSurface(new Image(getClass().getClassLoader().getResourceAsStream("images/skybox/ThickCloudsWaterLeft2048.png"))); surface.setTranslateX(size/2); surface.setTranslateY(size/2); @@ -89,8 +90,8 @@ public class SkyBox { surface.setScaleZ(-1); surface.setTranslateX(x); - surface.setTranslateY(y - size/2); - surface.setTranslateZ(z - size/2 + 1); + surface.setTranslateY(y + yshift); + surface.setTranslateZ(z - size/2 + clipOverlap); Subject3D left = new SkyBoxPlane(surface); @@ -98,7 +99,7 @@ public class SkyBox { } private void addBack() { - MeshView surface = makeSurface(new Image(getClass().getClassLoader().getResourceAsStream("images/skybox/skyBack.png"))); + MeshView surface = makeSurface(new Image(getClass().getClassLoader().getResourceAsStream("images/skybox/ThickCloudsWaterBack2048.png"))); surface.getTransforms().add(new Rotate(90, 0, 0)); surface.setRotationAxis(new Point3D(1, 0, 0)); @@ -107,8 +108,8 @@ public class SkyBox { surface.setScaleY(-1); surface.setScaleZ(-1); - surface.setTranslateX(x - size/2 + 1); - surface.setTranslateY(y - size/2); + surface.setTranslateX(x - size/2 + clipOverlap); + surface.setTranslateY(y + yshift); surface.setTranslateZ(z); Subject3D back = new SkyBoxPlane(surface); @@ -116,7 +117,7 @@ public class SkyBox { } private void addFront() { - MeshView surface = makeSurface(new Image(getClass().getClassLoader().getResourceAsStream("images/skybox/skyFront.png"))); + MeshView surface = makeSurface(new Image(getClass().getClassLoader().getResourceAsStream("images/skybox/ThickCloudsWaterFront2048.png"))); surface.setTranslateX(size/2); surface.setTranslateY(size/2); @@ -125,8 +126,8 @@ public class SkyBox { surface.setTranslateX(-size/2); surface.setTranslateY(-size/2); - surface.setTranslateX(x + size/2 - 1); - surface.setTranslateY(y - size/2); + surface.setTranslateX(x + size/2 - clipOverlap); + surface.setTranslateY(y + yshift); surface.setTranslateZ(z); Subject3D front = new SkyBoxPlane(surface); @@ -136,9 +137,9 @@ public class SkyBox { private MeshView makeSurface(Image diffuseMap) { PhongMaterial material = new PhongMaterial(); - //material.setDiffuseColor(Color.BLUE); + material.setDiffuseColor(Color.web("#FFFFFF")); + material.setSpecularColor(Color.web("#000000")); material.setDiffuseMap(diffuseMap); - //material.setSpecularColor(Color.WHITE); Plane3D plane = new Plane3D(size, size, 10, 10); MeshView surface = new MeshView(plane); diff --git a/racevisionGame/src/main/resources/images/skybox/ThickCloudsWaterBack2048.png b/racevisionGame/src/main/resources/images/skybox/ThickCloudsWaterBack2048.png new file mode 100644 index 00000000..833d3eb2 Binary files /dev/null and b/racevisionGame/src/main/resources/images/skybox/ThickCloudsWaterBack2048.png differ diff --git a/racevisionGame/src/main/resources/images/skybox/ThickCloudsWaterDown2048.png b/racevisionGame/src/main/resources/images/skybox/ThickCloudsWaterDown2048.png new file mode 100644 index 00000000..8c1572e0 Binary files /dev/null and b/racevisionGame/src/main/resources/images/skybox/ThickCloudsWaterDown2048.png differ diff --git a/racevisionGame/src/main/resources/images/skybox/ThickCloudsWaterFront2048.png b/racevisionGame/src/main/resources/images/skybox/ThickCloudsWaterFront2048.png new file mode 100644 index 00000000..0d9b4f52 Binary files /dev/null and b/racevisionGame/src/main/resources/images/skybox/ThickCloudsWaterFront2048.png differ diff --git a/racevisionGame/src/main/resources/images/skybox/ThickCloudsWaterLeft2048.png b/racevisionGame/src/main/resources/images/skybox/ThickCloudsWaterLeft2048.png new file mode 100644 index 00000000..d3fe44ad Binary files /dev/null and b/racevisionGame/src/main/resources/images/skybox/ThickCloudsWaterLeft2048.png differ diff --git a/racevisionGame/src/main/resources/images/skybox/ThickCloudsWaterRight2048.png b/racevisionGame/src/main/resources/images/skybox/ThickCloudsWaterRight2048.png new file mode 100644 index 00000000..09444f15 Binary files /dev/null and b/racevisionGame/src/main/resources/images/skybox/ThickCloudsWaterRight2048.png differ diff --git a/racevisionGame/src/main/resources/images/skybox/ThickCloudsWaterUp2048.png b/racevisionGame/src/main/resources/images/skybox/ThickCloudsWaterUp2048.png new file mode 100644 index 00000000..6c501e95 Binary files /dev/null and b/racevisionGame/src/main/resources/images/skybox/ThickCloudsWaterUp2048.png differ diff --git a/racevisionGame/src/main/resources/images/skybox/skyBack.png b/racevisionGame/src/main/resources/images/skybox1/skyBack.png similarity index 100% rename from racevisionGame/src/main/resources/images/skybox/skyBack.png rename to racevisionGame/src/main/resources/images/skybox1/skyBack.png diff --git a/racevisionGame/src/main/resources/images/skybox/skyFront.png b/racevisionGame/src/main/resources/images/skybox1/skyFront.png similarity index 100% rename from racevisionGame/src/main/resources/images/skybox/skyFront.png rename to racevisionGame/src/main/resources/images/skybox1/skyFront.png diff --git a/racevisionGame/src/main/resources/images/skybox/skyLeft.png b/racevisionGame/src/main/resources/images/skybox1/skyLeft.png similarity index 100% rename from racevisionGame/src/main/resources/images/skybox/skyLeft.png rename to racevisionGame/src/main/resources/images/skybox1/skyLeft.png diff --git a/racevisionGame/src/main/resources/images/skybox/skyRight.png b/racevisionGame/src/main/resources/images/skybox1/skyRight.png similarity index 100% rename from racevisionGame/src/main/resources/images/skybox/skyRight.png rename to racevisionGame/src/main/resources/images/skybox1/skyRight.png diff --git a/racevisionGame/src/main/resources/images/skybox/skyTop.png b/racevisionGame/src/main/resources/images/skybox1/skyTop.png similarity index 100% rename from racevisionGame/src/main/resources/images/skybox/skyTop.png rename to racevisionGame/src/main/resources/images/skybox1/skyTop.png