Programar y manipular objetos en tercera dimensión utilizando Java es posible gracias a la librería Java 3D, de la cual voy a escribir en este post.
En Java, para generar gráficos en tercera dimensión es posible gracias a Java 3D. Se requiere descargar el siguiente archivo:
Ahora vamos a crear una sencilla aplicación donde tenemos un cubo en 3D y lo haremos rotar en los 3 ejes, el X, el Y y el Z.
Creamos un proyecto en Netbeans y dejamos intacta la clase principal que se genera con dicho proyecto. Yo lo llamaré 3DTest.
Se importa la librería Java 3D que está disponible en el enlace arriba. Se deben agregar los 3 archivos que están disponibles en la carpeta lib.
Ahora se necesita crear algunos objetos.
[codesyntax lang=»java»]
1 2 3 4 5 |
SimpleUniverse universo = new SimpleUniverse(); BranchGroup grupo = new BranchGroup(); ColorCube cubo = new ColorCube(0.3); TransformGroup GT = new TransformGroup(); Transform3D transformar = new Transform3D(); |
[/codesyntax]
En el objeto «universo» es donde se coloca todo. En el objeto «grupo» van las figuras que se generen. En el objeto «cubo» se genera un cubo cuyo tamaño se establece en el parámetro que aparece como 0.3.
Los objetos «GT» y «transformar» son los que nos van a permitir modificar las propiedades del cubo que se ha generado.
Al crear estos objetos nos aparecerá la opción de importar las librerías necesarias.
Ahora voy a crear un método que contendrá las instrucciones para crear el cubo en 3D. Renombraré la clase a Cube3D y crearé el método Cube3D.
Las instrucciones serán las siguientes:
[codesyntax lang=»java» lines=»no»]
1 2 3 4 5 6 7 8 9 10 11 |
public Cube3D() { GT.setTransform(transform); GT.addChild(cube); group.addChild(GT); universe.getViewingPlatform().setNominalViewingTransform(); universe.addBranchGraph(group); } |
[/codesyntax]
Se ha agregado el cubo al grupo de transformación, que se agrega al grupo que se agrega al universo. Se debe invocar este método desde el Main de nuestro proyecto.
Al ejecutar este código, el resultado es el siguiente:
Le voy a aumentar un poco el tamaño, cambiando el parámetro de la declaración del cubo ( ColorCube cube = new ColorCube(0.1);) a 0.3:
Ahora voy a hacer que el cubo empiece a rotar. Para ello me valdré de los Java Threads de los cuales ya he hablado antes en este blog.
Implementaré la interfaz runnable, con los métodos abstractos que ello implica.
Voy a declarar un hilo, lo voy a inicializar y voy a establecer que las propiedades del cubo puedan ser modificadas en tiempo de ejecución.
Ahora colocaremos la rotación. En el método abstracto, se coloca lo siguiente:
Al ejecutar el código, el resultado obtenido es el siguiente:
Como se puede observar el objeto rota en torno al eje Y. Se puede hacer que rote en torno a X o a Z, solo es necesario cambiar la instrucción.
El archivo donde está este proyecto lo pueden descargar desde el siguiente enlace.
Por último, un video mostrando el proyecto en tiempo de ejecución:
Para cualquier duda u opinión, no duden en comentar. Saludos.
Si desean más información sobre Java 3D, pueden visitar el siguiente sitio web (está en inglés): http://www.java3d.org/