Kugeln und Zylinder zeichnen

Status
Nicht offen für weitere Antworten.

kenny

Neues Mitglied
Kann mir jemand sagen wie ich mit java 3d kugeln und zylinder erstellen kann?


mfg kenny
 

Illuvatar

Top Contributor
Über Java3D, LeightWeightJavaGamingLibrary (LWJGL), JPCT und was es sonst noch so gibt.
Für Java3D:

Illuvatar hat gesagt.:
Geometry-Hilfsklassen
Um ganz einfach Szeneninhalt zu erstellen, gibt es vier "Geometric Utility Classes" im Paket com.sun.j3d.utils.geometry. Sie können wie ein Shape3D, dass bereits eine Geometry hat, verwendet werden. Es sind die Klassen Box (Quader), Cone (Kegel), Cylinder (Zylinder) und Sphere (Kugel).
Ein Beispiel zur Verdeutlichung:
Code:
import javax.swing.*;
import java.awt.event.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.universe.*;  //SimpleUniverse
import com.sun.j3d.utils.geometry.*;  //Die Geometry-Utility-Klassen
import static java.awt.Color.*;  //Vor 1.5 import java.awt.Color;

public class Jojo extends JFrame implements ActionListener
{
  public static final long serialVersionUID = 121121112l;  //Für Java1.5-Unterstützung
  //Konstruktor
  public Jojo()
  {
    super ("Ein Jojo");
    setSize (500, 500);
    setLocationRelativeTo (null);  //zentrieren
    setDefaultCloseOperation (DO_NOTHING_ON_CLOSE);  //Schließen soll im Menu geschehen
    JPopupMenu.setDefaultLightWeightPopupEnabled (false);  //Damit das Menu funktioniert
    setCloseMenuBar (this);
     //Jetzt kommt der 3D-Teil
    Canvas3D c3d = new Canvas3D (SimpleUniverse.getPreferredConfiguration());  //So am besten
    SimpleUniverse simpleU = new SimpleUniverse (c3d);  //Das VirtualUniverse
    BranchGroup scene = createSceneGraph(); //In eigene Methode auslagern
    simpleU.addBranchGraph (scene);  //Fügt den SceneGraph hinzu
    simpleU.getViewingPlatform().setNominalViewingTransform();  //Versetzt die Kamera so, dass man gleich etwas sehen kann
    //Bewegt die Kamera etwas weg
    TransformGroup camTG = simpleU.getViewingPlatform().getViewPlatformTransform();  //TransformGroup steht für Kamera
    Transform3D t3d = new Transform3D();
    t3d.setTranslation (new Vector3f (0, 0, 7));  //neue Veränderung
    Transform3D t3d2 = new Transform3D();
    camTG.getTransform (t3d2);  //alte Veränderung
    t3d.mul (t3d2);  //beide Veränderungen zusammen
    camTG.setTransform (t3d);
    //Antialiasing aktivieren
    c3d.getView().setSceneAntialiasingEnable (true);
    //3D-Teil Ende. Soweit verstanden?
    add (c3d);  //Vor 1.5: getContentPane().add
    setVisible (true);
  }
  public BranchGroup createSceneGraph() {
    BranchGroup objRoot = new BranchGroup();
    TransformGroup objSpin = new TransformGroup();
    objSpin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
    objRoot.addChild(objSpin);
    Alpha rotationAlpha = new Alpha(-1, 8000); //Das gesamte unendlich oft drehen, einmal in 8000 ms
    RotationInterpolator rotator =
       new RotationInterpolator(rotationAlpha, objSpin);
    BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100);
    rotator.setSchedulingBounds(bounds);
    objSpin.addChild(rotator);
    //Hier wirds neu
    //linke Hälfte
    TransformGroup leftCone = getCone (new Color3f (RED/*vor 1.5: Color.RED*/), true);
    objSpin.addChild (leftCone);
    //rechte Hälfte
    TransformGroup rightCone = getCone (new Color3f (BLUE/*vor 1.5: Color.BLUE*/), false);
    objSpin.addChild (rightCone);  //Cones stecken übrigens ineinander
    objRoot.compile ();
    return objRoot;
  }
  private TransformGroup getCone (Color3f col, boolean leftSide)
  {
    Cone cone = new Cone (1/*radius*/, 3/*height*/); //default wäre: height: 2.0, radius: 1.0
    Appearance coneApp = new Appearance();
    coneApp.setColoringAttributes (new ColoringAttributes (col, ColoringAttributes.NICEST));
    coneApp.setPolygonAttributes (new PolygonAttributes (PolygonAttributes.POLYGON_FILL/*Testet auch mal _LINE und _POINT*/, PolygonAttributes.CULL_BACK, 0));
    coneApp.setTransparencyAttributes (new TransparencyAttributes (TransparencyAttributes.NICEST, 0.3f/*Hier könnt ihr auch mal rumspielen*/));
    //Wenn ich bei den TransparencyAttributes zuwenig nehme, gibt es Darstellungsfehler
    cone.setAppearance (coneApp);
    Transform3D trans = new Transform3D();
    trans.rotZ (Math.PI / (leftSide ? -2 : 2));
    TransformGroup TG = new TransformGroup (trans);
    TransformGroup move = new TransformGroup();
    PositionPathInterpolator pi = new PositionPathInterpolator (new Alpha (-1, 3000), move, new Transform3D(), new float[]{0, 0.5f, 1}, new Point3f[]{new Point3f (), new Point3f (leftSide ? 2 : -2, 0, 0), new Point3f ()});  //Vorgegebener Behavior, einfach API schauen, im Paket javax.media.j3d
    BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100);
    pi.setSchedulingBounds(bounds);
    move.addChild (pi);
    move.setCapability (TransformGroup.ALLOW_TRANSFORM_WRITE);
    move.addChild (cone);
    //Der jetzt folgende Teil wird nächstes mal erklärt, es ist eine drei-D-Linie, die sich zwar mitbewegt, aber so lang ist, dass man es nicht merkt :)
    if (leftSide){  //eine reicht
      LineArray la = new LineArray (2, LineArray.COORDINATES | LineArray.COLOR_3);
      la.setCoordinate (0, new Point3f (-20, 0, 0));
      la.setCoordinate (1, new Point3f ());
      la.setColor (0, new Color3f (WHITE/*bzw. Color.WHITE*/));
      la.setColor (1, new Color3f (WHITE/*bzw. Color.WHITE*/));
      move.addChild (new Shape3D (la));
    }
    TG.addChild (move);
    return TG;
  }
  //Beenden-Menu
  private void setCloseMenuBar (JFrame f)
  {
    JMenuBar jmb = new JMenuBar();
    JMenu jm = new JMenu ("Datei");
    jmb.add (jm);
    JMenuItem close = new JMenuItem ("Beenden");
    jm.add (close);
    close.addActionListener (this);
    f.setJMenuBar (jmb);
  }
  public void actionPerformed (ActionEvent evt)
  {
    System.exit (0);
  }
  //Startmethode
  public static void main (String[]args)
  {
    new Jojo();
  }
}

http://www.java-forum.org/de/viewtopic.php?t=4821
 

Oxygenic

Bekanntes Mitglied
...oder um den Codewust auf das wesentliche zu beschränken: Es gibt zwei Primitive-Klassen vom Typ Cylinder bzw. Sphere, mit denen lassen sich besagte Objekte innerhalb einer einzigen Codezeile erzeugen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
TheSorm Kollisionsreaktion 2er Kugeln im 2D Raum Spiele- und Multimedia-Programmierung 4
Kr0e Kollision zweier Kugeln... Wo ist Newton ?? Spiele- und Multimedia-Programmierung 9
K Kugeln werden nicht unsichtbar Spiele- und Multimedia-Programmierung 23
P Billard, kugeln berechnung Spiele- und Multimedia-Programmierung 2
C dezentraler Stoß zweier Kugeln Spiele- und Multimedia-Programmierung 3
Z Kugeln aufgrund von Daten aus einem Array verschieben Spiele- und Multimedia-Programmierung 2
G Kugeln schießen Spiele- und Multimedia-Programmierung 3
B Kugeln verschieben (Vektoren) und Schnitt prüfen Spiele- und Multimedia-Programmierung 12
E JLabel zum anklicken machen? Kugeln selektieren? Spiele- und Multimedia-Programmierung 21
DEvent ein kleines Billiard Spiel und die bewegungen der Kugeln Spiele- und Multimedia-Programmierung 3
P Java3D - Zylinder genau wie Vektor ausrichten Spiele- und Multimedia-Programmierung 5
S Zylinder mit Textur erzeugt out of memory :( Spiele- und Multimedia-Programmierung 3
E relevanter bereich einer isometrischen karte zeichnen (AffineTransform) Spiele- und Multimedia-Programmierung 0
SaftigMelo Kreissegment zeichnen Spiele- und Multimedia-Programmierung 2
E Buttons neu zeichnen im GridLayout Spiele- und Multimedia-Programmierung 2
A Zeichnen außerhalb der paint-Methode Spiele- und Multimedia-Programmierung 6
E Isometrische Tiles mit unterschiedlicher Größe an korrekter Position zeichnen Spiele- und Multimedia-Programmierung 1
Androbin Mein Spiel will sich nicht zeichnen lassen !!! Spiele- und Multimedia-Programmierung 7
J Int Wert auf JFrame zeichnen Spiele- und Multimedia-Programmierung 3
H [ANIMATION] Hintergrundbild nur einmal zeichnen Spiele- und Multimedia-Programmierung 3
R [lwjgl] Cursor -> versetzt Zeichnen / Bild ist umgedreht Spiele- und Multimedia-Programmierung 2
M Methoden eine Map zu zeichnen Spiele- und Multimedia-Programmierung 5
aze Nicht rechteckiges Bild zeichnen Spiele- und Multimedia-Programmierung 5
F nur Ausschnitt eines Image zeichnen Spiele- und Multimedia-Programmierung 9
T 3D Graphen Zeichnen Spiele- und Multimedia-Programmierung 19
F Kurven zeichnen Spiele- und Multimedia-Programmierung 2
E Keine Werte zum Zeichnen werden Übergeben Spiele- und Multimedia-Programmierung 3
A Halbkreise zeichnen lassen? Spiele- und Multimedia-Programmierung 2
F Lineal mit Zahlen zeichnen Spiele- und Multimedia-Programmierung 7
N Linie mit Rand zeichnen Spiele- und Multimedia-Programmierung 10
A Mehrere geometrische Objekte in JPanel zeichnen Spiele- und Multimedia-Programmierung 4
A Optimiertes Zeichnen - wie? Spiele- und Multimedia-Programmierung 8
data89 Koordinaten in Koordinatensystem zeichnen Spiele- und Multimedia-Programmierung 11
M Binärbaum ohne Überlappung zeichnen Spiele- und Multimedia-Programmierung 3
H Decke zeichnen mit Hilfe eines Polygons Spiele- und Multimedia-Programmierung 2
B 1)JButtons zeichnen 2)Kolisionsabfrage von zwei Objekten Spiele- und Multimedia-Programmierung 9
G Linie im Applet zeichnen Spiele- und Multimedia-Programmierung 5
G Schüsse zeichnen, Fehler? Spiele- und Multimedia-Programmierung 3
S Dreieck zeichnen Spiele- und Multimedia-Programmierung 9
G Überlagern von Strings beim zeichnen verhindern Spiele- und Multimedia-Programmierung 3
C Objekt bei Buttonklick zeichnen Spiele- und Multimedia-Programmierung 16
G Geschwungene Klammer zeichnen Spiele- und Multimedia-Programmierung 5
F Neu zeichnen verhindern Spiele- und Multimedia-Programmierung 25
J Zeichnen in BufferedImage und dieses in Datei speichern Spiele- und Multimedia-Programmierung 2
O Funktion zeichnen Spiele- und Multimedia-Programmierung 11
A Lissajous Figuren zeichnen Spiele- und Multimedia-Programmierung 1
G Maus springt --> Free-Hand-Zeichnen Spiele- und Multimedia-Programmierung 2
L Schüsse zeichnen Spiele- und Multimedia-Programmierung 13
M Eigene Strings zeichnen Spiele- und Multimedia-Programmierung 4
T Blitz berechnen und zeichnen Spiele- und Multimedia-Programmierung 13
M auswahlkreis zeichnen (schräg) Spiele- und Multimedia-Programmierung 4
N Logik: Grenz-/Frontlinie zeichnen Spiele- und Multimedia-Programmierung 4
M Grafikprogramm, zeichnen mit Maus Spiele- und Multimedia-Programmierung 7
G Problem beim Zeichnen von LineArrays Spiele- und Multimedia-Programmierung 9
P linie in bild zeichnen Spiele- und Multimedia-Programmierung 2
G Auf 3D Box zeichnen Spiele- und Multimedia-Programmierung 4
K mit Canvas übereinander zeichnen Spiele- und Multimedia-Programmierung 4
G 3D Raum zeichnen Spiele- und Multimedia-Programmierung 7
H Kreis zeichnen mittels Schleife & drawLine Spiele- und Multimedia-Programmierung 4
B Probleme beim zeichnen Spiele- und Multimedia-Programmierung 15
N Bild zu zeichnen (drawImage) klappt nur manchmal?? Spiele- und Multimedia-Programmierung 8
T Effizient zeichnen Spiele- und Multimedia-Programmierung 12
H mit Java2D Markierung über JTable zeichnen und diese bewegen Spiele- und Multimedia-Programmierung 2
C Graphische Benutzerschnittstelle, Problem beim Zeichnen Spiele- und Multimedia-Programmierung 4
J schnellste alternative um in java zu "zeichnen" Spiele- und Multimedia-Programmierung 17
conan2 Objekte in richtiger Z-Reihenfolge zeichnen Spiele- und Multimedia-Programmierung 2
G Punkte in Java3D zeichnen Spiele- und Multimedia-Programmierung 2
S Pixel zeichnen Spiele- und Multimedia-Programmierung 3
S Bild in Speicherbild zeichnen = Nichts? Spiele- und Multimedia-Programmierung 3
G Farbig zeichnen ohne java.awt.Color? Spiele- und Multimedia-Programmierung 5
S Wie kann ich das Zeichnen der Grafik feiner machen? Spiele- und Multimedia-Programmierung 9
M Wie kann man Kreisringe zeichnen ? Spiele- und Multimedia-Programmierung 12
C Graphics 2D Zeichnen Spiele- und Multimedia-Programmierung 4
R Kreuz lässt sich nicht zeichnen Spiele- und Multimedia-Programmierung 11
F einzelne Polygone(Graphics) schneller als and. Fig. zeichnen Spiele- und Multimedia-Programmierung 3
L ein Rechteck zeichnen Spiele- und Multimedia-Programmierung 6

Ähnliche Java Themen

Neue Themen


Oben