如何在 iOS 11 中使用 scenekit - ARKit 动态创建 3D 对象的注释?

2024-04-16

我正在努力使用创建注释overlaySKScene与此类似的东西(https://sketchfab.com/models/1144d7be20434e8387a2f0e311eca9b1# https://sketchfab.com/models/1144d7be20434e8387a2f0e311eca9b1#)。我跟着https://github.com/halmueller/ImmersiveInterfaces/tree/master/Tracking%20Overlay https://github.com/halmueller/ImmersiveInterfaces/tree/master/Tracking%20Overlay创建覆盖层。

但在提供的示例中,他们仅创建一个注释,并且它是静态的。我想根据我们拥有的子节点的数量动态创建多个注释,并且还应该能够将注释放置在相应子节点的顶部。如何实现这一目标?

我正在添加如下所示的叠加层,

    sceneView.overlaySKScene = InformationOverlayScene(size: sceneView.frame.size)

其中 InformationOverlayScene 是SKScene我在其中添加了两个childnodes创建一个注释。


使用映射到子节点数组的注释精灵创建一个数组,然后执行如下操作:

func renderer(_ aRenderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {

    let scnView = self.view as! SCNView
    //for each character
    for var i in 0...inBattleChars.count-1 {
        let healthbarpos = scnView.projectPoint(inBattleChars[i].position)

        battleSKO.healthbars[i].position = CGPoint(x: CGFloat(healthbarpos.x), y: (scnView.bounds.size.height-10)-CGFloat(healthbarpos.y))
    }
}

在渲染每一帧之前,这会更新 inBattleChars 中每个 SCNNode 的 SKSprite(在 healthBars 中)的位置。关键部分是projectPoint用于根据3D场景中的SCNNode获取SK叠加场景的2D位置。

为了防止不可见节点的注释显示(例如父对象背面的子节点),请使用 SCNRenderer 的nodesInsideFrustum(of:) 方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 iOS 11 中使用 scenekit - ARKit 动态创建 3D 对象的注释? 的相关文章

  • Swift - 如何隐藏导航项中的后退按钮?

    现在我有两个视图控制器 我的问题是我不知道如何在转换到第二个视图控制器后隐藏后退按钮 我发现的大多数参考资料都是 Objective C 的 我如何用 Swift 编写它 Objective C 中隐藏后退按钮代码 self navigat
  • 如何在iPhone真机上打开数据库sqlite文件?

    我正在通过电缆在我的真实设备中调试应用程序 我有一部 iPhone 6 我想检查我的数据库并使用 sqlite3 操作来查询我的结果 其他问题和教程解释了只能在模拟器中执行此操作 但我使用的是真正的 iPhone 在AppDelegate中
  • 在SCNNode中添加CIFilter使节点变成白盒

    我想添加一个CIGaussianBlur to a SCNNode正在 ARKit 中显示 然而 添加该过滤器会将节点变成 白盒 这是没有和有过滤器的节点 No CIFilter With CIFilter 这是相关代码 let gauss
  • 如何检测 OS X 上是否按下了某个键?

    我正在为 OSX 编写 Spritekit 游戏 如何检查当前是否按下某个键 考虑这个例子 some code this could be e g inside a game loop if is key w pressed move fo
  • 从 Firebase 观察者代码块中的函数返回数据 swift

    我是 firebase 的新手 我想知道是否有任何可能的方法来返回观察者块中的数据 我有课ApiManager NSObject在这个类中 我想创建所有的 firebase 函数 该函数将从数据库返回某种数据 这是我在这门课中的职责之一 f
  • MKMapView 未在平移上调用 RegionDidChangeAnimated

    我有一个带有 MKMapView 的应用程序和每次地图更改位置 在 RegionDidChangeAnimated 中 时调用的代码 当应用程序最初加载时 在显式更新地图坐标的平移 滑动 捏合 点击和按钮上调用regionDidChange
  • Xcode:将信息从 UITableViewController 传递到 UIViewController

    我有一个 UIViewController 它应该根据 UITableViewController 中按下的单元格向我显示详细信息 目前我正在给他们讲一个续集 override func prepare for segue UIStoryb
  • 应用程序在后台时远程推送通知 swift 3

    我有一个可以接收远程推送通知的应用程序 我已经实施了didReceiveRemoteNotification这样 func application application UIApplication didReceiveRemoteNoti
  • Swift:如何获取从字符的开始到最后一个索引的子字符串

    我想学习将一个字符串转换为另一个字符串的最佳 最简单方法 但只有一个子集 从开头开始一直到字符的最后一个索引 例如 将 www stackoverflow com 转换为 www stackoverflow 什么样的代码片段可以做到这一点
  • 使用单个共享后台线程进行 iOS 数据处理?

    我有一个应用程序 可以从网络下载大量资源 并对每个资源进行一些处理 我不希望这项工作发生在主线程上 但它非常轻量级且优先级低 因此所有这些都可以真正发生在同一个共享工作线程上 这似乎是一件好事 因为设置和拆除所有这些工作线程都需要工作 没有
  • 轻量级核心数据迁移后,如何为现有实体的新属性设置默认值?

    我已经成功完成了核心数据模型的轻量级迁移 我的自定义实体 Vehicle 收到了一个新属性 tirePressure 它是 double 类型的可选属性 默认值为 0 00 当从商店中获取 旧 车辆 在迁移发生之前创建的车辆 时 其 tir
  • 谷歌分析实时不工作

    我正在使用这段代码来使用Google Analytics为了获取实时信息和应用程序评论 代码位于 AppDelegate 中 GAI sharedInstance trackUncaughtExceptions YES GAI shared
  • iOS:如何创建并绘制(并保存)大于屏幕的图像?

    我们正在创建一个 iOS 照片应用程序 为此 我们必须创建动态大小的图像 最大约为 2500x1600 像素 创建此图像后 我们希望以相当快的速度在大图像之上绘制较小的图像 正如我们所看到的 问题在于不可能获得大于屏幕分辨率的上下文 该调用
  • 如何快速使用 CoreLocation?

    我尝试过将 CoreLocation 与我的 Swift 应用程序一起使用 但没有运气 我有以下非常简单的代码 我已经链接了 CoreLocation 库 import UIKit import CoreLocation UIApplica
  • Phonegap html5视频无法播放

    我正在尝试在 iPad 上的phonegap 应用程序中播放视频 该视频给了我错误 MEDIA ERR SRC NOT SUPPORTED 我尝试播放的视频不是本地的 当我在该视频上使用curl I 时 这是它带来的信息 HTTP 1 1
  • 前导点的自动完成功能无法快速工作

    当我尝试在 swift 中使用 前导点语法 时 我没有得到任何自动完成建议 是否没有实现此自动完成功能 或者是我的 Xcode 版本 6 3 1 有问题 例如 当我尝试这样的事情时 let col UIColor whiteColor 在我
  • 检测wifi是否启用(无论是否连接)

    对于 GPS 跟踪应用程序来说 在打开 WIFI 的情况下记录位置信号会导致数据非常不精确或存在间隙 在开始跟踪之前 我已使用可达性查询来检测 wifi 是否可用 问题是 如果进行该查询时 wifi 已启用但未连接到网络 则表明无法通过 w
  • 如何使用 swift 隐藏导航控制器中的后栏按钮

    在故事板 Xcode 6 iOS 8 和 swift 中 我在导航控制器中嵌入了 TableViewController 从对象库中 我拖放一个栏按钮项目作为后退按钮 它显示一个图标图像 当我单击该按钮时 我显示一个设置视图 我怎样才能隐藏
  • 我什么时候应该将可选值与 nil 进行比较?

    很多时候 您需要编写如下代码 if someOptional nil do something with the unwrapped someOptional e g someFunction someOptional 这似乎有点冗长 而且
  • iOS 中的设备兼容性问题

    我们上传了一个应用程序 在第一个版本中 我们添加了设备功能 电话 以限制信息 plist 中的 iPhone 设备 在第二个版本中 我们忘记添加 电话 并提交给了应用商店 我们计划上传第三个版本 其中设备功能为 电话 但在提交到 App S

随机推荐

  • 何时使用 Hibernate 投影?

    我对 Hibernate 有点困惑预测 and criteria 何时使用预测以及何时使用标准 它们并不相互排斥 您可以同时使用两者 预测通常在某些标准的背景下使用 简而言之 Hibernate Projections 用于仅查询您使用 C
  • 无法在 Python 中分配 1.6 GB

    这段代码产生一个MemoryError from pylab import complex128 import numpy x numpy empty 100000000 dtype complex128 100 millions comp
  • 在 os.startfile() 中运行时隐藏控制台?

    我有一个 bat带有参数的文件 我使用运行它os startfile test bat 有没有办法隐藏其控制台 我尝试使用subprocess 效果很好 但是当我关闭父程序时subprocess这是使用编译的py2exe控制台模式也关闭 i
  • TinyMCE有效元素:只允许特定的CSS规则

    小MCE的valid elements属性允许您定义有效 HTML 元素及其属性的白名单 您可以仅允许段落和链接 tinyMCE init valid elements p a href 但是 那style属性有点问题 它对于某些事情 例如
  • SSRS堆叠条形图标签位置

    我正在使用 SQL Server 2012 SSRS 我有一个堆积的条形图 其中包括利息和股息 我想将这些值的总和添加到堆积条形图上方的区域 我尝试过调整标签的各种属性 但我无法将标签位置设置在堆叠条形图中间以外的任何位置 有什么想法如何让
  • 使用 PowerShell 将 Azure 活动日志连接到 Log Analytics 实例

    有没有办法使用 PowerShell 将 Azure 活动日志配置为转发到 Log Analytics 实例 本质上与使用本页概述的门户执行的操作相同 https learn microsoft com en us azure azure
  • 当使用 mkstemp() 创建的文件被删除时?

    我有一个程序调用 mkstemp 用返回的 fd 写入一些内容 然后关闭 fd 我希望保留该文件 直到我自己删除它 使用 rm 命令或其他命令 我的问题是 Linux会在close fd 后删除这个文件吗 Linux在close fd 后会
  • 返回对象的 ECMAScript 6 箭头函数

    当从箭头函数返回一个对象时 似乎有必要使用一组额外的 and a return关键字 因为语法中存在歧义 这意味着我不能写p gt foo bar 但必须写p gt return foo bar 如果箭头函数返回对象以外的任何内容 and
  • jquery 1.9 手风琴高度问题

    我正在使用一个手风琴 其父级高度为 400px 我希望手风琴的高度永远不会大于 400px 但我也希望手风琴的各个元素能够根据其内容的大小进行调整 通过将 heightStyle 设置为 fill 我可以使整个手风琴的高度为 400px 在
  • 模块化编译时数组扩展

    假设我处于这种情况 main c include
  • Rails 3:如何验证 A < B,其中 A 和 B 都是模型属性?

    我想验证一下customer price gt my price 我尝试了以下方法 class Product lt ActiveRecord Base attr accessor my price validates numericali
  • C 结构和 Java 类有什么区别?

    我是 Java 的新手 但对 C 有点熟悉 我想知道 C 结构和 Java 对象以及调用它们的方法之间有什么区别 或者完全等价 例如 自行车结构 class BicycleDemo public static void main Strin
  • 如何在shell中为for循环添加前导零? [复制]

    这个问题在这里已经有答案了 我有一个基本的 for 循环数字 它在每次迭代中将变量 num 加 1 for num 1 num lt 5 num do echo num done 哪个输出 1 2 3 4 5 我试图让它产生输出 在 num
  • C++ 动态返回类型

    我不确定这是否是一件事 说实话我想说不是 但我想知道是否有一种方法可以编写 c 函数 以便它可以选择返回哪种类型的对象 例如 我有一个基类 A 有 3 个子类 Aa Ab Ac 在工厂 F 类我有一个std map
  • 为什么“int”和“sbyte”GetHashCode 函数生成不同的值?

    我们有以下代码 int i 1 Console WriteLine i GetHashCode outputs gt 1 这是有道理的 并且 C 中除 sbyte 和 Short 之外的所有整型类型都会发生同样的情况 那是 sbyte i
  • 如何以编程方式检测浏览器如何处理 window.close()?

    不同的网络浏览器以不同的方式处理 window close 函数 IE 会提示用户进行确认 而 Firefox 和 Safari 则无法接受它 除非窗口最初是用 Javascript 打开的 并在控制台中显示一条消息说明同样的内容 我支持的
  • powershell批处理管道

    以下行在 powershell 2 0 中运行良好 servermanagercmd exe query Select String Application Server Context 0 13 但是当我将它合并到我的批处理文件中时 它只
  • 如何在可能是简单字符串或字符串对象的字符串对象上安全地使用 JSON.parse?

    我需要能够解析对象格式或纯字符串格式的字符串 最安全的方法是什么 我尝试了 JSON parse data 但如果数据是纯字符串 它就不起作用 编辑 所选的解决方案 谢谢你 这就是我解决问题的方法 try dataObj JSON pars
  • 如何设置常量十进制值

    我正在使用 C 在我的配置类中设置十进制值的默认值 public class ConfigSection ConfigurationSection ConfigurationProperty paymentInAdvanceAmount D
  • 如何在 iOS 11 中使用 scenekit - ARKit 动态创建 3D 对象的注释?

    我正在努力使用创建注释overlaySKScene与此类似的东西 https sketchfab com models 1144d7be20434e8387a2f0e311eca9b1 https sketchfab com models