K
KimWangLee
Gast
Ich beschäftige mich seit einigen Wochen mit Java3D und habe jetzt vor die Seite a eines Würfels auf ein Textfeld auszugeben.
Also wenn man auf den Button "OK" klickt wird auf dem Textfeld die Seite a des Würfels ausgegeben, damit das nicht langweilig wird möchte ich noch den Würfel mit der Maus vergrößern und verkleiner.
Nach tagelangem suchen in diverse Foren fand ich die Picking-Klasse. Ich benutzte PickZoomBehavior-Klasse um den Würfel zu verkleinern, stellte aber fest, dass das Objekt nur herand bzw. weg gezoomt wird.
hier der Code:
Ich hoffe jemand kann mir helfen.
Also wenn man auf den Button "OK" klickt wird auf dem Textfeld die Seite a des Würfels ausgegeben, damit das nicht langweilig wird möchte ich noch den Würfel mit der Maus vergrößern und verkleiner.
Nach tagelangem suchen in diverse Foren fand ich die Picking-Klasse. Ich benutzte PickZoomBehavior-Klasse um den Würfel zu verkleinern, stellte aber fest, dass das Objekt nur herand bzw. weg gezoomt wird.
hier der Code:
Code:
import java.applet.Applet;
import java.awt.*;
import java.awt.GraphicsConfiguration;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.SimpleUniverse;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
import javax.media.j3d.*;
import java.awt.event.*;
public class MySimpleUniverse extends Applet implements ActionListener
{
// Inhaltszweig
public BranchGroup erzeugeInhalt()
{
// Erzeugen einer (Wurzel)Gruppe die den geamten Inhalt des Universum aufnehmen soll
BranchGroup inhalt = new BranchGroup();
// Erzeugen eines geometrischen Objektes inklusive voreingestellten Aussehens
ColorCube farbigerWuerfel = new ColorCube(0.4);
// Erzeugen einer Transformgruppe mit Zugriffsrechten fuer Maussteuerung
TransformGroup tg = new TransformGroup();
tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
// Gebe dem verwaisten Wuerfel drehfreudige Eltern
tg.addChild(farbigerWuerfel);
// Erzeuge ein Mausdrehobjekt in einem geplanten Bereich mit Ziel-Transformgruppe
MouseRotate rotor = new MouseRotate();
rotor.setSchedulingBounds(new BoundingSphere());
rotor.setTransformGroup(tg);
// Einhaengen der Transformgruppe und des Mausverhaltens in die Wurzelgruppe
inhalt.addChild(tg);
inhalt.addChild(rotor);
// Optimiert den gesamten Inhaltszweig - nicht unbedingt erforderlich
inhalt.compile();
return inhalt; // Los, gibs mir!
}
// Sichtzweig
public SimpleUniverse erzeugeSicht()
{
// Erzeugen eines minimalen virtuellen Universums mit Hilfe der SimpleUniverse-Klasse
SimpleUniverse minimalesUniversum = null;
// Besorgen der besten Konfiguration hinsichtlich der
// Anzeigeumgebung (Farbtiefe, Tranzparenzwerte der Pixel, ...)
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
// Erzeugen des aeusserst schweren Anzeigeflaeche-Objektes
Canvas3D canvas3d = new Canvas3D(config);
canvas3d.setBounds(100,0,300,300);
// Hinzufügen der Anzeigeflaeche zum Clientbereich des Fensters
add(canvas3d);
// Uebergabe des Canvas3D-Objekts als Anzeigeflaeche
minimalesUniversum = new SimpleUniverse(canvas3d);
// setNominalViewingTransform() stellt den Betrachter 2,41m auf die positive
// z-Achse mit Sichtrichtung nach unten in negative z-Achse
minimalesUniversum.getViewingPlatform().setNominalViewingTransform();
return minimalesUniversum; // Her mit dem Mist!
}
// Diese Methode wird vom Browser beim Laden des Applets aufgerufen.
public void init()
{
// Erzeuge neues Layout für Container
setLayout(null);
// Erzeuge eines Buttons
Button b = new Button("OK");
b.setBounds(1,50,40,30);
b.addActionListener(this);
// Erzeuge eines Textfelds
TextField t = new TextField();
t.setBounds(2,10,50,30);
// Erzeuge eines Panels
Panel p = new Panel();
p.setBounds(0,0,100,300);
p.setLayout(null);
p.add(t);
p.add(b);
this.add(p);
// Sei Gott und erzeuge ein minimales Universum mit Sicht auf den Inhalt
SimpleUniverse su = erzeugeSicht();
// Sei Gott und erzeuge den Inhalt des Universums mit Maussteuerung
BranchGroup suInhalt = erzeugeInhalt();
// Es werde Licht! - verbindet Universum inklusive Sicht mit Inhalt
su.addBranchGraph(suInhalt);
}
public void actionPerformed(ActionEvent evt){
}
// Startpunkt fuer die Laufzeitumgebung
public static void main(String[] args)
{
new MainFrame(new MySimpleUniverse(), 800, 600);
}
}
Ich hoffe jemand kann mir helfen.