JAVA3D - WRL Transform

Bastie

Mitglied
Hey Leute, ich habe quasi "gerade erst angefangen", mich mit JAVA3D zu befassen und hocke nun bei einem Transformproblem.

Mein Ziel bzw. die Aufgabenstellung:
1. Pinguin (Madagaskar-alike) in Cinema4D erstellen.
2. Via VRML97 bzw. 3dsloader in Java3D laden
3. Picking
4. Arm des Pinguins soll salutieren können.

Die ersten 3 Punkte habe ich jetzt nach einigen Mühen umschifft, beim vierten Punkt habe ich aber kaum einen Ansatz da. Also ich habe das Objekt in Java3d, kann auch einzelne Unterobjekte (z.B. Arm_L, Arm_R) identifizieren. Jetzt weiß ich nicht, wie ich diese bewege. Ich hau hier mal meinen Code rein, vielleicht kann mir ja jemand helfen. Für generelle Optimierungsvorschläge bin ich natürlich auch immer zu haben, da ich mich an einem Tutorial entlanggehangelt habe kann es sein, dass das alles unschöner nonsens ist - aber es funktioniert bis dahin ;)

Java:
/*
 * <b>EinfacherVRMLLoader.java</b>
 * 
 * Ermoeglicht  Laden und Objekt-Picking in der Szene
 * Objektname erscheint als Konsolenausgabe
 * 
 */

package pinguin;

import java.awt.*;
import java.awt.event.*;
import java.util.Enumeration;
import java.util.Hashtable;
import javax.swing.JFrame;
import com.sun.j3d.utils.picking.PickCanvas;
import com.sun.j3d.utils.picking.PickResult;
import com.sun.j3d.utils.picking.PickTool;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
import com.sun.j3d.utils.behaviors.mouse.MouseZoom;
import com.sun.j3d.utils.behaviors.mouse.MouseTranslate;
import com.sun.j3d.utils.geometry.ColorCube;

import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.loaders.Scene;
import com.sun.j3d.loaders.vrml97.VrmlLoader;

/**
 * Hauptklasse des Programms, implementiert die gesamte Szene des Programms. 
 */
public class EinfacherVRMLLoader extends JFrame implements ActionListener,MouseListener {
    
    private static final long serialVersionUID = 1L;
    public Scene     scene    = null;
    public String    WRL_File = null;
    Canvas3D         canvas;
    SimpleUniverse   universe;
    TransformGroup   vpTransGroup;
    VrmlLoader       loader;
    View             view;
    BranchGroup      sceneRoot;
    TransformGroup   examineGroup;
    BranchGroup      sceneGroup;
    BoundingSphere   sceneBounds;
    DirectionalLight headLight;
    PointLight       pointLight;
    AmbientLight     ambLight;
    Cursor           waitCursor;
    Cursor           handCursor;
    PickCanvas       pickCanvas;
    TextField        textField;

    
    /**
     * Definition der Fenstereigenschaften und der Position der Szenenkamera
     *
     */
    public EinfacherVRMLLoader() {
    	
    	// Mechanismus zum Schliessen des Fensters und beenden des Programms
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
	    setLayout(new BorderLayout());
        GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();

	    canvas = new Canvas3D(config); 
	    add("Center",canvas);

        waitCursor = new Cursor(Cursor.WAIT_CURSOR); 
	    handCursor = new Cursor(Cursor.HAND_CURSOR);

	    // Universum anlegen
        universe = new SimpleUniverse(canvas);
        ViewingPlatform vp = universe.getViewingPlatform();
        vpTransGroup = vp.getViewPlatformTransform();
        Viewer viewer = universe.getViewer();
	    view = viewer.getView();

	    // Pinguin laden
	    WRL_File="Pinguin_M6_bereit2.wrl";
	     
	    // Hier wird die Szene geladen....
        init_wrl(WRL_File);
        
        // Hier wird die Beleuchtung und die Mausinteraktion eingerichtet 
	    setupBehavior();
	    
	    // Hier wird die geladene Szene aufgeschlüsselt und das Picking initiiert
	    // und Bewegung durch Behavior
	    gotoLocation();	
			
	    setTitle("Laden von Objekten + Picking | Beuckmann, Werner");
	    setSize(800,800);
	    // Anweisungstext an Fensterunterkante schreiben
		Label label = new Label("Kameraeinstellung:"
				+ " li.Maustaste: Rotation, "
				+ " re.Maustaste: Translation, "
				+ " Alt + li.Maustaste: Zoom");
		// South in Fensterunterkante
		getContentPane().add("South", label);
		// Pinguin in die Mitte vom Fenster
	    getContentPane().add("Center", canvas);
	    setVisible(true);
    }

    /* (non-Javadoc)
     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
     */
    public void actionPerformed(ActionEvent ae) {
    	  //gotoLocation(textField.getText());
    }

    /**
     * Importieren der wrl-Datei
     *
     * @param wrl_file Dateiname als String.
     */
    public void init_wrl(String wrl_file) {
      	loader   = new VrmlLoader();
        System.out.println("Aus dieser Datei wird gelanden: "+WRL_File);
	      try {
	    	  // geladener Pinguin
	          scene = loader.load(wrl_file);
	          if (scene != null) System.out.println("Datei mit der Szene wurde geladen"); 	    
	      } catch (Exception e) {
	          System.out.println("Fehler! Scene nicht gefunden:");
        }
    }
    
    /**
     * Mausverhalten, Beleuchtung
     */
    private void setupBehavior() {
    	
        // der Grundstein...
        sceneRoot = new BranchGroup();
        sceneRoot.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
        sceneRoot.setCapability(BranchGroup.ALLOW_CHILDREN_READ);
        sceneRoot.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
        
        // Hintergrundfarbe setzen
        Background background = new Background();
        background.setColor(1.0f,1.0f,1.0f);	// weiss
        // die "gebundene Kugel" - Sphaere
        BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), Double.MAX_VALUE);
        background.setApplicationBounds(bounds);
        sceneRoot.addChild(background);

        // diese TG erlaubt "Child"-Elemente, sich an die Gruppe
        // anzuhaengen und deren Inhalte zu Lesen
        examineGroup = new TransformGroup();
        examineGroup.setCapability(TransformGroup.ALLOW_CHILDREN_EXTEND);
        examineGroup.setCapability(TransformGroup.ALLOW_CHILDREN_READ);
        examineGroup.setCapability(TransformGroup.ALLOW_CHILDREN_WRITE);
        examineGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
        examineGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        sceneRoot.addChild(examineGroup);

        BoundingSphere behaviorBounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0),10000.0f);

        // Definition von Maus-Aktionen fuer die komplette Szene...
        MouseRotate mr = new MouseRotate();
        mr.setTransformGroup(examineGroup);
        mr.setSchedulingBounds(behaviorBounds);
        sceneRoot.addChild(mr);

        MouseTranslate mt = new MouseTranslate();
        mt.setTransformGroup(examineGroup);
        mt.setSchedulingBounds(behaviorBounds);
        sceneRoot.addChild(mt);

        MouseZoom mz = new MouseZoom();
        mz.setTransformGroup(examineGroup);
        mz.setSchedulingBounds(behaviorBounds);
        sceneRoot.addChild(mz);

        // ein wenig Licht ins Dunkel bringen...
        
        // Beleuchtung erzeugen
        BoundingSphere lightBounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 10000.0f);
        ambLight = new AmbientLight(true, new Color3f(0.0f, 0.0f, 1.0f));
        ambLight.setInfluencingBounds(lightBounds);
        ambLight.setCapability(Light.ALLOW_STATE_WRITE);
        
        //sceneRoot.addChild(ambLight); 	// Licht wirkt blau hiermit... unschoen!
        headLight = new DirectionalLight();
        headLight.setCapability(Light.ALLOW_STATE_WRITE);
        headLight.setInfluencingBounds(lightBounds);
        sceneRoot.addChild(headLight);
       
        Color3f pointColour= new Color3f(1.0f,1.0f,1.0f);
        Point3f pointPosition =new Point3f(1.0f,1.0f,1.0f);
        Point3f pointAbn = new Point3f(1.0f,0.0f,1.0f);
        pointLight = new PointLight(pointColour,pointPosition,pointAbn);
        pointLight.setInfluencingBounds(lightBounds);
        sceneRoot.addChild(pointLight);
       
        universe.addBranchGraph(sceneRoot);
    }
  
    /**
     * Die zu pickenden Objekte in die Hashtabelle laden und
     * an den Szenengraphen anhaengen
     */
	public void gotoLocation() {

		canvas.setCursor(waitCursor);

		// Fehlerfall abfangen
		if (sceneGroup != null) {
			sceneGroup.detach();
		}

		if (scene != null) {
			System.out.println("geladene Szene aufschluesseln, Picking initiieren");
			
			Hashtable obj = scene.getNamedObjects();
			BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0,0.0), Double.MAX_VALUE);

			Enumeration eval = obj.elements();
			Enumeration ekey = obj.keys();

			if (eval != null) {
				while (eval.hasMoreElements() != false) {
					Object val = eval.nextElement();
					Object key = ekey.nextElement();
					all_pick(val, key);
					System.out.println("Schluessel: " + key);	// Polygonname aus c4d
					System.out.println("Wert: " + val);			// Adresswert javax.media....@3939j39
				}
			}

			sceneGroup = scene.getSceneGroup();
			if (sceneGroup != null) {
				canvas.addMouseListener(this);							// Maus muss draufhoeren
				pickCanvas = new PickCanvas(canvas, sceneGroup);		// Picking
				pickCanvas.setMode(PickTool.GEOMETRY_INTERSECT_INFO);
				pickCanvas.setTolerance(4.0f);
			}
			

			// Pinguin Position bestimmen
			Transform3D tfsceneGroup = new Transform3D();
			// Pinguin Groesse
			tfsceneGroup.setScale(0.0099d);
			// Pinguin Position
			tfsceneGroup.setTranslation(new Vector3f(0.0f, -5.0f, 18.0f));	// x re.li, y ho.ru, z na.fern
			// altes: tfsceneGroup.setScale(0.005d);tfsceneGroup.setTranslation(new Vector3f(-4.0f,-10.0f,10.0f));
			examineGroup.setTransform(tfsceneGroup);
			examineGroup.addChild(sceneGroup);

			sceneBounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0),10000.0);			
			
			setViewpoint();
			
			
			
		} else {
			System.out.println("Fehler: Keine Szene vorhanden");
		}
		canvas.setCursor(handCursor);
	}

    /**
     * Flags setzen
     *
     * @param tf TransformGroup, 
     */
	//  Flags die gesetzt werden muessen, um Tastatur Sachen zu machen  
	public void setFlags(TransformGroup tf) {
        if (tf != null) {
    	      tf.setCapability( TransformGroup.ALLOW_TRANSFORM_WRITE);
    	      tf.setCapability( TransformGroup.ALLOW_TRANSFORM_READ);
    	      tf.setCapability( TransformGroup.ALLOW_CHILDREN_EXTEND);
    	      tf.setCapability( TransformGroup.ALLOW_CHILDREN_READ);
    	      tf.setCapability( TransformGroup.ALLOW_CHILDREN_WRITE);
        }
    }

    /**
     * Zustaendig fuer das Zugreifen und Identifizieren der einzelnen Objekte in der Szene bei Maus-Interaktionen.
     *
     * @param val Objekt des Szenengraphen
     * @param key Bezeichnung des Objektes
     */
    void all_pick(Object val,Object key) {
    	
        if (val instanceof SceneGraphObject!=false) {
    	      SceneGraphObject sgo=(SceneGraphObject) val;
    	      sgo.setUserData(key);

    	      if (sgo instanceof Group) {
    	          Group g=(Group) sgo;
    		        Enumeration ekind=g.getAllChildren();
    	         	while (ekind.hasMoreElements()!=false)
    		            all_pick(ekind.nextElement(),key);
            } else if (sgo instanceof Shape3D) {
    	          PickTool.setCapabilities((Node)sgo, PickTool.INTERSECT_FULL);
            }
    	  }
    }

    /* (non-Javadoc)
     * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
     */
    @Override
   
    public void mouseClicked(MouseEvent e) {
    	
    	
        System.out.println("Maus-Klick->");
        Hashtable objekt=scene.getNamedObjects();
        BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), Double.MAX_VALUE);
        pickCanvas.setShapeLocation(e);
        PickResult[] result =pickCanvas.pickAllSorted();
		
        if (result!=null) {
            for(int i=0;i<result.length;i++){
                PickResult pr=result[i];
                Node an=pr.getObject();
                if(an.getUserData()!=null){
                   // System.out.println("Sorteirte Objekte "+i+"= "+an.getUserData());
                }
            }
        }
        PickResult pr=pickCanvas.pickClosest();
        if (pr!=null) {
            Node an=pr.getObject();
            if(an.getUserData()!=null){
            	System.out.println("Aktuelles Objekt: "+an.getUserData());
            	if(an.getUserData().equals("Arm_L")){
            		System.out.println("Linken Arm getroffen");
            	}
            }
            
            	
        }
    }    
    
    /**
     * die Sicht des Betrachter auf die Szene
     */
    void setViewpoint() {
    	
        Transform3D viewTrans = new Transform3D();
        Transform3D eyeTrans = new Transform3D();
        Point3d center = new Point3d();
        sceneBounds.getCenter(center);
        Vector3d temp = new Vector3d(center);
        viewTrans.set(temp);
        // Kann auch Pinguin Werte setzen, sind jetzt aber oben
        // x = 0.4; y = -8.0; z = 20.0;
        temp.x = 0;
        temp.y = -5.0;
        temp.z = 35.0;
        
        eyeTrans.set(temp);
        viewTrans.mul(eyeTrans);
        vpTransGroup.setTransform(viewTrans);
    }

    /**
     * Die main - Methode
     *
     * @param args the arguments
     */
    public static void main(String[] args) {
        new EinfacherVRMLLoader();
    }

    /* (non-Javadoc)
     * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
     */
    @Override
    public void mouseEntered(MouseEvent arg0) {
        // TODO Auto-generated method stub
    }
    
    /* (non-Javadoc)
     * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
     */
    @Override
    public void mouseExited(MouseEvent arg0) {
        // TODO Auto-generated method stub
    }
    
    /* (non-Javadoc)
     * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
     */
    @Override
    public void mousePressed(MouseEvent arg0) {
        // TODO Auto-generated method stub
    }
    
    /* (non-Javadoc)
     * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
     */
    @Override
    public void mouseReleased(MouseEvent arg0) {
        // TODO Auto-generated method stub
    }
}

Der vielleicht besseren Lesbarkeit halber auch nochmal als Pastebin: [Java] /* * <b>EinfacherVRMLLoader.java</b> * * Ermoeglicht Laden und Objekt-Pi - Pastebin.com

Also schonmal vielen Dank im Voraus, ich hoffe ihr könnt mir helfen. Ich lade mir derweil mal PDFs über Transformgroups herunter. Problem ist, dass ich das bis morgen fertig haben möchte. Aber, klar, am besten schon gestern. Ich hab aber halt das Gefühl, dass das nicht mehr allzu schwer ist, ich nur nicht den richtigen Ansatz finde.

Liebe Grüße!
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Für ein KSKB ist eine einzelne, große Datei zwar gut, aber für den Rest eher nicht ;) Die WRL könnte noch hilfreich sein, damit man es testen kann, aber vielleicht würde das auch nicht sooo viel helfen.

TransformGroups sind schon das richtige Stichwort. Das schwierige ist, dass man die NUR auf den Arm wenden kann. Evtl wäre es einfacher, wenn die einzelteile (bzw. speziell der Arm) in einer einzelnen WRL liegen würde. So muss man sich vermutlich durch die "Scene" hangeln, und schauen, dass man das richtige Teil findet, und dort dann evtl. eine TransformGroup davorhängen ... könnte frickelig werden, aber schau einfach mal, wie weit du mit den TransformGroups kommst.
 

Bastie

Mitglied
Ahjo, das Problem hatte ich schon beim Picking, dafür ist ja die fktn MouseClicked da (jedenfalls soweit ich das verstehe). Jetzt habe ich da das Node-Objekt "an". Kann ich da nicht irgendwie über ne Transformgroup drauf zugreifen innerhalb der Bedingung
[JAVA=333]
if(an.getUserData().equals("Arm_L")){
System.out.println("Linken Arm getroffen");
[/code]

oder ist das der falsche Ansatz?
 

Marco13

Top Contributor
Ich bin leider nicht so "firm" mit VRML und dessen umsetzung in Java3D. Im schlimmsten Fall GIBT es für den Arm keine TransformGroup, oder sie ist read-only... Das müßte man sich genauer ansehen. (Unabhängig davon, wie viel Zeit ich da rein investieren könnte: Kannst du die WRL irgendwo hochladen?)
 

Marco13

Top Contributor
Ja, die PN kam an.

Man müßte jetzt den VRML-Loader noch genauer ansehen und so, um rauszufinden, ob man sich z.B. drauf verlassen kann, dass die Einzelteile immer an TransformGroups hängen (das müßte nicht unbedingt so sein!). Aber auf Basis des aktuellen Standes hab' ich mal zwei kleine Änderungen eingefügt:

In der gotoLocation:
Java:
                    System.out.println("Schluessel: " + key);   // Polygonname aus c4d
                    System.out.println("Wert: " + val);         // Adresswert javax.media....@3939j39
                    
                    // XXX
                    if (val instanceof TransformGroup)
                    {
                        TransformGroup tg = (TransformGroup)val;
                        setFlags(tg);
                    }

Alle TransformGroups werden veränderbar gemacht. Das könnte man ggf. einfacher oder eleganter machen, und nur auf bestimmte TGs anwenden, aber für den ersten Test reicht's wohl.

In der mouseCklicked wird dann eine Methode aufgerufen:
Java:
        PickResult pr=pickCanvas.pickClosest();
        if (pr!=null) {
            Node an=pr.getObject();
            if(an.getUserData()!=null){
                System.out.println("Aktuelles Objekt: "+an.getUserData());
                
                
                if(an.getUserData().equals("Arm_L")){
                    System.out.println("Linken Arm getroffen");
                    
                    // XXX
                    testMove("Arm_L");
                    
                }
            }
            
                
        }
    }    
    
    private void testMove(String name)
    {
        Hashtable<?, ?> hashtable = scene.getNamedObjects();
        Object value = hashtable.get(name);
        if (value instanceof TransformGroup)
        {
        	TransformGroup tg = (TransformGroup)value;
        	Matrix4f m = new Matrix4f();
        	m.setIdentity();
        	m.setTranslation(new Vector3f(0,0,-100));
        	Transform3D t = new Transform3D(m);
        	tg.setTransform(t);
        }
        else
        {
        	System.out.println("No transform group");
        }
    }

Auch da könnte man sich was eleganteres überlegen, aber so zur Demo wird dort der Linke (bzw. Rechte ;) ) Arm ein Stück wegbewegt.

Das "eleganter" bezieht sich darauf, dass man vielleicht die "bewegbaren Dinge" schon früher raussuchen und speichern könnte - sich quasi ein eigenes "(Daten-)Modell" des Pinguins zu erstellen, oder schon sowas wie
Java:
private TransformGroup leftArmTransform = ...

private void init()
{
...
    leftArmTransform = holDirDenAusDerSzene("Arm_L");
...

}

public void salute()
{
    startThreadThatRotates(leftArmTransform);
}

damit man das nicht immer wieder aus der "Scene" rausholen muss. Aber ehrlich gesagt habe ich nicht so viel praktische Erfahrung mit "größeren" Java3D-Projekten und ihrer Strukturierung, speziell dem Scene-Interface und dem VRML-Loader und so, und ich weiß auch nicht, welche Funktionalitäten du dort noch einbauen willst...
 

Bastie

Mitglied
Also erstmal vielen vielen Dank dafür! Dass die TGs nicht änderbar sind... groar. Für meine Fälle reicht das jedenfalls absolut, wollte nur mal "rudimentär" gucken wie sowas geht.
Ich werd jetzt auch zu jogl oder jmonkey wechseln und hoffe, dass mir das viel arbeit abnimmt ;)
 

Kr0e

Gesperrter Benutzer
Wird es, jMe ist sehr umfangreich. Der Editor ist allerdings Murks... Ist zwar ein nettes Spielzeug aber stürzt bei mir gefühlte alle 10 min ab. Vorallem wenn man mti dem GUI Editor arbeitet... Ich wüsste gern mal, wo man einfach die binaries her bekommt ohne gleich die ganze Platform zu laden... =(
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Java3d in Eclipse einbinden Spiele- und Multimedia-Programmierung 4
Neumi5694 Java3D Viewer Beschriftung Spiele- und Multimedia-Programmierung 1
C Java3D Transformieren von obj. Datein Spiele- und Multimedia-Programmierung 0
M Cylinder anhand eines Vektors ausrichten (Java3d) Spiele- und Multimedia-Programmierung 0
Ruvok Java3D Tutorial gesucht Spiele- und Multimedia-Programmierung 5
U Hilfe bei Implementierung eines PointSounds in Java3D Spiele- und Multimedia-Programmierung 1
R Java3d ViewingPlatform erst Verschieben und dann RotationsInterpolator Spiele- und Multimedia-Programmierung 0
D Java3D - Blickfeld Spiele- und Multimedia-Programmierung 1
P Java3D Box Dimensionen und Positionierung Spiele- und Multimedia-Programmierung 1
E Java3D Objekt skalieren per JSlider/JButton Spiele- und Multimedia-Programmierung 10
S Java3D: Primitives zu einem Objekt kombinieren Spiele- und Multimedia-Programmierung 7
J Java3D - Textur laden geht nicht Spiele- und Multimedia-Programmierung 9
J Java3D - Farben vermischen sich Spiele- und Multimedia-Programmierung 7
T Java3D Rendering Problem Spiele- und Multimedia-Programmierung 7
S Java3D oder JMonkey? Spiele- und Multimedia-Programmierung 17
H Java3D - Textur aufs innere einer Sphere mappen Spiele- und Multimedia-Programmierung 9
C java 3d ohne Java3d Spiele- und Multimedia-Programmierung 28
Maxim6394 [Java3D] Probleme bei Kollision Spiele- und Multimedia-Programmierung 7
Maxim6394 [Java3D] lookAt Mausposition Spiele- und Multimedia-Programmierung 17
Maxim6394 [Java3D] Probleme mit KeyFrame Animationen Spiele- und Multimedia-Programmierung 9
K Java3D als Applet ohne Installation von Java3d Spiele- und Multimedia-Programmierung 6
D Java3D Installation: package javax.media.j3d not found Spiele- und Multimedia-Programmierung 5
C Java3D Texture Mapping Spiele- und Multimedia-Programmierung 2
W Java3D: Kanten die hinter einem Objekt liegen werden gezeigt Spiele- und Multimedia-Programmierung 2
W Java3D: Farbe von Objekten stimmt nicht mit übergebenem RGB-Wert überein Spiele- und Multimedia-Programmierung 9
M Eigene Renderengine ohne Java3D,etc. Spiele- und Multimedia-Programmierung 19
C Java3D Sound spielt nur einen Sound ab. Spiele- und Multimedia-Programmierung 8
A JAVA3D TransformGroup <--> Group Problem Spiele- und Multimedia-Programmierung 3
M [Java3D] Animation von mehreren Objekten Spiele- und Multimedia-Programmierung 7
W Java3D: Eckkoordinaten einer Box herausfinden Spiele- und Multimedia-Programmierung 18
T Java3D: Objekte platzieren und entfernen? Spiele- und Multimedia-Programmierung 7
T Java3D: Nur die Kanten des Würfels rendern? Spiele- und Multimedia-Programmierung 4
W Java3D setBounds(BoundingBox) Spiele- und Multimedia-Programmierung 6
T [gelöst] Java3D: Unerwünschte Rotation um die 3.Achse vermeiden? Spiele- und Multimedia-Programmierung 3
G Eclipse Problem mit Java3d Spiele- und Multimedia-Programmierung 3
T Java3D - Lichtquelle einbauen Spiele- und Multimedia-Programmierung 7
jemandzehage java3d parallel und perspective view Spiele- und Multimedia-Programmierung 5
H Cinema 4D in Java3D importieren Spiele- und Multimedia-Programmierung 2
1 [Java3D] komplexes Projekt? Spiele- und Multimedia-Programmierung 10
P .obj-Datei in Java3D laden: ParsingErrorException Spiele- und Multimedia-Programmierung 7
C Java3D Lichtquelle beim Beobachter Spiele- und Multimedia-Programmierung 2
C Java3D Interaktion während Animation Spiele- und Multimedia-Programmierung 3
aze Java3D: Flächen teilen Spiele- und Multimedia-Programmierung 15
P Java3D Textur verzerrt Spiele- und Multimedia-Programmierung 3
aze Java3D: Gegenstände aufeinander zubewegen ohne Kollision Spiele- und Multimedia-Programmierung 4
D [JAVA3D] Es werden 2 Fenster erzeugt und auf dem falschen gezeichnet Spiele- und Multimedia-Programmierung 3
aze Java3D: leere Räume füllen Spiele- und Multimedia-Programmierung 2
aze Java3d:Helligkeit von Shape3D ändern Spiele- und Multimedia-Programmierung 2
S Einschätzung zu Java3D-Einstieg Spiele- und Multimedia-Programmierung 3
F Programm mit Java3D unter Linux laufen lassen Spiele- und Multimedia-Programmierung 3
I Vergleich von Java3D und OpenGL Spiele- und Multimedia-Programmierung 17
W Waterslide mit Java3D Spiele- und Multimedia-Programmierung 11
M Java3D Picking - falsche Objekte werden gepickt Spiele- und Multimedia-Programmierung 3
M [Java3D] Rotieren der Scene NICHT des POV Spiele- und Multimedia-Programmierung 4
F Jogl oder Java3D ? Spiele- und Multimedia-Programmierung 20
K Java3D Abfängerfrage Spiele- und Multimedia-Programmierung 3
aze Java3D:Farbige Flächen verschwinden lassen(Transparenz- oder Colorinterpolator?)) Spiele- und Multimedia-Programmierung 5
C Java3D PositionInterpolator Spiele- und Multimedia-Programmierung 3
G [Java3D] Probleme bei Animation Spiele- und Multimedia-Programmierung 4
E [JAVA3D] Kamerasteuerung Spiele- und Multimedia-Programmierung 3
E [JAVA3D] Schattenstrich durch die Szene Spiele- und Multimedia-Programmierung 4
M Grundsätzliche Java3D Fragen Spiele- und Multimedia-Programmierung 2
C Java3D SceneGraohPath Spiele- und Multimedia-Programmierung 2
C Java3D Rotation um einen Punkt (y-achse) Spiele- und Multimedia-Programmierung 2
G Java3D plattformunabhängig bundeln Spiele- und Multimedia-Programmierung 3
TheKing Java3D-Shooter View Spiele- und Multimedia-Programmierung 2
A Java3D tutorial? Spiele- und Multimedia-Programmierung 3
R Java3D Kollisionserkennung und Schwerkraft Spiele- und Multimedia-Programmierung 17
M Java3D Objekte entfernen und hinzufügen Spiele- und Multimedia-Programmierung 10
J Java3d Schnelle Geschosse Spiele- und Multimedia-Programmierung 12
D Kann ich mit Java3D 2D Daten als 3D surfaceplot plotten? Spiele- und Multimedia-Programmierung 5
J Java3d setTextureTransform verändert J3DGraphics2D Spiele- und Multimedia-Programmierung 4
J Hilfe: Rotation X und Y Achse (Java3d) Spiele- und Multimedia-Programmierung 12
K Java3D: LineStripArray Spiele- und Multimedia-Programmierung 2
P Java3D - Zylinder genau wie Vektor ausrichten Spiele- und Multimedia-Programmierung 5
Developer_X Java3D Mensch Ärgere Dich nicht. Spiele- und Multimedia-Programmierung 10
C JAVA3D Rotation um einen bestimmten Punkt Spiele- und Multimedia-Programmierung 20
Developer_X Java3D-Ungeeignet für 3D Spiele wegen Heap Space=? Spiele- und Multimedia-Programmierung 23
Developer_X Java3D Canvas post Renderer und? Spiele- und Multimedia-Programmierung 5
A Java3D Sichtweite Spiele- und Multimedia-Programmierung 2
"Er" Kamera rotation in Java3D Spiele- und Multimedia-Programmierung 2
A Java3D: Behavior scheduling bounds Spiele- und Multimedia-Programmierung 3
Developer_X THE BALL (needs Java3D) Spiele- und Multimedia-Programmierung 34
Developer_X Java3D Game_(die erste) Spiele- und Multimedia-Programmierung 2
Developer_X Java3D und while schleifen Spiele- und Multimedia-Programmierung 4
Developer_X Collisionserkennung in Java3D Spiele- und Multimedia-Programmierung 3
Developer_X Java3D Node -> Obj Data Spiele- und Multimedia-Programmierung 2
Developer_X Figuren werden nicht angezeigt (Java3D) Spiele- und Multimedia-Programmierung 5
S PDFRenderer und Java3D Spiele- und Multimedia-Programmierung 2
Developer_X Java3D- der Mausklick auf Nodes Spiele- und Multimedia-Programmierung 3
Developer_X Java3D Point Sound Spiele- und Multimedia-Programmierung 71
Developer_X Lines in Java3D Spiele- und Multimedia-Programmierung 4
V Java3D: HUD erstellen Spiele- und Multimedia-Programmierung 2
V Java3D: scheinende Sonne Spiele- und Multimedia-Programmierung 4
V Java3D: Ringe für Saturn erstellen Spiele- und Multimedia-Programmierung 8
V Java3D: automatisches Bewegen der Kamera Spiele- und Multimedia-Programmierung 19
V Java3D: mehrere ViewingPlaforms in Sonnensystem Spiele- und Multimedia-Programmierung 8
Developer_X Thread in Java3D Spiele- und Multimedia-Programmierung 8
B Java3D .obj dateien Spiele- und Multimedia-Programmierung 2
Developer_X Java3D's next TopModel Spiele- und Multimedia-Programmierung 16

Ähnliche Java Themen

Neue Themen


Oben