Programação Java: Adicionar, animar e Light Up objetos em 3D

Criando um mundo virtual 3D é mais fácil do que nunca em JavaFX. Neste exemplo, você aprende a adicionar uma esfera para o seu programa JavaFX, animá-lo e adicionar uma fonte de luz a ele.

Passo um: Adicionar uma esfera

Em primeiro lugar, adicionar uma esfera, representado pela Esfera classe. o Esfera construtor aceita apenas um único parâmetro que especifica o raio da esfera. Por exemplo, estas linhas criam uma esfera cujo raio é de 100, e depois converte-lo para movê-lo fora do ponto central do seu mundo virtual:

esfera esfera = new Sphere(100)-sphere.setTranslateX(-180)-sphere.setTranslateY(-100)-sphere.setTranslateZ(100)-root.getChildren().add(sphere)-

Em vez de aplicar o mesmo material Phong azul para a esfera, você pode fazer algo mais interessante: aplicar um material Phong construído a partir de uma imagem de uma projeção cilíndrica da terra usando este código:

Imagem earthImage = new imagem ( "file: earth.jpg") - PhongMaterial earthPhong = new PhongMaterial () - earthPhong.setDiffuseMap (earthImage) -sphere.setMaterial (earthPhong) - 

Esta figura mostra a esfera resultante.

Uma esfera com uma saliência cilíndrica da terra aplicado como material de Phong.
Uma esfera com uma saliência cilíndrica da terra aplicado como material de Phong.

Você pode envolver qualquer imagem em torno de uma esfera (ou qualquer outro objeto 3D, para que o assunto), utilizando esta técnica. Você também pode obter a imagem para este programa a partir de Wikipedia. Basta procurar por Behrmann Projeção e depois baixar o arquivo. (Use o Paint do Windows para cortar as bordas da imagem um pouco, porque a imagem disponível na Wikipedia tem uma pequena borda em torno das bordas.)

Passo dois: animar os objetos

Ufa! Seu mundo virtual em 3D agora tem um objeto: uma esfera que se parece com a Terra. Você também pode adicionar outros objetos neste momento.

Nesta etapa, adicione uma animação para todos os objetos para levá-los a girar. Cada objeto recebe uma simples RotationTransition animação. Em primeiro lugar, a esfera:

RotateTransition RT4 = new RotateTransition()-rt4.setNode(sphere)-rt4.setDuration(Duration.millis(9000))-rt4.setAxis(Rotate.Y_AXIS)-rt4.setByAngle(360)-rt4.setCycleCount(Animation.INDEFINITE)-rt4.setInterpolator(Interpolator.LINEAR)-rt4.play()-

Depois de Toque método é chamado, a esfera começa a girar, fazendo uma volta completa em torno do seu eixo z a cada três segundos.

A esfera gira em torno do eixo y, criando a impressão de que o mundo está girando. Para a esfera, a velocidade é definida como uma revolução a cada 10 segundos.

Etapa três: Adicionar uma fonte de luz

O último passo para essa incursão no mundo da programação 3D é adicionar uma fonte de luz. A fonte de luz vai mudar toda a aparência da cena, como mostrado aqui.

Para adicionar a fonte de luz, use o seguinte código:

Seu mundo em 3D com uma fonte de luz.
Seu mundo em 3D com uma fonte de luz.

luz PointLight = new PointLight(Color.WHITE)-light.setTranslateX(-1000)-light.setTranslateY(100)-light.setTranslateZ(-1000)-root.getChildren().add(light)-

o PointLight classe define uma fonte de luz que se origina a partir de um ponto específico na cena e projeta luz da cor dada (neste caso, o bom e velho branco). Para criar o efeito de iluminação, mudar a luz, traduzindo as suas coordenadas 1.000 para a esquerda, de 100 para baixo, e 1.000 unidades em direção ao usuário. O resultado lança sombras agradáveis ​​nas partes traseiras dos objetos de fiação.

menu