Transform3D[] und TransformGroup[]

Status
Nicht offen für weitere Antworten.

Developer_X

Top Contributor
Hi, ich hab grad einen kleinen "createthesceneGraph" geschrieben, und bin da auf ein Problem gestoßen,
ihr kennt in Java doch diese Methode mit den "[]"
aber bei mir kommt eine Fehlermeldung obwohl ich alles richtig mache:
(wie ich denke)
kann mir da einer weiterhelfen?
[highlight=Java]
public BranchGroup createSceneGraph()
{
BranchGroup BG = new BranchGroup();
//
DirectionalLight DLgt=new DirectionalLight(new Color3f(0.8f,0.8f,0.8f),new Vector3f(-0.5f,-1f,-0.5f));
AmbientLight ALgt=new AmbientLight(new Color3f(0.8f,0.8f,0.8f));
BoundingSphere BigBounds=new BoundingSphere(new Point3d(),100000);

ALgt.setInfluencingBounds(BigBounds);
DLgt.setInfluencingBounds(BigBounds);
BG.addChild(ALgt);
BG.addChild(DLgt);
//
Appearance App = new Appearance();
App.setTexture((new TextureLoader("F:/Rayman/Films/Trailer/Main.jpg",null)).getTexture());
App.setTextureAttributes(new TextureAttributes(TextureAttributes.MODULATE,new Transform3D(),new Color4f(),TextureAttributes.FASTEST));

Transform3D[] a = new Transform3D[10];
a[1].setTranslation(new Vector3f(0,-1,0));
a[2].setTranslation(new Vector3f(0,0,0));
a[3].setTranslation(new Vector3f(0,0,0));
a[4].setTranslation(new Vector3f(0,0,0));
a[5].setTranslation(new Vector3f(0,0,0));
a[6].setTranslation(new Vector3f(0,0,0));
a[7].setTranslation(new Vector3f(0,0,0));
a[8].setTranslation(new Vector3f(0,0,0));
a[9].setTranslation(new Vector3f(0,0,0));
a[10].setTranslation(new Vector3f(0,0,0));

TransformGroup[] A = new TransformGroup[10];
A[1].setTransform(a[10]);
A[2].setTransform(a[2]);
A[3].setTransform(a[3]);
A[4].setTransform(a[4]);
A[5].setTransform(a[5]);
A[6].setTransform(a[6]);
A[7].setTransform(a[7]);
A[8].setTransform(a[8]);
A[9].setTransform(a[9]);
A[10].setTransform(a[10]);

BG.addChild(A[1]);
BG.addChild(A[2]);
BG.addChild(A[3]);
BG.addChild(A[4]);
BG.addChild(A[5]);
BG.addChild(A[6]);
BG.addChild(A[7]);
BG.addChild(A[8]);
BG.addChild(A[9]);
BG.addChild(A[10]);

A[1].addChild(new Box(10,0.1f,10,Box.GENERATE_NORMALS|Box.GENERATE_TEXTURE_COORDS, App));

createStarBackground(BG);
BG.compile();
return BG;
}
[/highlight]
FehlerMeldung
Code:
Exception in thread "main" java.lang.NullPointerException
	at Start.Game.createSceneGraph(Game.java:157)
	at Start.Game.<init>(Game.java:100)
	at Start.Game.main(Game.java:201)
Zeile 157 ist bei mir
Code:
a[1].setTranslation(new Vector3f(0,-1,0));
Zeile 100 ist bei mir
Code:
u.addBranchGraph(createSceneGraph());
("u" ist eine SimpleUniverse nur mal so nebenbei")
Zeile 201 ist bei mir
Code:
public static void main(String[]args)
	{
		new Game();
	}
 
Zuletzt bearbeitet:

andre111

Bekanntes Mitglied
aber bei mir kommt eine Fehlermeldung obwohl ich alles richtig mache
sry, aber das widerspricht sich irgendwie

In Zeile 18 erstellst du ein neues Transform3D-Array mit 10 Zellen, allerdings sind alle Zellen null, deshalt die Exception.
Du musst dann erst mal für jede Zelle
a[0] = new Transform3D();
oder etwas derartiges schreiben
 
Zuletzt bearbeitet:

SvenK

Aktives Mitglied
Problem Nummer 1:

Der Index bei Arrays fängt bei 0 an. Bei deinem
[highlight=Java] Transform3D[] a = new Transform3D[10];[/highlight]
wäre der erste Array-Eintrag also a[0] und der letzte a[9]. Bei a[10] bekommst du eine ArrayIndexOutOfBounds

Problem Nummer 2:
Du legst dein Array a zwar an mit einer Größe von 10 an, aber die befüllst es nicht:
dies bedeutet nicht, dass nun 10 Transform3D-Objekte instanziert wurden. Das muss du noch explizit machen, also mit
[highlight=Java]a[0] = new Transform3D(); //oder wie auch immer man ein Tranform3D-Objekt erstellt
a[0].setTranslation(new Vector3f(0,-1,0));
[/highlight]
 
Zuletzt bearbeitet:
S

SlaterB

Gast
[HIGHLIGHT="Java"]Transform3D[] a = new Transform3D[10];
if (a[1] == null) {
System.out.println("nanu, ein Array enthält standardmäßig gar keine Objekte, das hätte ich nun wirklich selber testen können (von wissen/ lernen ganz zu schweigen)");
System.out.println("außerdem ist der erste Index in einem Array immer 0, in einem Array der Länge 10 ist der höchste Index 9");

System.out.println("absolute Grundlagen, die jeder in einfachen Testprogrammen übt und Jahre auswendig kennt, bevor man sowas komisches wie Transform3D überhaupt buchstabieren kann");

System.out.println("gleich gibts NullPointerException, obwohl natürlich alles richtig (..)");
}
a[1].setTranslation(new Vector3f(0,-1,0));[/HIGHLIGHT]
 
Zuletzt bearbeitet von einem Moderator:

Developer_X

Top Contributor
Transform3D[] a = new Transform3D[10];
if (a[1] == null) {
System.out.println("nanu, ein Array enthält standardmäßig gar keine Objekte, das hätte ich nun wirklich selber testen können (von wissen/ lernen ganz zu schweigen)");
System.out.println("außerdem ist der erste Index in einem Array immer 0, in einem Array der Länge 10 ist der höchste Index 9");

System.out.println("absolute Grundlagen, die jeder in einfachen Testprogrammen übt und Jahre auswendig kennt, bevor man sowas komisches wie Transform3D überhaupt buchstabieren kann");

System.out.println("gleich gibts NullPointerException, obwohl natürlich alles richtig (..)");
}
a[1].setTranslation(new Vector3f(0,-1,0));

lol
PS:
Bitte benutzte nächstes mal die Code tags
danke schön
 

hdi

Top Contributor
[HIGHLIGHT="Java"]
a[2].setTranslation(new Vector3f(0,0,0));
a[3].setTranslation(new Vector3f(0,0,0));
a[4].setTranslation(new Vector3f(0,0,0));
a[5].setTranslation(new Vector3f(0,0,0));
a[6].setTranslation(new Vector3f(0,0,0));
a[7].setTranslation(new Vector3f(0,0,0));
a[8].setTranslation(new Vector3f(0,0,0));
a[9].setTranslation(new Vector3f(0,0,0));
a[10].setTranslation(new Vector3f(0,0,0));

A[2].setTransform(a[2]);
A[3].setTransform(a[3]);
A[4].setTransform(a[4]);
A[5].setTransform(a[5]);
A[6].setTransform(a[6]);
A[7].setTransform(a[7]);
A[8].setTransform(a[8]);
A[9].setTransform(a[9]);
A[10].setTransform(a[10]);

BG.addChild(A[1]);
BG.addChild(A[2]);
BG.addChild(A[3]);
BG.addChild(A[4]);
BG.addChild(A[5]);
BG.addChild(A[6]);
BG.addChild(A[7]);
BG.addChild(A[8]);
BG.addChild(A[9]);
BG.addChild(A[10]);
[/HIGHLIGHT]

Die for-Schleife ist eine Mysterie für sich, und zudem höchst scheu. Gut versteckt in Büchern entreisst sie sich auf cleverste Art und Weise ihrem natürlichen Haupt-Feind: Dem Programmierer!
 
S

Spacerat

Gast
Die for-Schleife ist eine Mysterie für sich, und zudem höchst scheu. Gut versteckt in Büchern entreisst sie sich auf cleverste Art und Weise ihrem natürlichen Haupt-Feind: Dem Programmierer!
Ach da treibt die sich rum.... und ich such' die wie'n bekloppter....:lol:
 

Developer_X

Top Contributor
ich habs schon raus, danke noch mal an hdi(alias hilft dir immer) und die vielen anderen die in diesem Thread mitgewirkt haben´

war das jetzt so ok?
:lol:
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben