Author Topic: 3D Picking ohne Object3D  (Read 7996 times)

Offline Telix

  • int
  • **
  • Posts: 51
    • View Profile
3D Picking ohne Object3D
« on: December 06, 2013, 10:31:25 am »
Hallo zusammen,

lang ist es her aber nun eine neue Frage :)

Wie kann ich mit reproject2D3DWS ein "pick" machen ohne Object?
Ich bekomme ja denke ich mit reproject2D3DWS die Daten abhängig der Kamera im Wert von -0.5 -> 0.5 in  beide Seiten?

Frage wie berechne ich nun die X,Y,Z Kordinate dazu?

Vielen Dank! :)

Offline EgonOlsen

  • Administrator
  • quad
  • *****
  • Posts: 12295
    • View Profile
    • http://www.jpct.net
Re: 3D Picking ohne Object3D
« Reply #1 on: December 06, 2013, 02:45:30 pm »
Ja, das geht ganz normal mit reproject...du bekommst als Ergebnis die 3d-Koordinaten, allerdings musst du vorher bereits die Tiefe z in 3d mit übergeben. Denn du kannst ja nicht 3 Unbekannte an 2 Unbekannten berechnen und pro 2d-Punkt gibt es unendlich viele Punkte in 3d, die auf diesen abgebildet werden.

Offline aZen

  • int
  • **
  • Posts: 94
    • View Profile
Re: 3D Picking ohne Object3D
« Reply #2 on: December 11, 2013, 10:58:41 pm »
Code: [Select]
    public final SimpleVector get3DPoint(MouseEvent e, SimpleVector refPoint) {
        SimpleVector result = Interact2D.reproject2D3DWS(camera, buffer,
                e.getX() * SAMPLING_MODE_MULTIPLICAND,
                e.getY() * SAMPLING_MODE_MULTIPLICAND).normalize();
        result.scalarMul(camera.getPosition().distance(refPoint));
        result.add(camera.getPosition());
        return result;
    }

To compute a point
1) in the direction of the point of the mouse event and
2) at the same distance from the camera as the reference point.

SAMPLING_MODE_MULTIPLICAND depends on your sampling mode

Hope that helps =)