Para crear un objeto 3D es necesario tener instalada la API Java3D.
Como instalar la API Java3D y agregarla a la IDE de Netbeans pinchar aquí
Codigo:
package esfera3d;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.Sphere;
import com.sun.j3d.utils.universe.SimpleUniverse;
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.DirectionalLight;
import javax.media.j3d.Node;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3f;
public final class Esfera3D extends Applet {
public Esfera3D() {
setLayout(new BorderLayout());
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3D = new Canvas3D(config);
add("Center", canvas3D);
BranchGroup escena = crearEscenaGrafico();
SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
simpleU.getViewingPlatform().setNominalViewingTransform();
simpleU.addBranchGraph(escena);
}
public BranchGroup crearEscenaGrafico() {
BranchGroup objPrincipal = new BranchGroup();
objPrincipal.addChild(CrearEsfera());
objPrincipal.addChild(CrearIluminacion());
return objPrincipal;
}
private Node CrearEsfera() {
Sphere esfera = new Sphere(0.3f); //Tamaño esfera (0.3)
return esfera;
}
private Node CrearIluminacion() {
Color3f colorLuz = new Color3f(1.0f, 0.5f, 6.1f);
BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 20.0), 100.0);
Vector3f direccionLuz = new Vector3f(4.0f, -7.0f, -12.0f);
DirectionalLight luz1 = new DirectionalLight(colorLuz, direccionLuz);
luz1.setInfluencingBounds(bounds);
return luz1;
}
public static void main(String[] args) {
Frame frame = new MainFrame(new Esfera3D(), 256, 256); //Tamaño ventana de 256x256 pixeles.
}
}
Resultado:
Una forma sencilla y rápida de aprender JAVA, observando y deduciendo cómo se comporta el lenguaje a través de ejemplos prácticos.
Suscribirse a:
Enviar comentarios (Atom)
Con la tecnología de Blogger.
hola, lo intenté y me sale esto:
ResponderEliminarException in thread "main" java.lang.UnsatisfiedLinkError: no j3dcore-ogl in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)
at java.lang.Runtime.loadLibrary0(Runtime.java:849)
at java.lang.System.loadLibrary(System.java:1088)
at javax.media.j3d.NativePipeline$1.run(NativePipeline.java:189)
at java.security.AccessController.doPrivileged(Native Method)
at javax.media.j3d.NativePipeline.loadLibrary(NativePipeline.java:180)
at javax.media.j3d.NativePipeline.loadLibraries(NativePipeline.java:137)
at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:948)
at javax.media.j3d.VirtualUniverse.(VirtualUniverse.java:280)
at Esfera3D.(Esfera3D.java:33)
at Esfera3D.main(Esfera3D.java:64)
Java Result: 1
me puedes ayudar?
Hola amigo. La exception que mencionas se debe a una mala instalación de JAVA 3D.
EliminarLa instalación depende de:
- La plataforma (Windows, Linux, MAC OS)
- Método de instalación (Manual o con instalador(excepto para Linux, donde solo hay Manual))
lo instalé como lo haces en tu explicación y aun así me sale ese error yo tengo netbeans 8.0.2 si puedes dar una solución a eso te lo agradecería mucho
EliminarHola ...
Eliminarpuede corregir simplemente copiando el archivo C: \ Archivos de programa \ Java \ Java3D \ 1.5.1 \ bin \ j3dcore-ogl.dll
a C: \ Archivos de programa \ Java \ jre6 \ bin (o su versión de jre definida)
Excelente codigo...gracias.............se debe tener en cuenta los nombres que se crean en el paquete y la clase....y que importen las librerias de java 3D segun correspondan
ResponderEliminarAmigo me puedes ayudar, necesito crear diferentes figuras por medio de eventos separados, ejemplo, tengo una interfaz y un par de botones los cuales uno dice, "crear esfera" y el otro crear cubo, al darle clic a cualquiera de los dos me crea la figura, pero si le doy de nuevo clic para crear otra figura ya sea la misma o la otra, me sale un error que dice que solo se puede añadir un branchgroup como hijo, he intentando un millar de cosas y todas me botan error ayuda por favor, Gracias!!!!
ResponderEliminarExelente!!!! :)
ResponderEliminarHola amigo me puedes ayudar necesito un programa que haga un dibujo de Objetos en 3D. Desarrolle una aplicación que dibuje un cubo a partir de los 8 vértices. Defina el conjunto de aristas y el conjunto de caras o planos que forman el cubo y consérvelos en estructuras de datos adecuadas. Además dibujar una esfera ya sea usando la representación paramétrica o bien representación planar, en cuyo caso conservar los vértices, aristas y planos generados
ResponderEliminarHay que tener en cuenta que esto simplemente nos descomprime en un subdirectorio lib dichas clases, dentro del directorio donde ejecutemos el binario.
ResponderEliminarUna vez hecho esto, podemos lanzar Netbeans y añadir las librerías de Java3D desde Herramientas -> Librerías.
Sólo nos queda un pequeño paso: cuando intentemos ejecutar algún programa de ejemplo, nos dará un error de compilación diciendo que falta la libreria j3dcore-ogl. Esta librería podemos instalarla desde los repositorios a través del paquete libjava3d-jni, pero luego tenemos que enlazarla dentro del JDK de Oracle que estamos usando…
sudo aptitude install libjava3d-jni
sudo ln /usr/lib/jni/libj3dcore-ogl.so /usr/local/jdk1.8.0_40/jre/lib/amd64/libj3dcore-ogl.so
fuente:https://elblogdelbardo.wordpress.com/2015/03/06/netbeans-8-y-java3d-en-kubuntu-14-10/
todos aquellos que solo llegan a copiar el codigo para que les funcione correctamente deben tener instalado el API para ello aqui tienen una guia https://censorcosmico.blogspot.com/2013/10/instalacion-de-la-api-java3d.html con eso ya el codigo corre perfectamente :)
ResponderEliminarhola a todos, intente utilizar el codigo segun las recomendaciones dadas pero me paso igual que chibi usami, adicionalmente me sale error en esta parte del codigo BranchGroup escena = crearEscenaGrafico(); les agradezco mucho si me pueden ayudar.
ResponderEliminarHola
ResponderEliminarMe funcionó con copiar y pegar
Utilizo NetBeans 8.2
Gracias por tú código
ResponderEliminarSí funcionó.
a mi no me funciono
ResponderEliminarya que me sale como error algo del thread exception j3d rendering o sera xq estoy usando java netbeans con jdk 21? ayudeme
ResponderEliminar