Java Examples for javafx.scene.SubScene
The following java examples will help you to understand the usage of javafx.scene.SubScene. These source code samples are taken from different open source projects.
Example 1
Project: code-of-gotham-master File: StageUtil.java View source code |
public Scene initScene(City city, PerspectiveCamera camera, String cityName) {
Group root = new Group();
buildCamera(root, camera);
root.getTransforms().addAll(rxBox, ryBox, rzBox);
subScene = new SubScene(root, SCENE_WIDTH, SCENE_HEIGHT, true, SceneAntialiasing.BALANCED);
subScene.setCamera(camera);
root.getChildren().add(city);
// 2D
BorderPane pane = new BorderPane();
Pane toolBar = null;
try {
toolBar = new CityToolBarService().load(cityName);
} catch (IOException e) {
e.printStackTrace();
}
pane.setBottom(subScene);
pane.setTop(toolBar);
Scene scene = new Scene(pane, SCENE_WIDTH, SCENE_HEIGHT);
subScene.heightProperty().bind(scene.heightProperty());
subScene.widthProperty().bind(scene.widthProperty());
return scene;
}
Example 2
Project: cirmlive-master File: CiRMLive3d.java View source code |
public Parent createContent() { BorderPane p = new BorderPane(); HBox btBox = new HBox(50, leftBt, lookLeftBt, forwardBt, upBt, downBt, backBt, lookRightBt, rightBt); btBox.alignmentProperty().set(Pos.CENTER); p.setBottom(btBox); setUpButtons(); PerspectiveCamera camera = new PerspectiveCamera(true); camera.getTransforms().add(cameraTranslate); camera.getTransforms().add(cameraRotate); camera.setFieldOfView(50); camera.setFarClip(10000); camera.setNearClip(1); p.setDepthTest(DepthTest.ENABLE); BorderPane cirmLiveUI = cirmLive.createSceneContent(); cirmLiveUI.setCache(true); cirmLiveUI.setCacheShape(true); cirmLiveUI.setCacheHint(CacheHint.QUALITY); //cirmLiveUI.setSsetAlignment(camera, Pos.CENTER); //cirmLiveUI.setTranslateZ(500); //TODO root.getChildren().addAll(c, c2, c3); SubScene subScene = new SubScene(cirmLiveUI, 1600, 900, true, SceneAntialiasing.BALANCED); subScene.setFill(Color.CORAL); subScene.setCamera(camera); p.setCenter(subScene); return p; }
Example 3
Project: JacpFX-misc-master File: Demo4Component.java View source code |
@PostConstruct public void createUI() { Group sceneRoot = new Group(); SubScene scene = new SubScene(sceneRoot, sceneWidth, sceneHeight); scene.setFill(Color.GREEN); camera = new PerspectiveCamera(true); camera.setNearClip(0.1); camera.setFarClip(10000.0); camera.setTranslateZ(-1000); scene.setCamera(camera); Rotate xRotate = new Rotate(0, 0, 0, 0, Rotate.X_AXIS); Rotate yRotate = new Rotate(0, 0, 0, 0, Rotate.Y_AXIS); Rotate zRotate = new Rotate(0, 0, 0, 0, Rotate.Z_AXIS); camera.getTransforms().addAll(xRotate, yRotate, zRotate); scene.addEventHandler(MouseEvent.ANY, event -> { double mouseXnew = event.getSceneX(); double mouseYnew = event.getSceneY(); if (event.getEventType() == MouseEvent.MOUSE_DRAGGED) { double pitchRotate = xRotate.getAngle() + (mouseYnew - mouseYold) / rotateModifier; pitchRotate = pitchRotate > cameraYLimit ? cameraYLimit : pitchRotate; pitchRotate = pitchRotate < -cameraYLimit ? -cameraYLimit : pitchRotate; xRotate.setAngle(pitchRotate); double yawRotate = yRotate.getAngle() - (mouseXnew - mouseXold) / rotateModifier; yRotate.setAngle(yawRotate); } mouseXold = mouseXnew; mouseYold = mouseYnew; }); final Cylinder cylinder = new Cylinder(50, 100); cylinder.setRotationAxis(Rotate.X_AXIS); cylinder.setRotate(45); cylinder.setTranslateZ(-200); final PhongMaterial greenMaterial = new PhongMaterial(); greenMaterial.setDiffuseColor(Color.DARKGREEN); greenMaterial.setSpecularColor(Color.GREEN); final Box cube = new Box(50, 50, 50); cube.setMaterial(greenMaterial); final PhongMaterial redMaterial = new PhongMaterial(); redMaterial.setDiffuseColor(Color.DARKRED); redMaterial.setSpecularColor(Color.RED); final Sphere sphere = new Sphere(50); sphere.setMaterial(redMaterial); cube.setRotationAxis(Rotate.Y_AXIS); cube.setRotate(45); cube.setTranslateX(-150); cube.setTranslateY(-150); cube.setTranslateZ(-150); sphere.setTranslateX(150); sphere.setTranslateY(150); sphere.setTranslateZ(-150); scene.addEventHandler(MouseEvent.ANY, event -> { if (event.getEventType() == MouseEvent.MOUSE_PRESSED && event.isAltDown()) { PickResult pickResult = event.getPickResult(); if (pickResult != null) { Node node = pickResult.getIntersectedNode(); if (node != null) { node.setVisible(false); } } } }); final PhongMaterial blueMetal = new PhongMaterial(); blueMetal.setDiffuseColor(Color.DARKBLUE); blueMetal.setSpecularColor(Color.BLUE); cylinder.setMaterial(blueMetal); scene.setOnKeyPressed( event -> { double change = cameraQuantity; 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); } if (keycode == KeyCode.SPACE) { sphere.setVisible(true); cube.setVisible(true); cylinder.setVisible(true); } }); sceneRoot.getChildren().addAll(cylinder, cube, sphere); tab.getChildren().add(scene); this.log.info("run on start of Demo4Component "); }
Example 4
Project: FXyz-master File: ShapeBaseSample.java View source code |
private void buildSubScene() {
subScene = new SubScene(root, sceneWidth, sceneHeight, true, SceneAntialiasing.BALANCED);
//Color.web("#0d0d0d"));
subScene.setFill(Color.TRANSPARENT);
subScene.setCamera(camera);
subScene.setFocusTraversable(false);
//First person shooter keyboard movement
subScene.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);
}
});
subScene.setOnMousePressed((MouseEvent me) -> {
mousePosX = me.getSceneX();
mousePosY = me.getSceneY();
mouseOldX = me.getSceneX();
mouseOldY = me.getSceneY();
PickResult pr = me.getPickResult();
if (pr != null && pr.getIntersectedNode() != null && pr.getIntersectedNode() instanceof Sphere && pr.getIntersectedNode().getId().equals("knot")) {
distance = pr.getIntersectedDistance();
sphere = (Sphere) pr.getIntersectedNode();
isPicking.set(true);
vecIni = unProjectDirection(mousePosX, mousePosY, subScene.getWidth(), subScene.getHeight());
}
});
subScene.setOnMouseDragged((MouseEvent me) -> {
mouseOldX = mousePosX;
mouseOldY = mousePosY;
mousePosX = me.getSceneX();
mousePosY = me.getSceneY();
mouseDeltaX = (mousePosX - mouseOldX);
mouseDeltaY = (mousePosY - mouseOldY);
if (isPicking.get()) {
double modifier = (me.isControlDown() ? 0.01 : me.isAltDown() ? 1.0 : 0.1) * (30d / camera.getFieldOfView());
modifier *= (30d / camera.getFieldOfView());
vecPos = unProjectDirection(mousePosX, mousePosY, subScene.getWidth(), subScene.getHeight());
Point3D p = new Point3D(distance * (vecPos.x - vecIni.x), distance * (vecPos.y - vecIni.y), distance * (vecPos.z - vecIni.z));
sphere.getTransforms().add(new Translate(modifier * p.getX(), modifier * p.getY(), modifier * p.getZ()));
vecIni = vecPos;
} else {
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);
}
}
});
subScene.setOnMouseReleased((MouseEvent me) -> {
if (isPicking.get()) {
isPicking.set(false);
}
});
}
Example 5
Project: FXyzLib-master File: BillBoardBehaviorTest.java View source code |
private void createSubscene() {
subScene = new SubScene(root, 800, 600, true, SceneAntialiasing.BALANCED);
camera = new PerspectiveCamera(true);
cameraTransform.setTranslate(0, 0, 0);
cameraTransform.getChildren().addAll(camera);
camera.setNearClip(0.1);
camera.setFarClip(100000.0);
camera.setFieldOfView(35);
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);
subScene.setCamera(camera);
initFirstPersonControls(subScene);
skyBox = new Skybox(new Image("http://www.zfight.com/misc/images/textures/envmaps/violentdays_large.jpg"), 100000, camera);
//Make a bunch of semi random Torusesessses(toroids?) and stuff : from torustest
Group torusGroup = new Group();
for (int i = 0; i < 10; 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());
boolean ambientRandom = r.nextBoolean();
boolean fillRandom = r.nextBoolean();
if (i == 0) {
torusGroup.getChildren().add(bill);
}
TorusMesh torus = new TorusMesh(randomTubeDivisions, randomRadiusDivisions, randomRadius, randomTubeRadius);
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);
torus.getTransforms().addAll(translate, rotateX, rotateY, rotateZ);
//torus.getTransforms().add(translate);
torusGroup.getChildren().add(torus);
}
root.getChildren().addAll(skyBox, torusGroup);
rootPane.getChildren().add(subScene);
//Enable subScene resizing
subScene.widthProperty().bind(rootPane.widthProperty());
subScene.heightProperty().bind(rootPane.heightProperty());
subScene.setFocusTraversable(true);
}
Example 6
Project: JFXScad-master File: MainController.java View source code |
/**
* Initializes the controller class.
*
* @param url
* @param rb
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
//
codeArea.textProperty().addListener(( ov, oldText, newText) -> {
Matcher matcher = KEYWORD_PATTERN.matcher(newText);
int lastKwEnd = 0;
StyleSpansBuilder<Collection<String>> spansBuilder = new StyleSpansBuilder<>();
while (matcher.find()) {
spansBuilder.add(Collections.emptyList(), matcher.start() - lastKwEnd);
spansBuilder.add(Collections.singleton("keyword"), matcher.end() - matcher.start());
lastKwEnd = matcher.end();
}
spansBuilder.add(Collections.emptyList(), newText.length() - lastKwEnd);
codeArea.setStyleSpans(0, spansBuilder.create());
});
EventStream<Change<String>> textEvents = EventStreams.changesOf(codeArea.textProperty());
textEvents.reduceSuccessions(( a, b) -> b, Duration.ofMillis(500)).subscribe( code -> {
if (autoCompile) {
compile(code.getNewValue());
}
});
codeArea.replaceText("CSG cube = new Cube(2).toCSG()\n" + "CSG sphere = new Sphere(1.25).toCSG()\n" + "\n" + "cube.difference(sphere)");
editorContainer.setContent(codeArea);
subScene = new SubScene(viewGroup, 100, 100, true, SceneAntialiasing.BALANCED);
subScene.widthProperty().bind(viewContainer.widthProperty());
subScene.heightProperty().bind(viewContainer.heightProperty());
PerspectiveCamera subSceneCamera = new PerspectiveCamera(false);
subScene.setCamera(subSceneCamera);
viewContainer.getChildren().add(subScene);
}
Example 7
Project: LeapV2-master File: LeapV2.java View source code |
@Override public void start(Stage primaryStage) { listener = new LeapListener(); controller = new Controller(); controller.addListener(listener); AnchorPane pane = new AnchorPane(); Scene scene = new Scene(pane, 800, 600, Color.BEIGE); final PerspectiveCamera camera = new PerspectiveCamera(); camera.setFieldOfView(60); camera.getTransforms().addAll(cameraXRotate, cameraYRotate, cameraPosition); material = new PhongMaterial(); material.setDiffuseColor(Color.GAINSBORO); material.setSpecularColor(Color.rgb(30, 30, 30)); sphereMaterial = new PhongMaterial(); sphereMaterial.setDiffuseColor(Color.GAINSBORO); sphereMaterial.setSpecularColor(Color.rgb(30, 30, 30)); sphereMaterial.setSelfIlluminationMap(new Image(getClass().getResource("red.png").toExternalForm())); meshView = new Shape3D[3]; meshView[0] = new MeshView(buildTriangleMesh(20, 20, 30, true)); meshView[1] = new MeshView(buildTriangleMesh(20, 20, 30, false)); for (int i = 0; i < 2; i++) { meshView[i].setMaterial(material); meshView[i].setTranslateX(300); meshView[i].setTranslateY(i == 0 ? -300 : 0); meshView[i].setTranslateZ(i == 0 ? 0 : -300); meshView[i].setDrawMode(DrawMode.LINE); meshView[i].setCullFace(CullFace.NONE); } meshView[2] = new Sphere(60); meshView[2].setMaterial(material); meshView[2].setDrawMode(DrawMode.FILL); meshView[2].setCullFace(CullFace.BACK); meshView[2].setTranslateX(160); meshView[2].setTranslateY(-60); meshView[2].setTranslateZ(-160); sphereBounds = meshView[2].localToScene(meshView[2].getBoundsInLocal()); System.out.println("s0: " + meshView[2].getBoundsInLocal()); System.out.println("s: " + sphereBounds); final Group parent = new Group(meshView); root.getChildren().addAll(parent); final PointLight pointLight = new PointLight(Color.ANTIQUEWHITE); pointLight.setTranslateX(0); pointLight.setTranslateY(-800); pointLight.setTranslateZ(-600); Cylinder axisX = new Cylinder(5, 700); axisX.setRotationAxis(Rotate.Z_AXIS); axisX.setRotate(90d); axisX.setTranslateX(250d); root.getChildren().add(axisX); Cylinder axisY = new Cylinder(5, 700); axisY.setTranslateY(-250d); root.getChildren().add(axisY); Cylinder axisZ = new Cylinder(5, 700); axisZ.setRotationAxis(Rotate.X_AXIS); axisZ.setRotate(90d); axisZ.setTranslateZ(-250d); root.getChildren().add(axisZ); root.getChildren().addAll(pointLight); Group root3D = new Group(); root3D.getChildren().addAll(camera, root); SubScene subScene = new SubScene(root3D, 800, 600, true, SceneAntialiasing.BALANCED); subScene.setCamera(camera); pane.getChildren().addAll(subScene); final int minRoot = root.getChildren().size(); final PhongMaterial materialFinger = new PhongMaterial(); materialFinger.setDiffuseColor(Color.GOLDENROD); materialFinger.setSpecularColor(Color.rgb(50, 50, 50)); final PhongMaterial materialArm = new PhongMaterial(); materialArm.setDiffuseColor(Color.CORNSILK); materialArm.setSpecularColor(Color.rgb(30, 30, 30)); listener.doneListProperty().addListener(( ov, b, b1) -> { if (b1) { // First, get a fresh copy of the bones, arms & joints collection List<Bone> bones = listener.getBones(); List<Arm> arms = listener.getArms(); List<Pair> joints = listener.getJoints(); touch.set(false); Platform.runLater(() -> { // Now, on the JavaFX thread if (root.getChildren().size() > minRoot) { // clean old bones root.getChildren().remove(minRoot, root.getChildren().size() - 1); } // Iterate over the list adding the bones to the scene // If the collection changes there won't be any concurrent exception // as we are iterating over its copy. bones.stream().filter(( bone) -> (bone.isValid() && bone.length() > 0)).forEach(( bone) -> { final Vector p = bone.center(); // create bone as a vertical cylinder and locate it at its center position Cylinder c = new Cylinder(bone.width() / 2, bone.length()); c.setMaterial(materialFinger); // translate and rotate the cylinder towards its direction final Vector v = bone.direction(); Vector cross = (new Vector(v.getX(), -v.getY(), -v.getZ())).cross(new Vector(0, -1, 0)); double ang = (new Vector(v.getX(), -v.getY(), -v.getZ())).angleTo(new Vector(0, -1, 0)); c.getTransforms().addAll(new Translate(200 + p.getX(), -p.getY(), -p.getZ()), new Rotate(-Math.toDegrees(ang), 0, 0, 0, new Point3D(cross.getX(), -cross.getY(), cross.getZ()))); // add bone to scene root.getChildren().add(c); Sphere s = new Sphere(bone.width() / 2f * 1.2); s.setMaterial(materialFinger); s.getTransforms().addAll(new Translate(200 + p.getX(), -p.getY() + bone.length() / 2d, -p.getZ()), new Rotate(-Math.toDegrees(ang), 0, -bone.length() / 2d, 0, new Point3D(cross.getX(), -cross.getY(), cross.getZ()))); // add bone to scene root.getChildren().add(s); Sphere s2 = new Sphere(bone.width() / 2f * 1.2); s2.setMaterial(materialFinger); s2.getTransforms().addAll(new Translate(200 + p.getX(), -p.getY() - bone.length() / 2d, -p.getZ()), new Rotate(-Math.toDegrees(ang), 0, bone.length() / 2d, 0, new Point3D(cross.getX(), -cross.getY(), cross.getZ()))); // add bone to scene root.getChildren().add(s2); if (sphereBounds.intersects(s.localToScene(s.getBoundsInLocal())) || sphereBounds.intersects(s.localToScene(s2.getBoundsInLocal()))) { touch.set(true); } }); if (touch.get()) { meshView[2].setMaterial(sphereMaterial); } else if (((PhongMaterial) meshView[2].getMaterial()).getSelfIlluminationMap() != null) { meshView[2].setMaterial(material); } arms.stream().filter( arm -> arm.isValid()).forEach( arm -> { final Vector p = arm.center(); Cylinder c = new Cylinder(arm.width() / 2, arm.elbowPosition().minus(arm.wristPosition()).magnitude()); c.setMaterial(materialArm); final Vector v = arm.direction(); Vector cross = (new Vector(v.getX(), -v.getY(), -v.getZ())).cross(new Vector(0, -1, 0)); double ang = (new Vector(v.getX(), -v.getY(), -v.getZ())).angleTo(new Vector(0, -1, 0)); c.getTransforms().addAll(new Translate(200 + p.getX(), -p.getY(), -p.getZ()), new Rotate(-Math.toDegrees(ang), 0, 0, 0, new Point3D(cross.getX(), -cross.getY(), cross.getZ()))); root.getChildren().add(c); }); joints.stream().forEach( joint -> { double length = joint.getV0().distanceTo(joint.getV1()); Cylinder c = new Cylinder(bones.get(0).width() / 4, length); c.setMaterial(materialArm); final Vector p = joint.getCenter(); final Vector v = joint.getDirection(); Vector cross = (new Vector(v.getX(), -v.getY(), -v.getZ())).cross(new Vector(0, -1, 0)); double ang = (new Vector(v.getX(), -v.getY(), -v.getZ())).angleTo(new Vector(0, -1, 0)); c.getTransforms().addAll(new Translate(200 + p.getX(), -p.getY(), -p.getZ()), new Rotate(-Math.toDegrees(ang), 0, 0, 0, new Point3D(cross.getX(), -cross.getY(), cross.getZ()))); root.getChildren().add(c); }); }); } }); scene.addEventHandler(MouseEvent.ANY, event -> { if (event.getEventType() == MouseEvent.MOUSE_PRESSED) { dragStartX = event.getSceneX(); dragStartY = event.getSceneY(); dragStartRotateX = cameraXRotate.getAngle(); dragStartRotateY = cameraYRotate.getAngle(); } else if (event.getEventType() == MouseEvent.MOUSE_DRAGGED) { double xDelta = event.getSceneX() - dragStartX; double yDelta = event.getSceneY() - dragStartY; cameraXRotate.setAngle(dragStartRotateX - (yDelta * 0.7)); cameraYRotate.setAngle(dragStartRotateY + (xDelta * 0.7)); } }); primaryStage.setTitle("Skeletal Tracking with Leap Motion v2 and JavaFX 3D"); primaryStage.setScene(scene); primaryStage.show(); }
Example 8
Project: classical-physics-master File: Space.java View source code |
public SubScene getSubScene() {
return this.mainView;
}
Example 9
Project: fbx-importer-master File: SubSceneContainer.java View source code |
/** * Sets the sub-scene to be displayed inside this container. * * @param subScene the {@link SubScene} of this container */ public void setSubScene(final SubScene subScene) { this.subScene = subScene; getChildren().add(subScene); }
Example 10
Project: LiteRubikFX-master File: Rubik.java View source code |
public SubScene getSubScene() {
return content.getSubScene();
}
Example 11
Project: JXTN-master File: JFX.java View source code |
/** * 建立新的{@link javafx.scene.SubScene}建構器。 * * @return 新的{@link javafx.scene.SubSceneMaker} */ @SuppressWarnings({ "rawtypes", "unchecked" }) public static javafx.scene.SubSceneMaker<javafx.scene.SubScene, ?> subScene() { return new javafx.scene.SubSceneMaker(); }