【问题标题】:Detecting touch on a 3d model imported in Unity for an AR application using Vuforia [duplicate]使用 Vuforia 在 Unity 中为 AR 应用程序导入的 3d 模型上检测触摸 [重复]
【发布时间】:2017-06-22 11:01:50
【问题描述】:

我使用 Unity 和 Vuforia 构建了一个 AR 应用程序。所以基本上,当我扫描某些东西时,我会看到一个模型。我已经移除了主摄像头,我们为此使用了 AR 摄像头。

现在在移动设备上运行 apk 我想打开一个 url 或在触摸扫描图像后出现的 3d 模型时显示一些消息。

我知道它使用 Raycasting,但可以帮助我在单击 3d 模型时打开 url 的代码 sn-p 会有所帮助。我是 Unity 的初学者,非常感谢您的帮助。

【问题讨论】:

    标签: unity3d augmented-reality vuforia


    【解决方案1】:

    您的模型需要附加碰撞器,以便光线投射记录碰撞。此外,使用标签过滤掉光线投射结果也很方便。不过,您可以将图层蒙版用于相同目的。 Input.touches 返回最后一帧期间所有已注册触摸的数组,假设只注册了一个触摸,但如果您愿意,您可以遍历所有触摸以防有多个触摸并检查是否有任何触摸模型。然后,您可以执行以下操作:

        public void RegisterModelTouch()
        {
            // We assume that there was only one touch and take the first 
            // element in the array.
            Touch touch = Input.touches[0];
            RaycastHit hit;
            Ray ray = Camera.main.ScreenPointToRay(touch.position);
            if (Physics.Raycast(ray, out hit))
            {
                if (hit.collider.CompareTag("YourModelTag"))
                {
                    // Do something (open an URL in your case).
                }                
            }
        }
    

    希望这会有所帮助。

    【讨论】:

    • 抱歉这么简单的问题。我怎样才能知道 YourModelTag。你能帮忙吗。你也可以告诉我,因为没有主摄像头,因为我已经移除了它并且我正在使用 AR 摄像头,所以 Camera.main 可以工作。等待您的宝贵意见
    • 您可以创建自己的标签,然后将它们分配给游戏对象,我只是以“YourModelTag”为例。查看此page 以获得深入的解释。至于相机,Camera.main 将返回场景中标记为:MainCamera 的任何相机。因此,只需为您的 AR 相机选择该标签即可。
    • 我们必须将此脚本添加到 AR 相机和 3d 模型两者或仅添加到 3d 模型
    • 对于相机,我还需要为游戏对象制作一个标签,并将其用作 Camera.CameraTagName,其中 CameraTagName 是分配给相机的标签。或者我可以将 AR 相机标记为 MainCamera
    • MainCamera 标签是 Unity 内置标签,因此您无需专门为相机创建标签,只需选择您的 AR 相机并在检查器的左上角点击标签并选择 MainCamera 标签。您确实需要为模型创建标签,只需单击添加标签和名称即可。然后在 ComperaTag() 中只写该标签的名称。
    猜你喜欢
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 2020-02-24
    • 2019-10-09
    • 1970-01-01
    相关资源
    最近更新 更多