import javafx.application.Application; import javafx.event.EventHandler; import javafx.scene.Camera; import javafx.scene.Group; import javafx.scene.Node; import javafx.scene.PerspectiveCamera; import javafx.scene.PointLight; import javafx.scene.Scene; import javafx.scene.input.KeyEvent; import javafx.scene.input.MouseEvent; import javafx.scene.input.PickResult; import javafx.scene.paint.Color; import javafx.scene.paint.Material; import javafx.scene.paint.PhongMaterial; import javafx.scene.shape.Sphere; import javafx.stage.Stage; /* * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. */ /** * * @author Andrew Glushchenko */ public class LodHelperTranslateTestApp extends Application{ private Group sphereGroup; private Group root; private Group cameraGroup; private Sphere sphere1; private Sphere sphere2; private Material mtrl; private PointLight pl = new PointLight(Color.GREEN); @Override public void start(Stage stage) throws Exception { mtrl = new PhongMaterial(Color.AQUA); sphere1 = new Sphere(); sphere1.setMaterial(mtrl); sphere1.setScaleX(100); sphere1.setScaleY(100); sphere1.setScaleY(100); sphere1.setTranslateX(-100); sphere2 = new Sphere(); sphere2.setMaterial(mtrl); sphere2.setScaleX(100); sphere2.setScaleY(100); sphere2.setScaleY(100); sphere2.setTranslateX(100); pl.setTranslateX(-300); sphereGroup = new Group(sphere1,sphere2); sphereGroup.getChildren().add(pl); root = new Group(sphereGroup); Scene scene = new Scene(root,500,500); cameraGroup = new Group(addCamera(scene)); root.getChildren().add(cameraGroup); sphereGroup.setTranslateX(250); sphereGroup.setTranslateY(250); scene.setOnMouseClicked(new EventHandler() { @Override public void handle(MouseEvent t) { PickResult pr = t.getPickResult(); Node n = pr.getIntersectedNode(); if(n!=null){ System.out.println(n.computeAreaInScreen()); } } }); scene.setOnKeyPressed(new EventHandler() { @Override public void handle(KeyEvent t) { switch(t.getText()){ case "1": moveSphere(-100); break; case "2": moveSphere(100); break; case "3": moveGroup(-100); break; case "4": moveGroup(100); break; } } }); stage.setScene(scene); stage.show(); } private void moveSphere(double delta){ System.out.println("moveSphere"); sphere1.setTranslateZ(sphere1.getTranslateZ() + delta); sphere2.setTranslateZ(sphere2.getTranslateZ() + delta); } private void moveGroup(double delta){ System.out.println("moveGroup"); sphereGroup.setTranslateZ(sphereGroup.getTranslateZ() + delta); } private Camera addCamera(Scene scene){ PerspectiveCamera pc = new PerspectiveCamera(false); scene.setCamera(pc); return pc; } public static void main(String[] args) { launch(args); } }