Hi,
...Dann musst du die Seite bestimmen, von der du die Normale haben willst, nimmst dir drei Punkte in dieser Fläche (das sind einfach drei Eckpunkte der BB), multiplizierst sie mit der Matrix aus getWorldTransformation() vom Objekt selber, berechnest die Richtungsvektoren zwischen den Punkten und davon das Kreuzprodukt ist die Normale.
Dazu müsst ich allerdings aber zunächst herausfinden von
welcher Fläche der Boundingbox (also welches Face) ich die Normale berechnen möchte, wenn ich ein Polygon innerhalb der BB per Picking-Ray treffe.
Das gepickte Polygon erhalte ich ja bereits über den PolygonManager und ebenso deren transformierte Normale.
Kann ich anhand dieser Informationen irgendwie herausfinden welche Seite bzw. welche Fläche der BB beim Picking getroffen wurde? Oder mit anderen Worten: Durch welche Seite der BB das "Picking-Ray durchgeschossen" ist?
Ob das die beste Lösung ist, um das Andocken zu realisieren, weiß ich nicht. Statt der Normalen könnte man auch (viel einfacher) mit den Resultaten von get?Axis() des Objekts versuchen.
Beim Picking nützt mir diese Funktion auch nicht, da ich, wie oben beschrieben, vorher wissen muss, von welcher Seite das gepickte Objekt getroffen wurde. Habe ich die Seite herausgefunden, könnte man auch bequem mit den get?Axis()-Funktionen arbeiten, statt die Normale zu berechnen - Das gebe ich zu.
Eine Lösung des Problems wäre vielleicht die Kombination von 2x Object3Ds.
Eines stellt dabei das visuelle Mesh dar, das andere die "virtuelle BB" (ist zwar redundant, diese doppelt intern zu definieren, aber dadurch, dass ich ein Object3D als BB um das andere ummantele, könnte ich auf dieses Element die Picking-Tests durchführen). Leider finde ich hierbei aber nicht heraus, wie man das "virtuelle BB" unsichtbar schalten kann, aber dennoch von Picking-Tests erfasst wird.
Soviel zu meinen Gedanken. Hast du noch eine Idee bezüglich auch meines Problems oben und meines Lösungsvorschlags?
Gruß