K
kubapl
Hallo Leute. Ich bin neu auf dem Gebiet java3d. Nun muss ich eine Aufgabe erstellen zu meinen Studium.
Die Aufgabe lautet wie folgt:
Programmieren Sie die Java-Applikation MagicSphere mit den folgenden Mindestanforderungen:
1. MagicSphere zeigt eine Kugel in einem dreidimensionalen Raum.
2. Der Hintergrund, den MagicSphere darstellt, besteht aus einem Ausschnitt des Quellcodes von MagicSphere.
3. MagicSphere ist in Java realisiert und nutzt die Java-3D-Klassen.
so weit so gut. Ich habe mich da nun mal den ganzen tag ran gesetzt und eigentlich bin ich sehr sicher das alles richtig ist. Nur er zeigt mit das Hintergrund Bild nicht an. Also der hintergrund soll ja ein auszug vom Quellcode selber sein also screen machen u.s.w.
Wenn ich das Prog starte sehe ich halt nur die Kugel auf einem schwarzen Hintergrund (wie gesagt er läd das Bild irgend wie nicht).
Hier mal der Quellcode:
Die stelle wo er das Bild laden soll ist ja nicht zu übersehen, aber wie gesagt er läd das Bild einfach nicht. Bin schon ganzen tag am verzweifeln. Muss den kack morgen auch noch abgeben.
Hier noch mal den Quellcode teil wo er das bild laden soll und zum hintergrund machen:
so sieht es aus: http://bilder-speicher.de/Jessie55729.vollbild.html
und so soll es eigentlich aussehen:http://www.250kb.de/u/061218/j/d27c5172.jpg
oder so:http://www.250kb.de/u/061218/j/1b54fcef.jpg
ich hoffe ihr könnt mir helfen das wäre echt super.
ps: kann es sein das ich irgend was falsch machen mit dem pfad zum bild
das meine ich:
schon mal vielen dank im vorraus.
gruss jakob
ps: der prof von der uni hat das genau so und beim ihm laden die bilder wie man auf den bildern sieht.
so nun reicht es aber. Ihr sei dran. Oh man der kack muss bsi morgen laufen
Die Aufgabe lautet wie folgt:
Programmieren Sie die Java-Applikation MagicSphere mit den folgenden Mindestanforderungen:
1. MagicSphere zeigt eine Kugel in einem dreidimensionalen Raum.
2. Der Hintergrund, den MagicSphere darstellt, besteht aus einem Ausschnitt des Quellcodes von MagicSphere.
3. MagicSphere ist in Java realisiert und nutzt die Java-3D-Klassen.
so weit so gut. Ich habe mich da nun mal den ganzen tag ran gesetzt und eigentlich bin ich sehr sicher das alles richtig ist. Nur er zeigt mit das Hintergrund Bild nicht an. Also der hintergrund soll ja ein auszug vom Quellcode selber sein also screen machen u.s.w.
Wenn ich das Prog starte sehe ich halt nur die Kugel auf einem schwarzen Hintergrund (wie gesagt er läd das Bild irgend wie nicht).
Hier mal der Quellcode:
Code:
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
import com.sun.j3d.utils.geometry.Primitive;
import com.sun.j3d.utils.geometry.Sphere;
import com.sun.j3d.utils.image.TextureLoader;
import com.sun.j3d.utils.universe.SimpleUniverse;
import com.sun.j3d.utils.applet.MainFrame;
import javax.media.j3d.Appearance;
import javax.media.j3d.Background;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.DirectionalLight;
import javax.media.j3d.Material;
import javax.media.j3d.TexCoordGeneration;
import javax.media.j3d.Texture;
import javax.media.j3d.TextureAttributes;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.vecmath.Color3f;
import javax.vecmath.Color4f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3f;
public class SimpleFigure3Da extends Applet
{
private SimpleUniverse u = null;
private SimpleFigure3Da()
{
super();
}
public BranchGroup createSceneGraph()
{
BranchGroup bg = new BranchGroup();
Appearance app = new Appearance();
Color3f ambientC =
new Color3f(0.9f, 0.2f, 1.0f);
Color3f emissiveC =
new Color3f(0.0f, 0.0f, 0.0f);
Color3f diffuseC =
new Color3f(0.9f, 0.2f, 1.0f);
Color3f specularC =
new Color3f(0.0f, 0.0f, 0.0f);
float shininess = 80.0f;
app.setMaterial(
new Material(
ambientC,
emissiveC,
diffuseC,
specularC,
shininess));
Sphere sphere =
new Sphere(
0.2f, Primitive.GENERATE_NORMALS, 40, app);
bg.addChild(sphere);
return bg;
}
public BranchGroup createBackground()
{
BranchGroup bg =
new BranchGroup();
Background back = new Background();
back.setApplicationBounds(
getBoundingSphere());
BranchGroup bgGeometry =
new BranchGroup();
Appearance app = new Appearance();
Texture tex = new TextureLoader(
"/text.jpg",
null).getTexture();
app.setTexture(tex);
app.setTexCoordGeneration(
new TexCoordGeneration(
TexCoordGeneration.SPHERE_MAP,
TexCoordGeneration.TEXTURE_COORDINATE_2));
app.setTextureAttributes(
new TextureAttributes(
TextureAttributes.REPLACE,
new Transform3D(),
new Color4f(),
TextureAttributes.NICEST));
Sphere sphere = new Sphere(1.0f,
Primitive.GENERATE_TEXTURE_COORDS |
Primitive.GENERATE_NORMALS_INWARD, 40, app);
bgGeometry.addChild(sphere);
back.setGeometry(bgGeometry);
bg.addChild(back);
return bg;
}
public void addLights(BranchGroup bg)
{
DirectionalLight light =
new DirectionalLight(
new Color3f(1.0f, 1.0f, 0.0f),
new Vector3f(-1.0f, -1.0f, -1.0f));
light.setInfluencingBounds(
this.getBoundingSphere());
bg.addChild(light);
}
public TransformGroup createBehaviors(
BranchGroup bg)
{
TransformGroup objTrans =
new TransformGroup();
bg.addChild(objTrans);
return objTrans;
}
BoundingSphere getBoundingSphere()
{
return new BoundingSphere(
new Point3d(0.0, 0.0, 0.0), 200.0);
}
public void init()
{
this.setLayout(new BorderLayout());
GraphicsConfiguration config =
SimpleUniverse.getPreferredConfiguration();
Canvas3D c = new Canvas3D(config);
this.add("Center", c);
u = new SimpleUniverse(c);
u.getViewingPlatform().
setNominalViewingTransform();
BranchGroup bgRoot = new BranchGroup();
TransformGroup tg = this.createBehaviors(bgRoot);
tg.addChild(this.createSceneGraph());
this.addLights(bgRoot);
u.addBranchGraph(bgRoot);
}
public void destroy()
{
u.cleanup();
}
public static void main(String[] args)
{
new MainFrame(new SimpleFigure3Da(), 300, 400);
}
}
Die stelle wo er das Bild laden soll ist ja nicht zu übersehen, aber wie gesagt er läd das Bild einfach nicht. Bin schon ganzen tag am verzweifeln. Muss den kack morgen auch noch abgeben.
Hier noch mal den Quellcode teil wo er das bild laden soll und zum hintergrund machen:
Code:
public BranchGroup createBackground()
{
BranchGroup bg =
new BranchGroup();
Background back = new Background();
back.setApplicationBounds(
getBoundingSphere());
BranchGroup bgGeometry =
new BranchGroup();
Appearance app = new Appearance();
Texture tex = new TextureLoader(
"/text.jpg",
null).getTexture();
app.setTexture(tex);
app.setTexCoordGeneration(
new TexCoordGeneration(
TexCoordGeneration.SPHERE_MAP,
TexCoordGeneration.TEXTURE_COORDINATE_2));
app.setTextureAttributes(
new TextureAttributes(
TextureAttributes.REPLACE,
new Transform3D(),
new Color4f(),
TextureAttributes.NICEST));
Sphere sphere = new Sphere(1.0f,
Primitive.GENERATE_TEXTURE_COORDS |
Primitive.GENERATE_NORMALS_INWARD, 40, app);
bgGeometry.addChild(sphere);
back.setGeometry(bgGeometry);
bg.addChild(back);
return bg;
}
so sieht es aus: http://bilder-speicher.de/Jessie55729.vollbild.html
und so soll es eigentlich aussehen:http://www.250kb.de/u/061218/j/d27c5172.jpg
oder so:http://www.250kb.de/u/061218/j/1b54fcef.jpg
ich hoffe ihr könnt mir helfen das wäre echt super.
ps: kann es sein das ich irgend was falsch machen mit dem pfad zum bild
das meine ich:
Code:
Texture tex = new TextureLoader(
"/text.jpg",
null).getTexture();
app.setTexture(tex);
schon mal vielen dank im vorraus.
gruss jakob
ps: der prof von der uni hat das genau so und beim ihm laden die bilder wie man auf den bildern sieht.
so nun reicht es aber. Ihr sei dran. Oh man der kack muss bsi morgen laufen
Zuletzt bearbeitet von einem Moderator: