Kollisionen/Translationen ohne Rendering

Started by engineer, November 02, 2008, 03:06:50 PM

Previous topic - Next topic

engineer

Hi Egon,

ich versuche Kollisionen(world) Modell von jPCT ohne irgendwelchen Renderingverfahren zu nutzen, aber die Objekte(Object3D) lassen sich nicht Translieren

Bsp.:

World world = new World();

Object3D obj = Primitives.getCube(1.0f);
world.addObject(obj);

//world.buildAllObjects();

SimpleVector dir = new SimpleVector(1.0f, 0.0f, 0.0f);
boolean run = true;
while(run)
{
SimpleVector shift = obj.checkForCollisionSpherical(dir, 1.0f);
obj.translate(shift);

System.out.println("shift  " + shift);
System.out.println("origin " + obj.getOrigin());
System.out.println();
}


die Ausgabe lautet:

...
shift  (1.0,0.0,0.0)
origin (0.0,0.0,0.0)

shift  (1.0,0.0,0.0)
origin (0.0,0.0,0.0)
...

-> Objekt bewegt sich nicht

Mein Endziel wäre die "Kollisionen" und das "Rendering" komplett zu trennen, z.B. Kollisionen laufen auf einer Maschine und Rendering auf einer anderen.

Wo ist der Fehler bei mir? Ist es überhaupt möglich?

EgonOlsen

Das ist problemlos möglich. Dein Fehler ist, dass getOrigin() nicht die Translation berücksichtigt. Wenn du das willst, musst getTranslation() benutzen. getOrigin() liefert quasi nur den Offset in die Welt, eine Art zusätzliche Defaulttranslation des Objektes, welche beim Erzeugen eines Objektes immer (0,0,0) ist.

engineer

Jetzt funktioniert es wie ich es mir vorgeschielt habe, genauso wie zuvor, aber jetzt kann ich nachvollziehen, dass es das richtige tut! ;D
Vielen Dank für schnelle Hilfe!