use of javafx.scene.paint.Color in project FXyzLib by Birdasaur.
the class SpheroidTest method start.
@Override
public void start(Stage stage) {
Group spheroidGroup = new Group();
for (int i = 0; i < 50; i++) {
Random r = new Random();
//A lot of magic numbers in here that just artificially constrain the math
float randomMajorRadius = (float) ((r.nextFloat() * 300) + 50);
float randomMinorRadius = (float) ((r.nextFloat() * 300) + 50);
int randomDivisions = (int) ((r.nextFloat() * 64) + 1);
Color randomColor = new Color(r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble());
Spheroid sm = new Spheroid(randomDivisions, randomMajorRadius, randomMinorRadius, randomColor);
sm.setDrawMode(DrawMode.LINE);
double translationX = Math.random() * 1024 * 1.95;
if (Math.random() >= 0.5) {
translationX *= -1;
}
double translationY = Math.random() * 1024 * 1.95;
if (Math.random() >= 0.5) {
translationY *= -1;
}
double translationZ = Math.random() * 1024 * 1.95;
if (Math.random() >= 0.5) {
translationZ *= -1;
}
Translate translate = new Translate(translationX, translationY, translationZ);
Rotate rotateX = new Rotate(Math.random() * 360, Rotate.X_AXIS);
Rotate rotateY = new Rotate(Math.random() * 360, Rotate.Y_AXIS);
Rotate rotateZ = new Rotate(Math.random() * 360, Rotate.Z_AXIS);
sm.getTransforms().addAll(translate, rotateX, rotateY, rotateZ);
spheroidGroup.getChildren().add(sm);
}
root.getChildren().add(spheroidGroup);
System.out.println(spheroidGroup.getChildren().size());
camera = new PerspectiveCamera(true);
cameraTransform.setTranslate(0, 0, 0);
cameraTransform.getChildren().addAll(camera);
camera.setNearClip(0.1);
camera.setFarClip(10000.0);
camera.setFieldOfView(42);
camera.setTranslateZ(cameraDistance);
cameraTransform.ry.setAngle(-45.0);
cameraTransform.rx.setAngle(-10.0);
//add a Point Light for better viewing of the grid coordinate system
PointLight light = new PointLight(Color.WHITE);
cameraTransform.getChildren().add(light);
light.setTranslateX(camera.getTranslateX());
light.setTranslateY(camera.getTranslateY());
light.setTranslateZ(camera.getTranslateZ());
root.getChildren().add(cameraTransform);
Scene scene = new Scene(new StackPane(root), 1024, 668, true, SceneAntialiasing.BALANCED);
scene.setCamera(camera);
scene.setFill(Color.BLACK);
initFirstPersonControls(scene);
stage.setTitle("Hello World!");
stage.setScene(scene);
stage.show();
}
use of javafx.scene.paint.Color in project FXyzLib by Birdasaur.
the class TorusTest method start.
@Override
public void start(Stage primaryStage) throws Exception {
Group sceneRoot = new Group();
Scene scene = new Scene(sceneRoot, sceneWidth, sceneHeight, true, SceneAntialiasing.BALANCED);
scene.setFill(Color.BLACK);
//Setup camera and scatterplot cubeviewer
camera = new PerspectiveCamera(true);
//setup camera transform for rotational support
cameraTransform.setTranslate(0, 0, 0);
cameraTransform.getChildren().add(camera);
camera.setNearClip(0.1);
camera.setFarClip(10000.0);
camera.setTranslateZ(-5000);
cameraTransform.ry.setAngle(-45.0);
cameraTransform.rx.setAngle(-10.0);
//add a Point Light for better viewing of the grid coordinate system
PointLight light = new PointLight(Color.WHITE);
cameraTransform.getChildren().add(light);
light.setTranslateX(camera.getTranslateX());
light.setTranslateY(camera.getTranslateY());
light.setTranslateZ(camera.getTranslateZ());
scene.setCamera(camera);
//Make a bunch of semi random Torusesessses(toroids?) and stuff
Group torusGroup = new Group();
torusGroup.getChildren().add(cameraTransform);
for (int i = 0; i < 30; i++) {
Random r = new Random();
//A lot of magic numbers in here that just artificially constrain the math
float randomRadius = (float) ((r.nextFloat() * 300) + 50);
float randomTubeRadius = (float) ((r.nextFloat() * 100) + 1);
int randomTubeDivisions = (int) ((r.nextFloat() * 64) + 1);
int randomRadiusDivisions = (int) ((r.nextFloat() * 64) + 1);
Color randomColor = new Color(r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble());
Torus torus = new Torus(randomTubeDivisions, randomRadiusDivisions, randomRadius, randomTubeRadius, randomColor);
double translationX = Math.random() * sceneWidth * 1.95;
if (Math.random() >= 0.5)
translationX *= -1;
double translationY = Math.random() * sceneWidth * 1.95;
if (Math.random() >= 0.5)
translationY *= -1;
double translationZ = Math.random() * sceneWidth * 1.95;
if (Math.random() >= 0.5)
translationZ *= -1;
Translate translate = new Translate(translationX, translationY, translationZ);
Rotate rotateX = new Rotate(Math.random() * 360, Rotate.X_AXIS);
Rotate rotateY = new Rotate(Math.random() * 360, Rotate.Y_AXIS);
Rotate rotateZ = new Rotate(Math.random() * 360, Rotate.Z_AXIS);
torus.getTransforms().addAll(translate, rotateX, rotateY, rotateZ);
//torus.getTransforms().add(translate);
torusGroup.getChildren().add(torus);
}
sceneRoot.getChildren().addAll(torusGroup);
//First person shooter keyboard movement
scene.setOnKeyPressed(event -> {
double change = 10.0;
if (event.isShiftDown()) {
change = 50.0;
}
KeyCode keycode = event.getCode();
if (keycode == KeyCode.W) {
camera.setTranslateZ(camera.getTranslateZ() + change);
}
if (keycode == KeyCode.S) {
camera.setTranslateZ(camera.getTranslateZ() - change);
}
if (keycode == KeyCode.A) {
camera.setTranslateX(camera.getTranslateX() - change);
}
if (keycode == KeyCode.D) {
camera.setTranslateX(camera.getTranslateX() + change);
}
});
scene.setOnMousePressed((MouseEvent me) -> {
mousePosX = me.getSceneX();
mousePosY = me.getSceneY();
mouseOldX = me.getSceneX();
mouseOldY = me.getSceneY();
});
scene.setOnMouseDragged((MouseEvent me) -> {
mouseOldX = mousePosX;
mouseOldY = mousePosY;
mousePosX = me.getSceneX();
mousePosY = me.getSceneY();
mouseDeltaX = (mousePosX - mouseOldX);
mouseDeltaY = (mousePosY - mouseOldY);
double modifier = 10.0;
double modifierFactor = 0.1;
if (me.isControlDown()) {
modifier = 0.1;
}
if (me.isShiftDown()) {
modifier = 50.0;
}
if (me.isPrimaryButtonDown()) {
// +
cameraTransform.ry.setAngle(((cameraTransform.ry.getAngle() + mouseDeltaX * modifierFactor * modifier * 2.0) % 360 + 540) % 360 - 180);
// -
cameraTransform.rx.setAngle(((cameraTransform.rx.getAngle() - mouseDeltaY * modifierFactor * modifier * 2.0) % 360 + 540) % 360 - 180);
} else if (me.isSecondaryButtonDown()) {
double z = camera.getTranslateZ();
double newZ = z + mouseDeltaX * modifierFactor * modifier;
camera.setTranslateZ(newZ);
} else if (me.isMiddleButtonDown()) {
// -
cameraTransform.t.setX(cameraTransform.t.getX() + mouseDeltaX * modifierFactor * modifier * 0.3);
// -
cameraTransform.t.setY(cameraTransform.t.getY() + mouseDeltaY * modifierFactor * modifier * 0.3);
}
});
primaryStage.setTitle("F(X)yz TorusTest");
primaryStage.setScene(scene);
primaryStage.show();
}
use of javafx.scene.paint.Color in project FXyzLib by Birdasaur.
the class TrapezoidTest method generateShapes.
private void generateShapes() {
for (int i = 0; i < 50; i++) {
Random r = new Random();
//A lot of magic numbers in here that just artificially constrain the math
double randomSmallSize = (double) ((r.nextDouble() * 50) + 10);
double randomBigSize = (double) ((r.nextDouble() * 100) + 50);
double randomHeight = (double) ((r.nextDouble() * 50) + 25);
double randomDepth = (double) ((r.nextDouble() * 50) + 25);
Color randomColor = new Color(r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble());
Trapezoid trapezoid = new Trapezoid(randomSmallSize, randomBigSize, randomHeight, randomDepth, randomColor);
// Trapezoid trapezoid = new Trapezoid(50, 100, 50, 50, randomColor);
trapezoid.setEmissiveLightingColor(randomColor);
trapezoid.setEmissiveLightingOn(r.nextBoolean());
trapezoid.setDrawMode(r.nextBoolean() ? DrawMode.FILL : DrawMode.LINE);
double translationX = Math.random() * 1024;
if (Math.random() >= 0.5) {
translationX *= -1;
}
double translationY = Math.random() * 1024;
if (Math.random() >= 0.5) {
translationY *= -1;
}
double translationZ = Math.random() * 1024;
if (Math.random() >= 0.5) {
translationZ *= -1;
}
Translate translate = new Translate(translationX, translationY, translationZ);
Rotate rotateX = new Rotate(Math.random() * 360, Rotate.X_AXIS);
Rotate rotateY = new Rotate(Math.random() * 360, Rotate.Y_AXIS);
Rotate rotateZ = new Rotate(Math.random() * 360, Rotate.Z_AXIS);
trapezoid.getTransforms().addAll(translate, rotateX, rotateY, rotateZ);
shapeGroup.getChildren().add(trapezoid);
}
}
use of javafx.scene.paint.Color in project FXyzLib by Birdasaur.
the class OBJWriter method exportMesh.
public void exportMesh() {
File objFile = new File(fileName + ".obj");
try {
writer = new BufferedWriter(new FileWriter(objFile));
writer.write("# Material" + newline);
writer.write("mtllib " + fileName + ".mtl" + newline);
points0 = new float[mesh.getPoints().size()];
mesh.getPoints().toArray(points0);
List<Point3D> points1 = IntStream.range(0, points0.length / 3).mapToObj(i -> new Point3D(points0[3 * i], points0[3 * i + 1], points0[3 * i + 2])).collect(Collectors.toList());
writer.write("# Vertices (" + points1.size() + ")" + newline);
points1.forEach(p -> {
try {
writer.write("v " + p.x + " " + p.y + " " + p.z + "" + newline);
} catch (IOException ex) {
System.out.println("Error writting vertex " + ex);
}
});
writer.write("# End Vertices" + newline);
writer.write(newline);
texCoord0 = new float[mesh.getTexCoords().size()];
mesh.getTexCoords().toArray(texCoord0);
List<Point2D> texCoord1 = IntStream.range(0, texCoord0.length / 2).mapToObj(i -> new Point2D(texCoord0[2 * i], texCoord0[2 * i + 1])).collect(Collectors.toList());
writer.write("# Textures Coordinates (" + texCoord1.size() + ")" + newline);
texCoord1.forEach(t -> {
try {
writer.write("vt " + ((float) t.getX()) + " " + ((float) (1d - t.getY())) + "" + newline);
} catch (IOException ex) {
System.out.println("Error writting texture coordinate " + ex);
}
});
writer.write("# End Texture Coordinates " + newline);
writer.write(newline);
faces0 = new int[mesh.getFaces().size()];
mesh.getFaces().toArray(faces0);
List<Integer[]> faces1 = IntStream.range(0, faces0.length / 6).mapToObj(i -> new Integer[] { faces0[6 * i], faces0[6 * i + 1], faces0[6 * i + 2], faces0[6 * i + 3], faces0[6 * i + 4], faces0[6 * i + 5] }).collect(Collectors.toList());
writer.write("# Faces (" + faces1.size() + ")" + newline);
writer.write("# Material" + newline);
writer.write("usemtl " + fileName + "" + newline);
sm0 = new int[mesh.getFaces().size()];
mesh.getFaceSmoothingGroups().toArray(sm0);
if (sm0[0] > 0) {
writer.write("s " + sm0[0] + "" + newline);
}
AtomicInteger count = new AtomicInteger();
faces1.forEach(f -> {
try {
writer.write("f " + (f[0] + 1) + "/" + (f[1] + 1) + " " + (f[2] + 1) + "/" + (f[3] + 1) + " " + (f[4] + 1) + "/" + (f[5] + 1) + "" + newline);
if (sm0[count.getAndIncrement()] != sm0[count.get()]) {
writer.write("s " + (sm0[count.get()] > 0 ? sm0[count.get()] : "off") + "" + newline);
}
} catch (IOException ex) {
System.out.println("Error writting face " + ex);
}
});
writer.write("# End Faces " + newline);
writer.write(newline);
} catch (IOException io) {
System.out.println("Error creating writer obj " + io);
} finally {
try {
if (writer != null) {
writer.close();
}
} catch (Exception e) {
}
}
File mtlFile = new File(fileName + ".mtl");
try {
writer = new BufferedWriter(new FileWriter(mtlFile));
writer.write("# Material " + fileName + "" + newline);
writer.write("newmtl " + fileName + "" + newline);
// Illumination [0-10]
writer.write("illum 4" + newline);
// diffuse color black
writer.write("Kd " + diffuseColor + "" + newline);
// ambient color
writer.write("Ka 0.10 0.10 0.10" + newline);
// Transmission filter
writer.write("Tf 1.00 1.00 1.00" + newline);
if (diffuseMap != null) {
writer.write("map_Kd " + diffuseMap + "" + newline);
}
// optical density
writer.write("Ni 1.00" + newline);
// specular reflectivity
writer.write("Ks 1.00 1.00 1.00" + newline);
// specular exponent
writer.write("Ns 32.00" + newline);
} catch (IOException io) {
System.out.println("Error creating writer mtl " + io);
} finally {
try {
if (writer != null) {
writer.close();
}
} catch (Exception e) {
}
}
}
use of javafx.scene.paint.Color in project intellij-community by JetBrains.
the class Main method foo.
void foo() {
Color color1 = new Color(0, 0.251, 0.502, 1);
Color color2 = Color.color(0.251, 0.502, 1, 0);
Color color3 = Color.color(0.502, 1, 0, 0.251);
Color color4 = color(1, 0, 0.251, 0.502);
Color color5 = color(0, 0.251, 0.502);
Color gray1 = Color.color(0.251, 0.502, 1, 0);
Color gray2 = Color.color(0.502, 1, 0, 0.251);
Color gray3 = color(1, 0, 0.251, 0.502);
Color gray4 = color(0, 0.251, 0.502);
Color rgb1 = Color.rgb(64, 128, 255, 0);
Color rgb2 = rgb(128, 255, 0, 0.251);
Color rgb3 = Color.rgb(255, 0, 64, 0.502);
Color rgb4 = rgb(0, 64, 128);
Color grayRgb1 = Color.rgb(64, 128, 255, 0);
Color grayRgb2 = rgb(128, 255, 0, 0.251);
Color grayRgb3 = Color.rgb(255, 0, 64, 0.502);
Color grayRgb4 = rgb(0, 64, 128);
Color hsb1 = Color.hsb(219.8953, 0.749, 1, 0);
Color hsb2 = hsb(89.8824, 1, 1, 0.251);
Color hsb3 = Color.hsb(344.9412, 1, 1, 0.502);
Color hsb4 = hsb(210, 1, 0.502);
Color hsb5 = hsb(219.8953, 0.749, 1, 0);
}
Aggregations