2017-01-24 1 views
5

Ich benutze vuforia mit Probe DominoesGriff berührt 3D-Objekt Dominoes Vuforia

Sagen Sie mir bitte, was domino ist> pickingTransform in

Vuforia::Vec3F intersection, lineStart, lineEnd; 
    projectScreenPointToPlane(Vuforia::Vec2F(touch1.tapX, touch1.tapY), Vuforia::Vec3F(0, 0, 0), Vuforia::Vec3F(0, 0, 1), intersection, lineStart, lineEnd); 

    Domino* domino; 
    Domino* selected = NULL; 
    float dist; 

    // For each domino, check for intersection with our picking line 
    for (int i = 0; i < dominoCount; i++) { 
     domino = &dominoArray[i]; 
     bool intersection = checkIntersectionLine(domino->pickingTransform, lineStart, lineEnd); 
     if (intersection) { 
      selected = domino; 
      selectedDominoIndex = i; 
      break; 
     } 
    } 

I ersetzt domino> pickingTransform mit matrix44F (modelViewMatrix)

intersection = SampleMath.getPointToPlaneIntersection(
       SampleMath.Matrix44FInverse(vuforiaAppSession.getProjectionMatrix()), 
       matrix44F, metrics.widthPixels, metrics.heightPixels, 
       new Vec2F(x, y), new Vec3F(0, 0, 0), new Vec3F(0, 0, 1)); 
     lineStart = SampleMath.getPointToPlaneLineStart(
       SampleMath.Matrix44FInverse(vuforiaAppSession.getProjectionMatrix()), 
       matrix44F, metrics.widthPixels, metrics.heightPixels, 
       new Vec2F(x, y), new Vec3F(0, 0, 0), new Vec3F(0, 0, 1)); 
     lineEnd = SampleMath.getPointToPlaneLineEnd(
       SampleMath.Matrix44FInverse(vuforiaAppSession.getProjectionMatrix()), 
       matrix44F, metrics.widthPixels, metrics.heightPixels, 
       new Vec2F(x, y), new Vec3F(0, 0, 0), new Vec3F(0, 0, 1)); 

     boolean bool = checkIntersectionLine(matrix44F, lineStart, lineEnd); 

aber jetzt ist die Anwendung nicht erkennt Berührung auf 3d

Ich denke Domino-> PickingTransform ist ModelViewMatrix nach Rotation, oder?

meine app jede Drehung havent und ich brauche Berührungen im gleichen Zustand des Objekts

Antwort

3

domino->pickingTransform so ziemlich die letzte Matrix zu erkennen ist, die für jedes Domino-Objekt gezeichnet wird. Die Dominosteine ​​arbeiten so, dass die App für jedes Objekt (Domino) den projizierten Punkt der Bildschirmberührung überprüft und feststellt, ob sie die Matrix des Objekts schneidet. Die Kommissioniermatrix ist nicht genau dieselbe, da Sie die Berührung reaktionsfähiger machen möchten, also etwas breiter als die Zeichenmatrix.

Es ist schwer zu verstehen, mit was genau Sie es ersetzt haben, aber es sollte ziemlich ähnliche Matrix sein (4X4, natürlich) zu der, mit der Sie jedes Ihrer Objekte zeichnen.