首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理3d对象Dominoes上的触摸

处理3d对象Dominoes上的触摸
EN

Stack Overflow用户
提问于 2017-01-25 07:29:18
回答 1查看 215关注 0票数 5

我使用vuforia和样品Dominoes

请告诉我什么是domino->pickingTransform in

代码语言:javascript
复制
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;
        }
    }

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

代码语言:javascript
复制
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);

但现在该应用程序无法检测3d上的触摸

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

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

EN

回答 1

Stack Overflow用户

发布于 2017-01-29 20:03:40

domino->pickingTransform几乎是为每个domino对象绘制的最终矩阵。dominos示例的工作方式是,对于每个对象(domino),应用程序检查屏幕触摸的投影点,并查看它是否与对象的矩阵相交。拾取矩阵并不完全相同,因为您希望使触摸更具响应性,因此您将其设置为比绘图矩阵稍宽一点。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41840841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档