2017-01-24 38 views
5

używam vuforia z przykładowych Dominouchwyt dotyka 3d obiektu Domino Vuforia

Powiedz mi proszę, co jest domino-> pickingTransform w

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; 
     } 
    } 

Wymieniłem domino-> pickingTransform z 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); 

ale teraz aplikacja nie wykrywa dotyk na 3d

Myślę, że domina-> pickingTransform to modelViewMatrix po obrocie, prawda?

moja aplikacja nie miałaś żadnego obrotu i muszę wykryć dotyka w takim samym stanie obiektu

Odpowiedz

3

domino->pickingTransform jest dość dużo ostateczna matryca że jest przygotowywana dla każdego domina obiektu. Próbka domina działa w taki sposób, że dla każdego obiektu (domino) aplikacja sprawdza rzutowany punkt na ekranie i widzi, czy przecina matrycę obiektu. Matryca kompletowania nie jest dokładnie taka sama, ponieważ chcesz, aby dotyk był bardziej responsywny, więc robisz to nieco szerszym niż matryca rysunku.

Trudno zrozumieć, z czym dokładnie je wymieniłeś, ale powinna to być bardzo podobna matryca (4X4, oczywiście) do tej, z której rysujesz każdy z twoich obiektów.