Programación Java: sumar, animar, e iluminar los objetos en 3D
La creación de un mundo virtual en 3D es más fácil que nunca en JavaFX. En este ejemplo, se aprende a añadir una esfera a su programa de JavaFX, animarlo, y añadir una fuente de luz a la misma.
Conteúdo
Primer paso: Añadir una esfera
En primer lugar, añadir una esfera, representado por la Esfera clase. los Esfera constructor acepta un solo parámetro, que especifica el radio de la esfera. Por ejemplo, estas líneas crean una esfera cuyo radio es de 100, y luego se traduce a moverlo fuera el punto central de su mundo virtual:
Esfera Esfera = new Sphere(100)-sphere.setTranslateX(-180)-sphere.setTranslateY(-100)-sphere.setTranslateZ(100)-root.getChildren().add(sphere)-
En lugar de aplicar el mismo material Phong azul a la esfera, se puede hacer algo más interesante: aplicar un material Phong construido a partir de una imagen de una proyección cilíndrica de la tierra utilizando este código:
Imagen earthImage = new Image ("file: earth.jpg") - PhongMaterial earthPhong = new PhongMaterial () - earthPhong.setDiffuseMap (earthImage) -sphere.setMaterial (earthPhong) -
Esta figura muestra la esfera resultante.
Usted puede envolver cualquier imagen alrededor de una esfera (o cualquier otro objeto en 3D, para el caso) utilizando esta técnica. También puede obtener la imagen de este programa de Wikipedia. Sólo la búsqueda de Proyección Behrmann y luego descargar el archivo. (Pintura Usar Windows para recortar los bordes de la imagen un poco porque la imagen disponible en Wikipedia tiene un pequeño borde alrededor de los bordes.)
Paso dos: Animación de los objetos
¡Menos mal! Su mundo virtual 3D ahora tiene un objeto: una esfera que se parece a la tierra. También puede agregar otros objetos en este momento.
En este paso, añadir una animación para todos los objetos para conseguir que girar. Cada objeto consigue un sencillo RotationTransition animación. En primer lugar, la 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()-
Después de la jugar método se llama, la esfera comienza a girar, lo que hace una vuelta completa alrededor de su eje z cada tres segundos.
La esfera gira alrededor del eje y, creando la impresión de que el mundo está girando. Para la esfera, la velocidad se ajusta a una revolución cada 10 segundos.
Paso tres: Añadir una fuente de luz
El último paso en esta incursión en el mundo de la programación en 3D es agregar una fuente de luz. La fuente de luz va a cambiar todo el aspecto de la escena, como se muestra.
Para añadir la fuente de luz, utilice el siguiente código:
Luz PointLight = new PointLight(Color.WHITE)-light.setTranslateX(-1000)-light.setTranslateY(100)-light.setTranslateZ(-1000)-root.getChildren().add(light)-
los PointLight clase define una fuente de luz que se origina en un punto específico en la escena y proyecta la luz del color determinado (en este caso, el bueno de blanco). Para crear el efecto de iluminación, la ubicación de la luz mediante la traducción de sus coordenadas 1000, a la izquierda, 100 hacia abajo, y 1.000 unidades hacia el usuario. El resultado arroja buenas sombras en las partes traseras de los objetos giratorios.