Índice:
Vídeo: Aula de Java 081 - paint e Graphics para desenhar formas. 2024
O JavaFX possui suporte incorporado para modelos 3D realistas. Na verdade, o gráfico de cena JavaFX é de natureza tridimensional. A maioria dos programas JavaFX funciona em apenas duas dimensões, especificando apenas coordenadas x e y. Mas tudo o que você precisa fazer para entrar na terceira dimensão é especificar coordenadas z para colocar os nós do seu gráfico de cena no espaço tridimensional.
JavaFX inclui um rico conjunto de classes dedicadas a criar e visualizar objetos 3D em mundos 3D. Você pode criar formas tridimensionais, como cubos e cilindros. Você pode mover a câmera virtual ao redor dentro do espaço 3D para olhar seus objetos 3D de diferentes ângulos e perspectivas diferentes.
E você pode até adicionar fontes de iluminação para controlar cuidadosamente a aparência final de seus mundos virtuais. Em suma, o JavaFX é capaz de produzir incríveis cenas em 3D.
Adicione uma caixa 3D ao seu mundo Java
Nesta etapa, adicione um objeto ao mundo 3D: neste caso, uma caixa, representada pela classe Box. Aqui está o código:
Box box = new Box (100, 100, 100); caixa. setMaterial (blueStuff); caixa. setTranslateX (150); caixa. setTranslateY (-100); caixa. setTranslateZ (-100); raiz. GetChildren (). adicionar (caixa);
O construtor Box aceita três argumentos que representam a largura, altura e profundidade da caixa. Neste exemplo, os três são definidos para 100. Assim, a caixa será desenhada como um cubo com cada lado medindo 100 unidades.
A caixa possui o mesmo material que o cilindro; então, é traduzido em todos os três eixos para que você possa ter uma visão em perspectiva da caixa. A figura mostra como a caixa aparece quando renderizada. Como você pode ver, as faces esquerda e inferior da caixa são visíveis porque você traduziu a posição da caixa para cima e para a direita para que a câmera possa ganhar alguma perspectiva.
Gire a caixa 3D
Nesta etapa, gire a caixa para criar uma visão em perspectiva ainda mais interessante. Existem duas maneiras de girar um objeto 3D. O mais simples é chamar o método setRotate do objeto e fornecer um ângulo de rotação: caixa
. setRotete (25);
Por padrão, isso girará o objeto no eixo z. Se isso é difícil de visualizar, imagine espetar o objeto com uma barra longa que é paralela ao eixo z. Em seguida, gire o objeto no espeto.
Se você quiser girar o objeto ao longo de um eixo diferente, primeiro chame o setRotationAxis. Por exemplo, para girar o objeto em seu eixo x, use esta seqüência: caixa
. setRotationAxis (Rotate. X_AXIS); caixa. setRotete (25);
Imagine executar o espeto na caixa com o espeto paralelo ao eixo dos x e depois girar a caixa 25 graus.
O único problema com o uso do método setRotate para girar um objeto 3D é que ele funciona somente em um eixo por vez. Por exemplo, suponha que você gire a caixa 25 graus tanto no z quanto no eixo dos x. O código a seguir será não isso:
caixa. setRotationAxis (Rotate. X_AXIS); caixa. setRotete (25); caixa. setRotationAxis (Rotate. Z_AXIS); caixa. setRotete (25);
Quando o método setRotate é chamado de segunda vez para girar a caixa no eixo z, a rotação do eixo x é reiniciada.
Para girar em mais de um eixo, você deve usar a classe Girar em vez disso. Você cria uma instância de rotação separada para cada eixo em que deseja rotear o objeto e, em seguida, adicione todas as instâncias de Rotate à coleção Transforms do objeto através do getTransforms (). addAll método, como este:
Rotate rxBox = new Rotate (0, 0, 0, 0, Rotate. X_AXIS); Rotate ryBox = new Rotate (0, 0, 0, 0, Rotate. Y_AXIS); Rotate rzBox = new Rotate (0, 0, 0, 0, Rotate. Z_AXIS); rxBox. setAngle (30); ryBox. setAngle (50); rzBox. setAngle (30); caixa. getTransforms (). addAll (rxBox, ryBox, rzBox);
O construtor Rotate aceita quatro parâmetros. Os três primeiros são as coordenadas x, y e z do ponto dentro do objeto através do qual o eixo de rotação irá passar. Normalmente, você especifica zeros para esses parâmetros para girar o objeto em torno de seu ponto central. O quarto parâmetro especifica o eixo de rotação.
Esta figura mostra como a caixa aparece depois que ela foi girada.
A caixa depois de girada.