Как да позиционирам форми върху измерението Z с JavaFX

Гледам да създам проста игра с лабиринт, за да изследвам текущите 3d възможности на JavaFX 2 (версията с Java 7).

Мога да позиционирам и завъртам правоъгълници за стени, но изглежда не мога да позиционирам по Z измерението.

Вижте кода по-долу. Зелената стена е в средата на лявата и дясната стена - как да я преместя отзад? Забележете, че няма свойство на z() builder.

public final class Walls extends Application {

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

    @Override
    public void start(Stage stage) {
        stage.setTitle("Walls in perspective");
        stage.setScene(makeScene());
        stage.show();
    }

    private Scene makeScene() {
        return SceneBuilder.create()
                .width(500)
                .height(500)
                .root(createRoot())
                .camera(PerspectiveCameraBuilder.create().build())
                .depthBuffer(true)
                .build();
    }

    private Parent createRoot() {
        // left wall
        Rectangle node1 = RectangleBuilder.create()
                .x(-200)
                .y(-150)
                .width(200)
                .height(200)
                .fill(Color.RED)
                .rotate(90)
                .rotationAxis(Rotate.Y_AXIS)
                .build();

        // back wall?
        Rectangle node2 = RectangleBuilder.create()
                .x(-100)
                .y(-150)
                .width(200)
                .height(200)
                .fill(Color.GREEN)
                .opacity(0.5)
                .build();

        // right wall
        Rectangle node3 = RectangleBuilder.create()
                .x(0)
                .y(-150)
                .width(200)
                .height(200)
                .fill(Color.BLUE)
                .rotate(90)

                .rotationAxis(Rotate.Y_AXIS)
                .build();

        return GroupBuilder.create()
                .children(node1, node2, node3)
                .translateX(250)
                .translateY(250)
                //.depthTest() ?
                .build();
    }
}

person sproketboy    schedule 21.01.2013    source източник


Отговори (1)


Вярвам, че обаждането допълнително

.translateZ(double x)

върху създадения от вас правоъгълник ще реши проблема.

person Dariusz    schedule 21.01.2013