Hallo,
im Prinzip beschreibt der Titel mein problem so weit bereits. Ich schaffe es nicht auf Tastendruck mein View um eine Sphere rotieren zu lassen.
ich habe schon eine Weile im Netz gesucht deswegen, aber nur eine Lösung mit Maus gefunden (OrbitBehavior).
Vllt hat ja jemand von euch eine Idee, hier mal ein bischen von meinem Sourcecode, fals ihrs braucht:
Vielen Dank im Vorraus für Hilfe aller art
im Prinzip beschreibt der Titel mein problem so weit bereits. Ich schaffe es nicht auf Tastendruck mein View um eine Sphere rotieren zu lassen.
ich habe schon eine Weile im Netz gesucht deswegen, aber nur eine Lösung mit Maus gefunden (OrbitBehavior).
Vllt hat ja jemand von euch eine Idee, hier mal ein bischen von meinem Sourcecode, fals ihrs braucht:
Java:
public class Spiel extends JPanel implements Runnable{
public Spiel() {
setFocusable(true);
setSize(300, 300);
setPreferredSize(getSize());
setLayout(new BorderLayout());
create3D();
Steuerung steuerung = new Steuerung(this);
gui = new GUI(this);
gui.getStartButton().addActionListener(steuerung);
addKeyListener(steuerung);
Thread t = new Thread(this);
t.start();
}
private void create3D() {
Canvas3D c3d = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
SimpleUniverse simpleU = new SimpleUniverse(c3d);
BranchGroup group = new BranchGroup();
group.addChild(create3DObject(new ColorCube(0.5f), 2f,-2f , 0.0f));
group.addChild(create3DObject(new ColorCube(0.5f), -3f,1f , -0.5f));
group.addChild(create3DObject(new ColorCube(0.5f), -1.5f,3f , -3.0f));
group.addChild(create3DObject(new ColorCube(0.5f), 0f,-1f , 2f));
Sphere sphere = new Sphere(0.5f);
mainTfGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
trans.setTranslation(new Vector3f(0f,0f,0.0f));
mainTfGroup.setTransform(trans);
mainTfGroup.addChild(sphere);
group.addChild(mainTfGroup);
Color3f light1Color = new Color3f(1.8f, 0.1f, 0.1f);
BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
Vector3f light1Direction = new Vector3f(1.0f, -3.0f, -12.0f);
DirectionalLight light1 = new DirectionalLight(light1Color, light1Direction);
light1.setInfluencingBounds(bounds);
group.addChild(light1);
camereGroup = simpleU.getViewingPlatform().getViewPlatformTransform();
camera = new Transform3D();
camera.setRotation(new AxisAngle4d(-0.07, 0.1, 0.0, 0.12));
camera.setTranslation(new Vector3f(0.3f, 0.3f, 8f));
camereGroup.setTransform( camera );
simpleU.addBranchGraph(group);
c3d.setFocusable(false);
add(c3d);
}
@Override
public void run() {
while(true){
if(right)xloc+=0.05;
if(left)xloc-=0.05;
if(up)yloc+=0.05;
if(down)yloc-=0.05;
if(speedup&&speed>=-0.13)speed-=0.0015;
if(slowdown&&speed<=0.03)speed+=0.0015;
zloc+=speed;
trans.setTranslation(new Vector3f(-0.5f,yloc,zloc));
camera.setTranslation(new Vector3f(0.0f, yloc, zloc+8f));
mainTfGroup.setTransform(trans);
camereGroup.setTransform( camera );
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
[...]
}
Vielen Dank im Vorraus für Hilfe aller art