# Objektgrösse herausfinden und Koordinatenursprung verschiebe



## Yodan (8. Aug 2006)

Hallo,

ich habe zwei Fragen bezüglich Java3D.

1.Wie kann ich die grösse eines Objektes herausfinden, das ich per Loader (*.obj) geladen habe? Ich bräuchte die maximale x,y,z Ausdehnung, doch leider habe ich bisher nichts brauchbares gefunden. Desweiteren sind manche Objekte auch um ein par grad gedreht... (Die Objekte habe ich mit Blender erstellt und exportiert. In Blender sind sie aber "normal").

2. WIe kann ich den Koordinatenursprung verschieben? (der Ursprung soll z.B. 100,50,10 sein).

Vielen Dank im Vorraus


----------



## egrath (27. Jun 2007)

Hallo,

sorry dass ich mich als Totengräber für Threads erweise, habe ein ähnliches Problem (Frage): Werden Shape3D Objekte welche ich aus einem OBJ File lade nicht an den Koordinatenursprung (0/0/0) gesetzt? Bei dem beigefügten Testprojekt sieht es zumindest so aus. 

Könnte mir jemand erklären wie ich das manuell richten kann, ich hab keine Ahnung wie ich die Grösse der geladenen Geometrie ermitteln kann - ich kann mir zwar ein Bounds objekt holen, dieses vermisst aber die Methoden "getLower" und "getUpper" der abgeleiteten BoundingBox Klasse mit deren Hilfe ich das ermitteln und die Translation entsprechend setzen könnte.

Testprojekt

Danke und Grüsse,
    Egon


----------



## merlin2 (27. Jun 2007)

Die zip-Datei ist leer.


----------



## egrath (27. Jun 2007)

Hallo,

funktioniert jetzt, es gab ein Problem beim originalen Upload.

Grüsse,
    Egon


----------



## egrath (28. Jun 2007)

Hallo,

ich habe die Lösung des Problems selbst gefunden:

Das von Shape3D mittels der Methode zurückggegebene Bounds Objekt ist in wirklichkeit ein BoundingBox Objekt - mithilfe dieses kann dann die Grösse ermittelt und die Translation entsprechend gesetzt werden.


```
if( shape.getBounds() instanceof BoundingBox )
{
    BoundingBox box = ( BoundingBox ) shape.getBounds();
    Point3d lowerPoint = new Point3d();
    Point3d upperPoint = new Point3d();
    box.getLower( lowerPoint );
    box.getUpper( upperPoint );
    System.out.println( String.format( "BOX = [%s]:[%s]", lowerPoint.toString(), upperPoint.toString() ));
}
```

Grüsse,
    Egon


----------

