Java 3D: Programando en la tercera dimensión

9
37948
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.

Java 3D

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.

netbeans

Ahora se necesita crear algunos objetos.

[codesyntax lang=»java»]

[/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.

netbeans

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»]

[/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.

netbeans

Al ejecutar este código, el resultado es el siguiente:

Sin título-4

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:

Sin título-4

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.

netbeans

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.

netbeans

Ahora colocaremos la rotación. En el método abstracto, se coloca lo siguiente:

netbeans

Al ejecutar el código, el resultado obtenido es el siguiente:

Untitled

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/

0 0 votes
Article Rating
Suscríbete
Notify of
guest

9 Comments
newest
oldest most voted
Inline Feedbacks
View all comments
Cirino Del Ángel Del Ángel.
Cirino Del Ángel Del Ángel.
2 years ago

¿Cómo se puede crear un pentágono en 3d java y que métodos se ocupan para crear la figura en especifica?

Mary
Mary
2 years ago

Disculpe me podria proporcionar el codigo que sea de una letra por ejemplo M en 3D en el lenguaje de programacion DevC++

Benjamin Muruato
Benjamin Muruato
2 years ago

Muy buena explicación, pero tengo una duda, Si quiero moverlo sobre 2 ejes al mismo tiempo ¿Cómo seria? ¿tendría que agregar otro hilo?

Ricardo
Ricardo
3 years ago

hola que tal!, en que parte exactamente puedo manipular la escala del cubo?

ALEJANDRO
4 years ago

HOLA QUE TAL, SERA QUE ME PUEDEN AYUDAR CUANDO EJECTO EL CODIGO ME SALE ESTE ERROR( Exception in thread «AWT-EventQueue-0» java.lang.UnsatisfiedLinkError: no J3D in java.library.path) GRACIAS

Max
Max
4 years ago
Reply to  ALEJANDRO

Hola Ale a mi me paso lo mismo tuve q copiar el «j3dcore-ogl.dll» a la carpeta C:\Program Files\Java\jdk-11.0.2\bin
Habia subido la librerias al path pero no me toma el dll y me tiraba el error ese.
Por ahora me corre XP

Alexia Garcia
Alexia Garcia
7 years ago

Hola amigo, me ayudó mucho tu página, pero me surgió una duda. Me gustaría hacer un programa de un cubo rubik ¿Cómo puedo dividir el cubo? O, si tendría que agregar más ¿Cómo lo haría? Gracias