在 XZ 平面上拖动对象

2023-12-09

我正在开发一个增强现实应用程序,我希望能够在空间中拖动一个对象。我在 SO 中找到的解决方案存在问题,建议使用projectPoint/unprojectPoint,是它们沿着XY plane.

我试图使用屏幕上的手指移动作为偏移x and z节点的坐标。问题是有很多东西需要考虑(相机的位置、节点的位置、节点的旋转等)

有更简单的方法吗?


我已经更新了@Alok答案就我而言,它仅从上面的解决方案中拖动到 x 平面。所以我添加了 y 坐标,为我工作。

var PCoordx: Float = 0.0
var PCoordy: Float = 0.0
var PCoordz: Float = 0.0

@objc func handleDragGesture(_ sender: UIPanGestureRecognizer) {

    switch sender.state {
    case .began:
        let hitNode = self.sceneView.hitTest(sender.location(in: self.sceneView),
                                             options: nil)
        self.PCoordx = (hitNode.first?.worldCoordinates.x)!
        self.PCoordy = (hitNode.first?.worldCoordinates.y)!
        self.PCoordz = (hitNode.first?.worldCoordinates.z)!
    case .changed:
        // when you start to pan in screen with your finger
        // hittest gives new coordinates of touched location in sceneView
        // coord-pcoord gives distance to move or distance paned in sceneview
        let hitNode = sceneView.hitTest(sender.location(in: sceneView), options: nil)
        if let coordx = hitNode.first?.worldCoordinates.x,
            let coordy = hitNode.first?.worldCoordinates.y,
            let coordz = hitNode.first?.worldCoordinates.z {
            let action = SCNAction.moveBy(x: CGFloat(coordx - PCoordx),
                                          y: CGFloat(coordy - PCoordy),
                                          z: CGFloat(coordz - PCoordz),
                                          duration: 0.0)
            self.photoNode.runAction(action)

            self.PCoordx = coordx
            self.PCoordy = coordy
            self.PCoordz = coordz
        }

        sender.setTranslation(CGPoint.zero, in: self.sceneView)
    case .ended:
        self.PCoordx = 0.0
        self.PCoordy = 0.0
        self.PCoordz = 0.0
    default:
        break
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 XZ 平面上拖动对象 的相关文章

  • UIDatePicker 中的最小和最大日期

    我想从日期选择器中获取最小和最大日期 但最小日期应为当前日期的 18 最大日期应为当前日期的 100 假设当前年份是 2018 年 那么我想要最小日期 2000 年和最大日期 1918 年 到目前为止我所做的是 NSCalendar gre
  • 从 UIImageView 的中心对 UIImageView 进行动画处理

    我有一个UIImageView应该从动画size 0 0 gt 93 75 我有以下内容 UIView animateWithDuration 0 5 delay 0 options UIViewAnimationOptionTransit
  • TDD VS BDD:REST 服务

    我对 TDD 与 BDD 很困惑 TDD 和 BDD 在以下各点上有何不同 开发 先测试用例 再开发 RestService HTTP 不进行休息调用 如果是这样 a 我们是否使用模拟对象仅返回硬编码的 json b 如何处理 REST 调
  • 在 SpriteKit 中,touchesBegan 是否与 SKScene 更新方法在同一线程中运行?

    在 Apple 文档中高级场景处理 https developer apple com library ios documentation GraphicsAnimation Conceptual SpriteKit PG Actions
  • xamarin 中的本机链接错误

    我今天尝试编译我的 xamarin 项目 突然收到以下错误 错误 MT5210 本机链接失败 未定义符号 mono handle global vregs 请验证是否已引用所有必要的框架并且本机库是否正确 链接到 错误 MT5210 本机链
  • AVAssetWriter 不适用于音频

    我正在尝试让音频与 iOS 应用程序的视频一起使用 视频很好 文件中没有录制任何音频 我的 iPhone 扬声器可以工作 这是初始化设置 session AVCaptureSession alloc init menu gt session
  • 使用 OSX 10.9 和 Xcode 6.1.1 + 自定义输入视图作为 Swift 中文本字段的键盘

    加载自定义输入视图键盘后 我在连接按钮时遇到问题 我的主屏幕是故事板 我的自定义视图是 xib 输入视图是一个 nib 文件所有者指向它的 swift 类 我正在使用另一个视图控制器中的代码加载输入视图 extension UIView c
  • 你能以编程方式调用 Siri 吗?

    我想创建一个 UITextView 的子类 其中包含一个自定义按钮来调用 Siri 用于其语音到文本的文本输入 这可能吗 我不介意是否显示键盘 我只想提供自己的按钮来打开 Siri 不幸的是 你不能这样做 从 iOS 6 0 开始 使用 S
  • 根据 UIView/CGRect 的大小将图像裁剪为正方形

    我有一个 AVCaptureSession 的实现 我的目标是让用户拍照并只保存红色方形边框内的图像部分 如下所示 AVCaptureSession 的previewLayer 相机 跨越 0 0 左上角 到相机控制栏的底部 包含快门的视图
  • 与 iOS 7.1 持续集成 - 无法安装服务器上链接的产品

    我们已经使用 Xcode 5 0 运行 CI 一段时间了 没有出现任何问题 现在iOS 7 1已经发布了 似乎安装了CI生产的产品你需要使用 https https stackoverflow com questions 20276907
  • Skobbler 地图无法使用 ZoomToRouteWithInsets 进行缩放

    在skobbler地图上 我计算了一条路线 如果我拖动地图中的某个位置 然后在按钮中单击 我想查看我的路线 在文档中给出了这些方法 将地图缩放到当前计算的路线 SKRoutingService sharedInstance zoomToRo
  • 如何在 ios7 中的 UITextfield 中禁用复制/粘贴选项

    I tried implementation UITextField DisableCopyPaste BOOL canPerformAction SEL action withSender id sender return NO retu
  • iOS 中的泰米尔字体

    我尝试安装泰米尔字体名称Bamini ttf in xcode 4 2我做了具体的改变info plist 但它没有显示在界面生成器中 任何人都可以帮我解决这个问题吗 据我所知 您安装的新字体永远不会在界面生成器中列出 但是您可以在项目中使
  • 在 Xcode 中调试未捕获的异常

    我正在努力更好地使用 Xcode 我打开了 AllExceptions 断点 当我的应用程序崩溃时 我会看到以下内容 Terminating app due to uncaught exception NSRangeException re
  • NSManagedObjectContext 的performBlockAndWait:不在接收者队列上执行

    我注意到有可能NSManagedObjectContext与NSMainQueueConcurrencyType to performBlockAndWait 并在接收者 主 队列以外的队列上执行该块 例如 以下代码会导致我的parentC
  • SpriteKit中滚动背景的速度逐渐增加

    我正在 SpriteKit 中制作一个简单的游戏 并且我有一个滚动背景 简单的情况是 在加载游戏场景时 一些背景图像彼此相邻放置 然后当图像滚动到屏幕外时 图像会水平移动 这是我的游戏场景中的代码didMoveToView method s
  • 使用预先存在的数据库创建 PhoneGap iOS 应用程序

    我最近开始开发一个使用 PhoneGap 版本 2 8 0 作为药物查找器的应用程序 过去 我创建了该工具的 Web 版本 它使用 jQuery Mobile 和 PHP 来访问远程 SQL 数据库 PhoneGap 似乎是一个很有吸引力的
  • 如何在构建时自动重置 iPhone 模拟器

    将多个 JSON 文件从应用程序包根目录移动到目录结构内 也在应用程序包中 后 应用程序继续运行 就像文件保留在之前的位置一样 经过一番绞尽脑汁并进行了一次干净的构建后 我记得必须清除 iPhone 模拟器才能删除旧位置中的这些文件 如果能
  • 在滚动视图内的 ImageView 中裁剪缩放图像

    我已经做了很多努力 最后我需要帮助 谢谢 目标 1 如何将 imageView 放入 ScrollView 中 2 我如何在scrollView内部裁剪缩放图像 我在滚动视图中有一个 imageView 我想要缩放后裁剪图像 该图像显示在滚
  • 难以访问在 Interface Builder .xib 文件中创建的 UITableViewCell

    在我的 UITableView 中 对于表格最后一部分的最后一行 我加载了一个特殊的 UITableViewCell 它与表格上的所有其他单元格不同 我在 xib 文件中创建了该单元 并为其指定了重用标识符 endCell 我认为我可以执行

随机推荐

  • Android 渐变永远不会起作用(总是出现条带)

    我尝试添加 径向 渐变作为背景 在 Android 4 0 中 无论是作为背景图像还是以编程方式添加 但它们都不起作用 我只能在模拟器中测试它 但我猜它在4 0设备上是一样的 这些解决方案不起作用 放置在 raw 文件夹中 禁用Androi
  • 复制或克隆 DataRow 的简单方法?

    我正在寻找一种简单的方法来克隆 DataRow 有点像拍摄该行的快照并保存它 原始行的值可以自由更改 但我们仍然有另一个保存的副本 该副本不会更改 这是正确的方法吗 DataRow Source Destination Assume we
  • 将新字段添加到来自 Netflix Zuul 预过滤器的请求正文

    我正在尝试在 Zuul 预过滤器中向请求正文添加一个新字段 我正在使用 Neflix 的 Zuul 示例项目之一here 我的过滤器的实现非常类似于UppercaseRequestEntityFilter从这个样本 我能够应用诸如大写之类的
  • 为什么“{} || {}”会抛出语法错误?

    这有效 var a 虽然这不会 Uncaught SyntaxError Unexpected token at Object InjectedScript evaluateOn
  • AWK/BASH:如何将一个文件中的字段与另一个文件中的字段进行匹配?

    我有 2 个文件 第一个包含以下内容 John Allen Smith II 16 555 555 5555 10 24 2010 John Allen Smith II 3 555 555 5555 10 24 2010 John All
  • 通过单击子图显示整个图像

    我裁剪了图像的某些部分 并将它们显示在带有子图的一张图中 次要情节的数量不确定 我从文件中读取图像然后裁剪它们 我的目标是 当我单击或双击子图时 我想在新图中看到整个图像 我想举一个例子来澄清我的问题 如果我单击第一个子图 我想在新图中看到
  • 使用 Xamarin Forms 在每个页面上显示不同的工具栏按钮

    我的 Xamarin Forms 应用程序中有 2 个页面 我的第一页工具栏中有 4 个图标 我的第二页是登录页面 工具栏中有一个勾号和一个叉号 除非将其设为导航页面 否则我无法让登录页面显示任何图标 我还必须在调用 PushAsync 之
  • 使用 Xcode 6 中的自动布局约束模拟宽高比匹配行为

    我想使用自动布局以让人想起 UIImageView 宽高比内容模式的方式调整视图的大小和布局 我在 Interface Builder 的容器视图内有一个子视图 子视图有一些我希望尊重的固有宽高比 容器视图的大小在运行时之前是未知的 如果容
  • 如何在sqlite中存储json数据

    我很难将数据以 JSON 格式存储到我的 Rails 应用程序的 sqlite 数据库中 我已经搜索了如何在我的 sqlite 数据库中将数据存储为 JSON 但没有看到很多有前途的替代方案 谁能指导我如何做到这一点 您需要从 JSON 生
  • 如何通过 Bash 脚本检查文件是否存在?

    我正在尝试克隆一个存储库并在通过 bash 脚本完成后对其进行测试 我已经根据以下内容编写了测试代码Bash Shell 检查文件是否存在 bin bash echo TRY TO INIT INFER Clone Infer INFER
  • Android如何创建堆栈类型的图像背景

    我正在开发一个应用程序 我需要在其中创建相册并将其显示在 GridView 中 现在我只是在没有任何背景的情况下显示它们 但我需要专辑封面的背景 以便它看起来像一堆照片 背景是这样的 我尝试了这个 但不起作用 首先我创建了一个像这样的单一背
  • 在asp.net MVC中DropDownList设置所选项目

    我注意到在我看来是 ASP NET MVC 中的一个错误 或者只是我做错了什么 我目前使用的是 1 0 所以也许这个问题将在 2 0 版本中得到解决 但无论如何 我们开始吧 当我的视图模型有一个与下拉列表声明的 id 名称相同的属性时 所选
  • 强制 R 将科学记数法写为带上标的 n.nn x 10^-n

    假设我有两个花车 a lt 8 9384920e 24 b lt 0 00293892837 我想在图表上以 10 基科学记数法四舍五入到两位小数显示它们中的任何一个 可能使用paste 但在 10 之后采用上标格式 8 94 x 10 2
  • 如果文件是在过去一小时内创建的,则从 FTP 下载文件

    我需要从 FTP 上的特定文件夹下载文件 但仅限于创建时间在过去一小时内的文件 所以基本上我需要列出该文件夹中的所有文件 然后仅下载时间戳与执行时间相差超过一小时的文件 关于如何解析 FTP 上文件的时间戳有什么想法吗 我无法使用任何第 3
  • 使用 vanilla Javascript 查找具有部分属性的 DOM 元素

    假设我有一个网站 我想使用循环遍历其 DOM 元素的脚本 并指出这些元素的属性包含指定文本的一部分 我成功创建了一个简单的循环 可以找到 DOM 元素的每个所需属性并从中创建数组 现在我想将数组属性值与其所属的 DOM 元素配对 并且还能够
  • Android 锁定全屏

    Android 可以锁定全屏吗 基本上隐藏吐司 隐藏主页 后退 开关 隐藏通知栏 使其从底部或顶部滑动不起作用 致力于一个将从中受益匪浅的想法 我知道这样做很不好 但它针对的是非常年幼的孩子 他们随机点击 拖动 偶尔会意外地将手机语言更改为
  • 如何停止与 canvas imageData 的 alpha 预乘?

    有没有办法停止画布数据的 Alpha 通道的预乘 或者解决方法 我想生成一个图像 在本例中是一些随机的 rgba 值 并将画布保存为图像 在第二步中 我想使用 imageData 将原始图像与生成的图像进行比较 但是由于生成图像中 rgba
  • 何时在 GUI 应用程序中调用 thread.join

    import wx import json import queue from collections import namedtuple import threading class MyDialog wx Frame def init
  • Sublime Text 构建:找不到指定的文件

    我已经通过 Package Control 安装了 CoffeeScript 插件 当我尝试构建 test coffee 时 它 给了我这个 Error 2 The system cannot find the file specified
  • 在 XZ 平面上拖动对象

    我正在开发一个增强现实应用程序 我希望能够在空间中拖动一个对象 我在 SO 中找到的解决方案存在问题 建议使用projectPoint unprojectPoint 是它们沿着XY plane 我试图使用屏幕上的手指移动作为偏移x and