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.
Menu
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.
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:
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.