Java3D Rendering Problem

  • Themenstarter Themenstarter Turakar
  • Beginndatum Beginndatum
T

Turakar

Gast
Hallo,

ich habe ein Problem beim Rendern meines SimpleUniverse auf einem MainFrame.
Hier ist mein (momentan schlanker) Code:
[Java]
package main;

import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Frame;

import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;

import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.SimpleUniverse;

public class Simple3D extends Applet
{
private SimpleUniverse u;


/**
* @param args
*/
public static void main(String[] args)
{
Frame frame = new MainFrame(new Simple3D(), 256, 256);

}

public Simple3D()
{
this.setLayout(new BorderLayout());
Canvas3D canavas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
BranchGroup szene = macheSzenegraph();
szene.compile();
u = new SimpleUniverse(canavas3D);
u.getViewingPlatform().setNominalViewingTransform();
u.addBranchGraph(szene);
}

public BranchGroup macheSzenegraph()
{
BranchGroup objWurzel = new BranchGroup();
Transform3D drehung = new Transform3D();
Transform3D drehung2 = new Transform3D();
drehung.rotX(Math.PI / 4.0d);
drehung2.rotY(Math.PI / 5.0d);
drehung.mul(drehung2);
TransformGroup objDreh = new TransformGroup(drehung);
objDreh.addChild(new ColorCube(0.4));
objWurzel.addChild(objDreh);
return objWurzel;
}

}
[/code]

Freue mich über schnelle Antworten!

Turakar
 
noerasebackground bewirkt dass er keinhintergrundlöschen durchführt :joke: Bei vielen Anwendungen mit OpenGL und manchen Grafikkarten wird (vereinfacht gesagt) das von OpenGL gerenderte Bild durch das Löschen des Canvas-Hintergrundes "übermalt". Hilft es denn?
 
Gelöst!!!
Durch das hinzufügen von folgender Codezeile
[JAVA=41]add("Center", canavas3D);[/code]
klappt es!
Hier der gesamte Code zum kopieren und/oder durchlesen:
Java:
import java.applet.Applet;
import java.awt.BorderLayout;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.SimpleUniverse;

@SuppressWarnings("serial")
public class Simple3D extends Applet
{
	private SimpleUniverse u;
	

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		new MainFrame(new Simple3D(), 256, 256);
		
	}
	
	public Simple3D()
	{
		this.setLayout(new BorderLayout());
		Canvas3D canavas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
		add("Center", canavas3D);
		BranchGroup szene = macheSzenegraph();
		szene.compile();
		u = new SimpleUniverse(canavas3D);
		u.getViewingPlatform().setNominalViewingTransform();
		u.addBranchGraph(szene);
	}
	
	public BranchGroup macheSzenegraph()
	{
		BranchGroup objWurzel = new BranchGroup();
		Transform3D drehung = new Transform3D();
		Transform3D drehung2 = new Transform3D();
		drehung.rotX(Math.PI / 4.0d);
		drehung2.rotY(Math.PI / 5.0d);
		drehung.mul(drehung2);
		TransformGroup objDreh = new TransformGroup(drehung);
		objDreh.addChild(new ColorCube(0.4));
		objWurzel.addChild(objDreh);
		return objWurzel;
	}

}
:toll::toll::toll::toll::toll:
 

Zurück
Oben