Java3D: Problem Box-Dimensionen und "Transform3D".setTranslation

whitebrazililan

Grünschnabel
Hallo,

ich habe mit Java3D eine Primitive-Box mit den x,y,z-Dimensionen 2.44f, 2.35f und 7.7f erstellt. Diese habe ich der Szene ohne setTranslation hinzugefügt. Dann sollte der Mittelpunkt der Box doch auf (0,0,0) liegen, oder?

Wenn ich in diese Box eine kleine Box mit den Dimensionen 0.8f,1.2f,1.2f "packen" möchte und diese bündig abschließen soll, dann muss ich die setTranslation-Methode des Transform3D-Objekts der kleineren Box folgendermaßen aufrufen:

test2.setTranslation(new Vector3f(-1.64f,-1.15f,-6.5f));

Die Boxen sind also irgendwie doppelt so groß als sie sein sollten, oder? Zumindest ist die große Box auf beide Seiten hin 7.7m lang...

Haben ich da einen Denkfehler oder einen Fehler programmiert?

Grüße,
Tobi
 
Hi Tobi,

wenn das ungefähr so aussehen soll, also bezogen auf die beiden Boxen:
cube3D.png cube3D2.png
sind deine Berechnungen richtig.
Vielleicht hast du irgendwo im Code einen Fehler eingebaut ?


Java:
  private void floatingBox() {
      /* App fuer die grosse Box */
	  Appearance app = new Appearance();
      PolygonAttributes poly = new PolygonAttributes();
      poly.setPolygonMode(PolygonAttributes.POLYGON_LINE);
      poly.setCullFace(PolygonAttributes.CULL_NONE);
      app.setPolygonAttributes(poly);

	  Box box = new Box(2.44f, 2.35f, 7.7f, app);
	  
	  /* App fuer die kleine Box */
	  Color3f black = new Color3f(0.0f, 0.0f, 0.0f);
	  Color3f blue = new Color3f(0.3f, 0.3f, 0.8f);
	  Color3f specular = new Color3f(0.9f, 0.9f, 0.9f);

	  Material blueMat = new Material();
	  blueMat.setAmbientColor(blue);
	  blueMat.setDiffuseColor(black);
	  blueMat.setSpecularColor(specular);
	  blueMat.setShininess(25.0f);

	  Appearance blueApp = new Appearance();
	  blueApp.setMaterial(blueMat);

      Box boxTrans = new Box(0.8f,1.2f,1.2f, blueApp);
      
      
	  /* TransformGroup und Transform3D erzeugen */
	  TransformGroup boxTG = new TransformGroup();
	  Transform3D box3D = new Transform3D();
	  
	  /* Transformation erstellen und anwenden */
	  box3D.setTranslation(new Vector3f(-1.64f,-1.15f,-6.5f));
	  boxTG.setTransform(box3D);
	  boxTG.addChild(boxTrans);
	  
	  sceneBG.addChild(box);
	  sceneBG.addChild(boxTG);
  }

Viele Grüße

knoppi
 
Hallo Knoppi,

danke für deine Antwort. Meine Kiste schließt bündig ab.
Aber ich wollte, wenn ich die Länge, Breite und Höhe meiner großen Kiste erstelle, auch genau diese Länge, Breite und Höhe haben. Denn die kleine Box hat ja komische Werte, die ich ihr mitgebe finde ich.
Was genau liegt denn in (0,0,0), wenn ich die setTranslation(new Vector(0;0;0)) anspreche?
der Mittelpunkt der Box oder eine Ecke?

Grüße,
Tobi
 

Neue Beiträge

Zurück