Creando un Sistema Solar 3D en JavaFX

Aprende cómo construir una asombrosa simulación 3D del Sistema Solar utilizando JavaFX. Implementación de esferas, materiales, luces y cámara espacial con animaciones orbitales.

J

JavaFX Master

10 de marzo de 2026 12 min de lectura

Creando un Sistema Solar 3D en JavaFX

JavaFX no es solo para crear interfaces gráficas empresariales 2D; también incluye un potente motor 3D basado en un grafo de escena que permite construir aplicaciones impresionantes, como un Sistema Solar en 3D.

En este artículo, exploraremos los conceptos clave que componen este proyecto, desde la configuración de la cámara hasta la aplicación de texturas a los cuerpos celestes, y al final podrás descargar el código fuente completo.

1. El Grafo de Escena 3D

Para trabajar en 3D con JavaFX, habilitamos DepthBuffer en la escena y utilizamos Group como contenedor base para alojar todas nuestras geometrías tridimensionales.

Group root3D = new Group();
Scene scene = new Scene(root3D, 1280, 720, true, SceneAntialiasing.BALANCED);
scene.setFill(Color.BLACK); // El vacío del espacio

2. Creando Planetas con Sphere

JavaFX provee la clase Sphere que es perfecta para generar planetas. Le podemos asignar un tamaño (radio) relativo al sol.

Sphere earth = new Sphere(50); // Radio de 50
// Posicionar el planeta en el espacio
earth.setTranslateX(400);
root3D.getChildren().add(earth);

3. Apariencia y Texturas (PhongMaterial)

Un planeta gris no es muy interesante. Usamos PhongMaterial para aplicarle texturas difusas (la imagen del mapa del planeta), mapas de relieve (bump maps) para las montañas, y emisiones para elementos brillantes como el Sol o ciudades en la oscuridad.

PhongMaterial earthMaterial = new PhongMaterial();
earthMaterial.setDiffuseMap(new Image("/textures/earth_diffuse.jpg"));
earthMaterial.setBumpMap(new Image("/textures/earth_normal.jpg"));
earthMaterial.setSpecularColor(Color.LIGHTBLUE); // Reflejo del océano

earth.setMaterial(earthMaterial);

4. Rotaciones y Órbitas (RotateTransition)

Para animar el Sistema Solar, usamos rotaciones de dos tipos:

  1. Rotación sobre su propio eje: El planeta gira sobre sí mismo.
  2. Rotación orbital: El planeta gira alrededor del Sol, que se ubica en el centro de origen.
// Rotación orbital del grupo que contiene a la Tierra
Group earthOrbit = new Group();
earthOrbit.getChildren().add(earth);
root3D.getChildren().add(earthOrbit);

RotateTransition orbitAnim = new RotateTransition(Duration.seconds(365), earthOrbit);
orbitAnim.setAxis(Rotate.Y_AXIS);
orbitAnim.setByAngle(360);
orbitAnim.setCycleCount(Animation.INDEFINITE);
orbitAnim.setInterpolator(Interpolator.LINEAR);
orbitAnim.play();

5. La Cámara Espacial (PerspectiveCamera)

Para navegar por este entorno inmersivo en 3D, usamos una PerspectiveCamera. En proyectos avanzados, a esta cámara le enlazamos eventos de ratón (MouseEvents) para permitir al usuario arrastrar y girar la vista libremente alrededor del Sistema Solar, creando un control tipo órbita.

PerspectiveCamera camera = new PerspectiveCamera(true);
camera.setNearClip(1);
camera.setFarClip(100000);
camera.setTranslateZ(-2000);

scene.setCamera(camera);

¡Con iluminación (PointLight, AmbientLight) y algunos asteroides o cometas, el sistema cobra vida!


🚀 Descarga el Proyecto Completo

He preparado un archivo listo para que puedas ejecutar y estudiar el código completo en tu propio entorno de desarrollo. Incluye la implementación entera con todos los planetas, la cámara controlable y la interfaz (HUD) completa de búsqueda.

⬇️ Descargar Proyecto del Sistema Solar 3D (.zip)

Extrae el archivo .zip, abre la carpeta resultante (src y lib) y ejecuta run.bat para iniciar el viaje por el cosmos. ¡No dudes en experimentar añadiendo tus propias lunas o efectos visuales!

forumComentarios

Deja tu comentario

progress_activityCargando comentarios...