【问题标题】:Box 3D JavaFX RotateBox 3D JavaFX 旋转
【发布时间】:2017-05-29 18:05:57
【问题描述】:

我有两个盒子(组),当我旋转时,图像显示如下:

显示框

旋转框


旋转时,盒子(JANELA_MEIO_BOX)变形:

public class Demo1 extends Application {

private PhongMaterial texturedMaterial = new PhongMaterial();
private Image texture = new Image("/T3D/mapfooter.JPG");
private final PhongMaterial redMaterial = new PhongMaterial();

public static void main(String[] args) {
    Application.launch(args);
}

@Override
public void start(final Stage stage) {

    redMaterial.setSpecularColor(Color.ORANGE);
    redMaterial.setDiffuseColor(Color.RED);

    texturedMaterial.setDiffuseMap(texture);
    javafx.scene.shape.Box JANELA_MEIO_BOX = new javafx.scene.shape.Box();

    /*  rotate  */
    JANELA_MEIO_BOX.setWidth(600.0); 
    JANELA_MEIO_BOX.setHeight(340.0);
    JANELA_MEIO_BOX.setDepth(100.0);
    JANELA_MEIO_BOX.setMaterial(texturedMaterial);

    Group JANELA_001 = new Group();

    stage.setTitle("Cube");

    final CameraView cameraView = new CameraView();


    final Scene scene = new Scene(cameraView, 1000, 800, true);
     scene.setFill(new RadialGradient(225, 0.85, 300, 300, 500, false,
            CycleMethod.NO_CYCLE, new Stop[]{new Stop(0f, Color.BLUE),
                new Stop(1f, Color.LIGHTBLUE)}));
    PerspectiveCamera camera = new PerspectiveCamera();
    scene.setCamera(camera);
    scene.setOnScroll((final ScrollEvent e) -> {
        camera.setTranslateZ(camera.getTranslateZ() + e.getDeltaY());
    });


    javafx.scene.shape.Box JAN_MAIN = new javafx.scene.shape.Box();
    JAN_MAIN.setMaterial(redMaterial);
    JAN_MAIN.setWidth(1000.0);
    JAN_MAIN.setHeight(600.0);
    JAN_MAIN.setDepth(100.0);

     JAN_MAIN.getTransforms().add(new Translate(1, 1, 1));


    JANELA_MEIO_BOX.getTransforms().add(new Translate(1, 1, 1));

    JANELA_001.getChildren().addAll(JAN_MAIN, JANELA_MEIO_BOX);

    cameraView.add(JANELA_001);

            /*  mouse events */


    cameraView.frameCam(stage, scene);
     MouseHandler mouseHandler = new MouseHandler(scene, cameraView);
    KeyHandler keyHandler = new KeyHandler(stage, scene, cameraView);
    /*  scene */

    stage.setScene(scene);
    stage.show();
}

旋转时,盒子(JANELA_MEIO_BOX)变形

【问题讨论】:

  • ps:旋转后的行(Box)不可见!

标签: javafx 3d rotation box javafx-3d


【解决方案1】:

您有两个盒子:一个 1000x600x100 的立方体和一个 600x340x100 的立方体。

当你把它们放在一个组中时,它们被放置在中心:较大的一个在 X 方向从 -500 到 500,在 Y 方向从 -300 到 300,在 Z 方向从 -50 到 50,同样如此对于较小的,Z 也是从 -50 到 50。

当您渲染两个形状时,它们的面在相同的精确 Z 坐标中,您总是会得到这些伪像。

如果您想同时查看这两种形状,一个快速的解决方案就是让较小的形状更深一点:

JANELA_MEIO_BOX.setDepth(100.1);

而且将场景抗锯齿设置为平衡也很方便:

final Scene scene = new Scene(cameraView, 1000, 800, true, SceneAntialiasing.BALANCED);

【讨论】:

  • 谢谢你,何塞佩雷达!完美的 !非常感谢!
  • 最好将问题标记为已接受,这样对其他人也有任何帮助。
  • 好的,何塞·佩雷达。完毕 !谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-20
  • 1970-01-01
  • 1970-01-01
  • 2016-02-10
  • 2014-01-26
  • 2015-07-20
相关资源
最近更新 更多