# Java 3D Object Loader -- Facharbeit



## Bohno (4. Feb 2009)

hey
ich schreibe gerade meine Facharbeit über Java 3D.

ich habe eine 3D Model von einem Lego Stein erstellt und lade das jetzt mit java rein. das Funktioniert auch soweit. mein Problem ist aber, dass dieses Objekt sehr groß dagestellt wird, kann ich dieses in Java kleiner darstellen oder kann ich einfach einstellen das der Betrachter mehr Pixel sehen soll.

also ich will am Schluss ein Programm haben in dem der Benutzer mit Legosteinen eine Objekt bauen kann.

könnt ihr mir helfen oder tipps geben 

mfg und Danke

Bohno


----------



## Developer_X (4. Feb 2009)

also wenn du 
das machen willst, erstmal. du willst also, dass man das folgene Mahcen kann:
Lego lego = new Lego(Größe);
Willst du das?
Also erstmal, die größe vom Block selbst ist kein problem, nur die positionierung von den LegoCylindern und die Größe ist ein Problem, ich würd dir empfehlen, einfach ne Textur drüber zu hauen. oder geht das net?


----------



## Developer_X (4. Feb 2009)

erstmal ich schreibe auch figuren, aber ich mach es nicht so, dass man bei Figuren die Größe einstellen kann, schau dir mal meine FIguren, aus dem Titelspiel Rayman2-The great escape an,
https://java-rayman.dev.java.net/files/documents/9616/125712/file_125712.dat/Wächter.JPG
Also wenn du eine Figur über Java erstellen willst, also den Legostein, dann kannst du das ganz einfach, indem du eine Klasse extends Object erstellst.


----------



## Developer_X (4. Feb 2009)

So wie in diesem Beispiel hier:

```
public class Lego extends Object
{
private Group group;
public Lego()
{
group = new Group();
group.addChild(new Sphere(0.3f,null));
}
public Group getChild()
{
return group();
}
}
```
Und anstatt des Spheres könntest du auch eine TransformGroup adden, die du definiert hast, und an die dann TEile adden, also nur mal so könntest du dann Lego adden, und nur so:

```
TransformGroup TG = new TransformGroup();
TG.addChild(new Lego().getChild());
```
An die Klasse Lego könntest du dann Features einbauen, z.B. Appearances
also:

```
public class Lego extends Object
{
private Group group;
private Appearance app;
public Lego(Appearance appearance)
{
appearance = app;
group = new Group();
group.addChild(new Sphere(0.3f,app));
}
public Group getChild()
{
return group();
}
}
```
Nun könntest du also die Appearance von dem Sphere aus einer anderen Klasse aus
kontrollieren.
Um nun die größe des Spheres zu kontrollieren könntest du z.B. folgendes tun:

```
public class Lego extends Object
{
private Group group;
private Appearance app;
private float a;
public Lego(Appearance appearance, float a2)
{
a2 = f;
appearance = app;
group = new Group();
group.addChild(new Sphere(a,app));
}
public Group getChild()
{
return group();
}
}
```


----------



## Developer_X (4. Feb 2009)

Alles so weit ein kleinen einblick bekommen, ich hoffe, ich konnte helfen, Developer_X


----------



## Bohno (4. Feb 2009)

soe sieht ein Legosteina aus wenn ich ihn reinlade. der ist recht groß xD würde es gehen dass der Betrachter einfach mehr sieht also weiter von dem Stein entfernt ist, denn dadurch würde der Stein ja kleiner werden, oder muss ich ihn kleiner erstellen also Model erstellen.

Am Schluss sollen ja mehr als nur 1 Stein sichtbar sein da man ja objekte bauen soll.


----------



## Illuvatar (4. Feb 2009)

Du kannst auch einfach den Stein an eine TransformGroup hängen, und die TransformGroup skalieren. (Transform3D#setScale)


----------



## 0x7F800000 (4. Feb 2009)

Erster Treffer bei Google für Java 3D kamerapositionierung: hier, Übergang von Seite 12 auf Seite 13. Sieht eigentlich recht trivial aus...


----------



## Developer_X (5. Feb 2009)

Oh man, das wusste ich nicht, ädde ihn einfach bei einer TransformGroup, erstell ein Transform3D und setzte die Transform also so:

Transform3D t = new Transform3D();
t.setTranslation(new Vector3f(0,0,-4));
TransformGroup T = new TransformGroup();
T.addChild(Lego dings da);
T.setTransform(t);

PS:
könntest du uns mal diesen LegoWürfel schicken?
Bitte


----------



## Developer_X (5. Feb 2009)

irgendwo im Internet einfach mal reinstellen und hier den Link posten, den würde ich gerne selbst mal sehen


----------

