处理3d对象多米诺骨牌Vuforia

mr_*_*ody 5 opengl vuforia

我使用vuforia和Domino示例

请告诉我什么是多米诺骨牌 - > pickTransform 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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我用matrix44F(modelViewMatrix)替换了domino-> pickingTransform

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);
Run Code Online (Sandbox Code Playgroud)

但现在应用程序没有检测到3D上的触摸

我认为domino-> pickingTransform是旋转后的modelViewMatrix,不是吗?

我的应用程序没有任何旋转,我需要检测对象的相同状态的触摸

yak*_*bom 3

domino->pickingTransform几乎是为每个多米诺骨牌对象绘制的最终矩阵。多米诺骨牌示例的工作方式是,对于每个对象(多米诺骨牌),应用程序检查屏幕触摸的投影点并查看它是否与对象的矩阵相交。拾取矩阵并不完全相同,因为您想让触摸更加灵敏,所以您将其设置为比绘图矩阵宽一点。

很难理解你到底用什么替换了它,但它应该是与你用来绘制每个对象的矩阵非常相似的矩阵(当然是 4X4)。