Barra 3D

2 respostas
J

Ola a todos. :smiley: Tenho o seguinte código que irá funcionar como Applet:

import java.applet.Applet;
import java.awt.*;

import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.Box;
import com.sun.j3d.utils.universe.*;

import javax.media.j3d.*;
import javax.vecmath.*;

@SuppressWarnings("serial")
public class Dezena extends Applet{
	
	private SimpleUniverse universe = null;
	
	public Dezena(){
	}
	
	public void init(){
		setLayout(new BorderLayout());
		GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();

	    Canvas3D canvas = new Canvas3D(config);
	    add("Center", canvas);
	    universe = new SimpleUniverse(canvas);
	    
	    // Cria sub-grafos de conteúdo 
	    BranchGroup cena1 = criaGrafoDeCena(0.9,0.0,0.0,0.0,Math.toRadians(15),Math.toRadians(-30),0.0);
	    
	    // O código abaixo faz com que a ViewPlatform seja movida
        // um pouco para trás, para que os objetos possam ser
        // visualizados.
	    universe.getViewingPlatform().setNominalViewingTransform();
	    
	    // Anexa os sub-grafos de conteúdo no universo virtual
	    universe.addBranchGraph(cena1);
	}
	
	public void destroy() {
		universe.cleanup();
	}
	
	// Método responsável pela criação do grafo de cena (ou sub-grafo)
	public BranchGroup criaGrafoDeCena(double e, double tx, double ty, double tz, double rx, double ry, double rz){
		
		// Cria o nodo raiz 
		BranchGroup objRaiz = new BranchGroup();
		
		Transform3D trans3d1 = new Transform3D();
		trans3d1.setTranslation(new Vector3f(0.20f, 0.0f, 0.0f));
		
		TransformGroup transGroup1 = new TransformGroup(trans3d1);
		Color3f cor = new Color3f(Color.BLUE);
        ColoringAttributes ca = new ColoringAttributes(cor, ColoringAttributes.NICEST);
        Appearance ap = new Appearance();        
        ap.setColoringAttributes(ca);

		transGroup1.addChild(new Box(0.1f, 0.5f, 0.1f, ap));
		
		TransformGroup trans = new TransformGroup();
		trans.addChild(transGroup1);
		
		objRaiz.addChild(trans);
		
		// Cria um novo objeto que irá aplicar as transformações
        // geométricas sobre a barra e a adicina no grafo.
        Transform3D trans1 = new Transform3D();
        Transform3D t1 = new Transform3D();
        Transform3D t2 = new Transform3D();
        
        // Aplica rotação
        t1.rotX(rx);
        t2.rotY(ry);
        trans1.rotZ(rz);
        trans1.mul(t1);
        trans1.mul(t2);
        
        // Aplica escala
        trans1.setScale(e);
        
        // Aplica translação
        trans1.setTranslation(new Vector3d(tx,ty,tz));
        trans.setTransform(trans1);
        
        objRaiz.compile();

        return objRaiz;
	}
	
	public static void main(String[] args) 
    {
		new MainFrame(new Dezena(), 250, 250);
    }
}

Esse código gera uma barra maciça e a idéia é gerar uma barra como na figura:

Alguém sabe como posso fazer isso? :?: Obrigado

2 Respostas

J

O que eu preciso é desenhar as arestas na figura feita através da classe Box. Alguem sabe como fazer isso? Obrigado

J

RESOLVIDO

Resolvi meu problema aplicando uma textura. Simples assim!!

Criado 11 de novembro de 2009
Ultima resposta 12 de nov. de 2009
Respostas 2
Participantes 1