Pessoal, estou desenhando um notebook com Java 3D, porém não estou conseguindo fazer com que a tampa fique próxima da base do noot, usei o a figura geometrica Box para desenhar. Apliquei também o mouse rotation para girar o objeto, porém ao girar, descobri que a tela está no meio da base, preciso que ela fique mais no fundo da tela.
Vou postar a imagem também para ajudar a entender o problema. http://twitpic.com/2xrwrw

é possivel aplicar textura em somente uma face do Box? Observer que a textura de um teclado que apliquei, está sendo gerada em todos os lados do box!
Segue o codigo:
import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
import com.sun.j3d.utils.geometry.Box;
import com.sun.j3d.utils.image.TextureLoader;
import com.sun.j3d.utils.universe.SimpleUniverse;
import java.awt.GraphicsConfiguration;
import javax.media.j3d.Appearance;
import javax.media.j3d.Background;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
import javax.vecmath.Vector3d;
public class notebook_novo {
public static void main(String[] args) {
JFrame janela = new JFrame("Notebook");
janela.setBounds(0, 0, 600, 600);
janela.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D cena = new Canvas3D(config);
BranchGroup group = new BranchGroup();
TextureLoader tex = new TextureLoader("c:\\textura.jpg", null);
//2 - Aplique a textura a uma aparência
Appearance ap = new Appearance();
ap.setTexture(tex.getTexture());
//Criação da Base
Box base = new Box(0.7f, 0.03f, 0.5f, Box.GENERATE_TEXTURE_COORDS, ap);
TransformGroup trg = new TransformGroup();
trg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
Transform3D transform = new Transform3D();
Vector3d posicao = new Vector3d(0.0, -0.2, 0);
transform.set(posicao);
trg.setTransform(transform);
trg.addChild(base);
group.addChild(trg);
//Criação da Tampa
Box tampa = new Box(0.7f, 0.3f, 0.03f, ap);
TransformGroup trg1 = new TransformGroup();
trg1.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
Transform3D transform1 = new Transform3D();
Vector3d posicao1 = new Vector3d(0.0, 0.1, 0);
transform1.set(posicao1);
trg1.setTransform(transform1);
trg1.addChild(tampa);
group.addChild(trg1);
//Behavior para trabalhar com o mouse
MouseRotate mr = new MouseRotate(trg);
MouseRotate mr1 = new MouseRotate(trg1);
//Seleciona a área na qual o cubo fará a rotação
mr.setSchedulingBounds(base.getBounds());
mr1.setSchedulingBounds(tampa.getBounds());
//Associa o TransformGroup ao behavior
trg.addChild(mr);
trg.addChild(mr1);
//Imagem como plano de fundo
//1 - Carregue uma imagem
TextureLoader tex2 = new TextureLoader("C:\\fundo.jpg", null);
//2 -Aplique a imagem a um Background
Background bg2 = new Background();
bg2.setImage(tex2.getImage());
//3 - Defina a forma de exibição
bg2.setImageScaleMode(Background.SCALE_FIT_ALL);
bg2.setApplicationBounds(new BoundingSphere());
//4 - Exiba o Background (comente a linha para retirar a imagem de background)
group.addChild(bg2);
group.compile();
SimpleUniverse simple = new SimpleUniverse(cena);
simple.addBranchGraph(group);
simple.getViewingPlatform().setNominalViewingTransform();
janela.add(cena);
janela.setVisible(true);
}
}