new skybox textures. Still need to fix two planes having a small gap between them. #story[1196]

main
Joseph Gardner 8 years ago
parent 0944e5729a
commit c23fcfcaa3

@ -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()){

@ -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);

@ -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<Subject3D> 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);

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Loading…
Cancel
Save