K
Kima
Gast
Hallo zusammen.
Ich gehöre wie so viele hier zu den Leuten, die sich mal mit Java3D probieren wollen und dazu eine Sonnensystem-Simulation programmieren
Und nun stehe ich vor einem Problem. Ich habe das Sonnensystem mit allen Planeten und der Sonne als Pointlight. Solgane die Planeten untexturiert sind, werden die Spheres auch richtig vom Light geshaded aber soblad ich Texturen draufleg werden sie's eben nicht mehr :bahnhof:
Danke schon mal fürs Anschaun.
Ich gehöre wie so viele hier zu den Leuten, die sich mal mit Java3D probieren wollen und dazu eine Sonnensystem-Simulation programmieren
Und nun stehe ich vor einem Problem. Ich habe das Sonnensystem mit allen Planeten und der Sonne als Pointlight. Solgane die Planeten untexturiert sind, werden die Spheres auch richtig vom Light geshaded aber soblad ich Texturen draufleg werden sie's eben nicht mehr :bahnhof:
Danke schon mal fürs Anschaun.
Code:
// Imports
import java.applet.Applet;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.media.j3d.Appearance;
import javax.vecmath.*;
import com.sun.j3d.utils.image.*;
import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
import com.sun.j3d.utils.behaviors.mouse.MouseZoom;
public class Universum extends Applet{
static TransformGroup PlanetTG = new TransformGroup();
static Transform3D PlanetT3D = new Transform3D();
static BorderLayout layout = new BorderLayout();
static Panel universe = new Universum();
/*
Konstruktor
*/
public Universum() {
// BorderLayout layout = new BorderLayout();
Universum.universe = new Panel();
this.setLayout(Universum.layout);
add("Center", Universum.universe);
// Layout
//setLayout(new BorderLayout());
//ErstesFenster.add("Center", universe);
// Grafik Konfiguration
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
//Canvas
Canvas3D canvas3D = new Canvas3D(config);
// Canvas aus Layout setzen
add("Center", canvas3D);
// SceneGraph erstellen
BranchGroup scene = createSceneGraph();
// SimpleUniverse is a Convenience Utility class
SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
// Kamera zurückfahren
simpleU.getViewingPlatform().setNominalViewingTransform();
// Scene zum SimpleUniverse hinzufügen
simpleU.addBranchGraph(scene);
}
/*
BranchGroup erzeugen
*/
public BranchGroup createSceneGraph() {
//BranchGroup
BranchGroup RootBG = new BranchGroup();
// Hintergrund
Background background = new Background();
background.setColor(1.0f, 1.0f, 1.0f);
background.setApplicationBounds(new BoundingSphere());
//TransformGroups erstellen
TransformGroup MainTG = new TransformGroup();
//Capabilities setzen
PlanetTG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
PlanetTG.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
MainTG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
MainTG.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
//Kamera
//AxisAngle4f axis = new AxisAngle4f(0.6f,-2f,0f,(float)Math.toRadians(45));
AxisAngle4f axis = new AxisAngle4f(0.5f,0.5f,0.5f,0.5f);
PlanetT3D.setRotation(axis);
BoundingSphere BigBounds=new BoundingSphere(new Point3d(),100000);
//Sonnenlicht
PointLight sonnenlicht = new PointLight(new Color3f(5f,0f,0f),
new Point3f(-0f,0f,0f),
new Point3f(0f,0.25f,0f));
sonnenlicht.setInfluencingBounds(BigBounds);
SpotLight SLgt=new SpotLight(new Color3f(0f,1f,0f),
new Point3f(5.75f,-1f,-8.9f),
new Point3f(0f,0f,0f),
new Vector3f(-1f,0f,0f),(float)
Math.toRadians(25),7f);
RootBG.addChild(SLgt);
// RootBG.addChild(sonnenlicht);
//Maus Zoom und Drehen
MouseRotate myMouseRotate=new MouseRotate();
myMouseRotate.setTransformGroup(MainTG);
myMouseRotate.setSchedulingBounds(BigBounds);
RootBG.addChild(myMouseRotate);
MouseZoom myMouseZoom=new MouseZoom();
myMouseZoom.setTransformGroup(MainTG);
myMouseZoom.setSchedulingBounds(BigBounds);
RootBG.addChild(myMouseZoom);
// Planeten erzeugen und hinzufügen
Planet planet_mercury = new Planet(0);
Umlaufbahn umlaufbahn_mercury = new Umlaufbahn(planet_mercury);
Planet planet_venus= new Planet(1);
Umlaufbahn umlaufbahn_venus = new Umlaufbahn(planet_venus);
Planet planet_earth = new Planet(2);
Umlaufbahn umlaufbahn_earth = new Umlaufbahn(planet_earth);
Planet planet_mars= new Planet(3);
Umlaufbahn umlaufbahn_mars = new Umlaufbahn(planet_mars);
Planet planet_jupiter = new Planet(4);
Umlaufbahn umlaufbahn_jupiter = new Umlaufbahn(planet_jupiter);
Planet planet_saturn= new Planet(5);
Umlaufbahn umlaufbahn_saturn = new Umlaufbahn(planet_saturn);
Planet planet_uranus= new Planet(6);
Umlaufbahn umlaufbahn_uranus = new Umlaufbahn(planet_uranus);
Planet planet_neptune = new Planet(7);
Umlaufbahn umlaufbahn_neptune = new Umlaufbahn(planet_neptune);
Planet planet_pluto = new Planet(8);
Umlaufbahn umlaufbahn_pluto = new Umlaufbahn(planet_pluto);
// Objekte setzen
MainTG.addChild(PlanetTG); // PlanetTG auf RootBG setzen
MainTG.addChild(new Sphere(0.003f));
RootBG.addChild(background); // Hintergrundbild setzen
RootBG.addChild(MainTG);
// RootBG.addChild(sonnenlicht); // Sonnenlicht hinzufuegen
RootBG.compile(); // RootBG kompilieren
return RootBG;
}
/*
main - Öffnet neuen Frame
*/
public static void main(String args[]){
}
}