Este es el cubo que publique hace poco, pero mejorado.
nombre:HelloJava3Dd.java
........................................................................................................
/**
*
* @author alex4024
*/
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.event.*;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.ColorCube;
import java.awt.GraphicsConfiguration;
import javax.media.j3d.*;
import javax.vecmath.*;
public class HelloJava3Dd extends Applet {
public HelloJava3Dd(){
setLayout(new BorderLayout());
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D lienzo3D =new Canvas3D(config);
add("Center", lienzo3D);
BranchGroup escena=createSceneGraph();
escena.compile();
SimpleUniverse simpleU =new SimpleUniverse(lienzo3D);
simpleU.getViewingPlatform().setNominalViewingTransform();
simpleU.addBranchGraph(escena);
}
public BranchGroup createSceneGraph(){
BranchGroup objRaiz =new BranchGroup();
Transform3D rotar =new Transform3D();
Transform3D tempRotar =new Transform3D();
rotar.rotX(Math.PI/4.0d);
tempRotar.rotY(Math.PI/5.0d);
rotar.mul(tempRotar);
TransformGroup objRotar =new TransformGroup(rotar);
TransformGroup objVuelta = new TransformGroup();
objVuelta.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
objRaiz.addChild(objRotar);
objRotar.addChild(objVuelta);
objVuelta.addChild(new ColorCube(0.4));
Transform3D EjeY = new Transform3D();
Alpha rotacionAlpha = new Alpha(-1,4000);
RotationInterpolator rotador = new RotationInterpolator(rotacionAlpha, objVuelta, EjeY, 0.0f, (float)Math.PI*2.0f);
BoundingSphere bounds = new BoundingSphere();
rotador.setSchedulingBounds(bounds);
objVuelta.addChild(rotador);
return objRaiz;
}
public static void main(String [] args){
Frame frame =new MainFrame(new HelloJava3Dd(),256,256);
}
}
........................................................................................................
Mejoras: Gira automáticamente entre los ejes X & Y
Alpha rotacionAlpha = new Alpha(-1,4000); en esta linea declaramos la velocidad de rotación., aclarese que 4000 es igual a 4 segundos, y -1 lo que hace es que el cubo gire infinitamente; (si este valor se cambia por 2, el cubo gira dos vez, así sucesivamente con valores positivos)...
.
Excelente código pero no puedo hacer que corra, Saludos
ResponderEliminarmmmm.... ya instalastes las librerías java 3d api?
Eliminareste es el link de oracle para descargarlas:
http://www.oracle.com/technetwork/java/javase/tech/index-jsp-138252.html
vientos chavo!!!
ResponderEliminareres una gaver
sigue asi monigote