# Transform3D[] und TransformGroup[]



## Developer_X (5. Apr 2009)

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

```
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

```
a[1].setTranslation(new Vector3f(0,-1,0));
```
Zeile 100 ist bei mir

```
u.addBranchGraph(createSceneGraph());
```
("u" ist eine SimpleUniverse nur mal so nebenbei")
Zeile 201 ist bei mir

```
public static void main(String[]args)
	{
		new Game();
	}
```


----------



## andre111 (5. Apr 2009)

Developer_X hat gesagt.:


> 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


----------



## SvenK (5. Apr 2009)

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]


----------



## SlaterB (5. Apr 2009)

[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]


----------



## Developer_X (5. Apr 2009)

SlaterB hat gesagt.:


> 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");
> ...



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


----------



## SvenK (5. Apr 2009)

Developer_X hat gesagt.:


> Bitte benutzte nächstes mal die Code tags
> danke schön



herrlich, ich schmeiss mich weg .... :applaus::lol:


----------



## hdi (6. Apr 2009)

[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!


----------



## Spacerat (6. Apr 2009)

hdi hat gesagt.:


> 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:


----------



## Noctarius (7. Apr 2009)

hdi hat gesagt.:


> 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!



Omfg... Ich schmeiss mich weg *lol*


----------



## Developer_X (7. Apr 2009)

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:


----------



## Ebenius (7. Apr 2009)

Developer_X hat gesagt.:


> PS: Bitte benutzte nächstes mal die Code tags


Hat er doch. 
PS: Bitte benutze nachstes mal Bücher.

Ebenius


----------



## Developer_X (7. Apr 2009)

ok :lol:


----------



## Noctarius (7. Apr 2009)

Developer_X hat gesagt.:


> ok :lol:



Das war kein Witz! -.-


----------



## Developer_X (7. Apr 2009)

ich weiß


----------

