在 RealityKit 中启用手势

2023-12-05

我有一个自定义的 usdz 文件(不是通过代码创建的,而是一把真正的椅子!)。我将其保存在Entity.

一旦我有了它,这就是我的代码:

func updateUIView(_ uiView: ARView, context: Context) {
            
    if let modelEntity = model.modelEntity {
        
        print("\(model.modelName)")
        
        let anchorEntity = AnchorEntity(plane: .horizontal)
        
        anchorEntity.addChild(modelEntity.clone(recursive: true))
        
        uiView.scene.addAnchor(anchorEntity)
        
        // modelEntity.generateCollisionShapes(recursive: true) 
        // If we have multiple object, recursive true help to generate collision for all of them
        
        uiView.installGestures(.rotation, for: modelEntity as! Entity & HasCollision)
        
        uiView.debugOptions = .showPhysics
        
    } else {
        
        print("Unable to load modelEntity for \(model.modelName)")
        
    }
}

这里的问题是“参数类型‘Entity’不符合预期类型‘HasCollision’”。所以我无法添加任何手势。

但我找不到任何有用的资源来实现我的最终目标。有什么建议吗?


我遇到了其他情况:我需要从以下位置加载模型.usdz文件,它应该有一个动画。但我还需要平移和旋转等手势。这项研究引导我thread并给出正确答案。我将在下面展示其中的代码,主要思想是“将具有动画的加载实体嵌套在 ModelEntity 中,然后根据加载模型的边界为该 ModelEntity 提供适当的 CollisionComponent ”。 (C)

loadRequest = Entity.loadAsync(contentsOf: url)
    .sink(receiveCompletion: { status in
        print(status)
    }) { entity in
           
        // Scaling entity to a reasonable size
        entity.setScale(SIMD3(repeating: 0.01), relativeTo: nil)
           
        // Creating parent ModelEntity
        let parentEntity = ModelEntity()
        parentEntity.addChild(entity)
           
        // Anchoring the entity and adding it to the scene
        let anchor = AnchorEntity(.plane(.horizontal, classification: .any, minimumBounds: .zero))
        anchor.addChild(parentEntity)
        self.arView.scene.addAnchor(anchor)
           
        // Playing availableAnimations on repeat
        entity.availableAnimations.forEach { entity.playAnimation($0.repeat()) }
           
        // Add a collision component to the parentEntity with a rough shape and appropriate offset for the model that it contains
        let entityBounds = entity.visualBounds(relativeTo: parentEntity)
        parentEntity.collision = CollisionComponent(shapes: [ShapeResource.generateBox(size: entityBounds.extents).offsetBy(translation: entityBounds.center)])
                       
        // installing gestures for the parentEntity
        self.arView.installGestures(for: parentEntity)
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 RealityKit 中启用手势 的相关文章

  • 不明白 Swift 中的闭包示例

    我正在尝试了解 swift 和闭包 我被这个例子困住了 numbers map number Int gt Int in let result 3 number return result 什么是 number Int gt Int 它是一
  • 由枚举驱动的 SwiftUI 选择器:值未更新

    根据苹果公司的相关文档SwiftUI 中使用 Enum 的选取器 https developer apple com documentation swiftui picker 如果枚举符合Identifiable协议除了CaseIterab
  • iOS 电池监控 Swift

    我已将监控设置为启用 但模拟器和设备中的电池电量仍然为 1 UIDevice currentDevice batteryMonitoringEnabled true var level UIDevice currentDevice batt
  • SwiftUI:状态栏颜色

    有没有办法将 SwiftUI 视图的状态栏更改为白色 我可能错过了一些简单的东西 但我似乎找不到在 SwiftUI 中将状态栏更改为白色的方法 到目前为止我只看到 statusBar hidden Bool 状态栏文本 色调 前景色可以通过
  • 当 UITextField 已满或空时显示警报 Swift

    下面的代码中 如果 userNameTF 或 passwordTF 已满或为空 则会显示警报 IBAction func LoginBtn sender AnyObject let userName userNameTF text let
  • 为什么这个谓词格式会变成 '= nil'

    有人建议这个线程 https stackoverflow com questions 40686005 nspredicate crash after swift 3 migration与我的问题完全相同 但是 我的应用程序没有崩溃 并且我
  • init 中的 Swift 通用约束

    我有通用的 我希望能够用特定的约束来初始化它 约束仅用于初始化 班里的其他人并不关心 这是一个简化的示例 struct Generic
  • IPV6 快速可达性

    我是 swift 和 xcode 的新手 并且我的应用程序因 IPV6 而被拒绝 性能 2 1 当我们执行以下操作时 您的应用程序会在运行 iOS 9 3 5 并连接到 IPv6 网络的 iPad 和 iPhone 上崩溃 具体来说 当我们
  • CGPoint 标量乘法 Swift

    我正在 SpriteKit 中构建一个平台游戏 并将为我的实体实现更新功能 以便它们根据重力和速度移动 但是 我需要使添加的速度量与增量时间成比例 以防止帧速率影响我的实体的移动方式 因此我将导入 GLKit 以便我可以使用标量函数 但是
  • 使用 UISearchBar 过滤数组

    我目前正在使用以下代码来过滤数组并将结果显示在我的 tableView 中 问题是 只有当搜索与确切的单词匹配时 才会返回结果 如何更改数组过滤器以在输入时搜索每个字符 let data Mango Grape Berry Orange A
  • 在 swrevealcontroller 之前实现登录屏幕

    我刚刚开始学习 IOS 开发 我已经按照给定的在线教程成功实现了 SWRevealViewController 一切都按预期工作 然后 我决定添加一个登录屏幕 这将是应用程序运行时用户看到的第一个页面 我采取的步骤如下 将 UIViewCo
  • Swift 使用哪种通用排序算法?它在排序数据上表现不佳

    我一直在挑选和探索 Swift 标准库sort 其函数为Array类型 令我惊讶的是 我注意到它在已经排序的数据上表现不佳 对数组进行排序Int打乱顺序似乎比对已经排序的同一个数组进行排序快 5 倍 对已打乱顺序的对象数组进行排序比对已按排
  • 如何快速更改按钮图像?

    我正在开发一个有按钮的应用程序 该按钮没有文本 图像或背景 所以我想做的就是在viewDidLoad函数中给它一个图像 这就是我所拥有的 IBOutlet var tapButton UIButton override func viewD
  • NSDateFormatter 返回错误的日期 + Swift

    Code let dateString 2016 04 02 var formatter NSDateFormatter NSDateFormatter formatter timeZone NSTimeZone abbreviation
  • Swift - 选择值后隐藏 pickerView

    我发现了类似的问题 他们的答案很有帮助 但我坚持最后一件事 我试图在点击字段时显示 pickerView 然后选择数据时 我希望 pickerView 隐藏 我可以从 pickerView 获取数据来隐藏 但是 pickerView 后面仍
  • iOS 11 安全区域布局指南向后兼容性

    启用安全区域布局指南是否与 iOS 11 以下版本兼容 我设法使用新的安全区域布局指南并保持与 iOS 9 和 iOS 10 的向后兼容性 编辑 正如 NickEntin 的评论所指出的 此实现将假定存在状态栏 但在 iPhone X 的横
  • 迭代 NSOrderedSet

    我正在尝试迭代 NSOrderedSet 的实例 像这样的事情 func myFunc var orderedSet NSOrderedSet array 42 43 44 for n in orderedSet NSLog i n 但是
  • Xcode 9 中的“addingPercentEncoding”是否损坏?

    在 Swift 3 x 和 Xcode 9 beta 2 中 使用addingPercentEncoding https developer apple com documentation swift string 1690785 addi
  • xcode 6.1 (Swift) 中的 SIGABRT 运行时错误

    与最初的代码相比 唯一的更改是在ViewControl swift override func viewDidLoad newMessage hidden true super viewDidLoad Do any additional s
  • 显示键盘时如何在 TextView 下方添加更多填充

    当我在 ScrollView 中有 TextField 并点击它时 键盘会按预期显示 但似乎 TextField 已向上移动到足以显示输入区域 但我希望移动到足够的位置 以便整体可见 否则它看起来像是被剪裁了的 我找不到改变这种行为的方法

随机推荐

  • Xcode 8 为 iOS 10 生成损坏的 NSManagedObject 子类

    我最近将我的 iOS 应用程序项目更新到了 iOS 10 现在我尝试更改应用程序的核心数据模型 但 Xcode 生成的新 NSManagedObject 子类已损坏 我还尝试修复子类手册 但这不起作用 核心数据模型的最低工具版本设置为 Xc
  • 使用 React 定期重新加载 iframe 的最佳方法是什么?

    我正在使用 React 构建一个网页 这意味着我无法直接操作 DOM 我尝试通过更新 url 状态来重新加载 iframe 但这似乎不会重新加载页面 这是我尝试过的状态代码 componentDidMount function setInt
  • 在主选项卡栏控制器之前显示登录视图控制器

    我正在创建一个带有需要登录的标签栏控制器的 iPad 应用程序 因此 在启动时 我想显示一个 LoginViewController 如果登录成功 则显示选项卡栏控制器 这就是我实现初始测试版本的方式 省略了一些典型的标头内容等 AppDe
  • Eclipse 编辑器中当前选定代码的 AST?

    我需要在 Eclipse 的 java 编辑器中获取当前选择的 AST 基本上我想将选定的java代码转换为其他形式 可能是其他语言或XML等 所以我想 我需要获得 AST 来进行选择 目前我能够以简单文本的形式进行选择 对于这样的问题有什
  • 使用OpenGL绘制图像

    如何使用开放的 OpenGL OpenTK 在地图 GMap Net 上绘制视频 图像 来自无人机的视频 我的问题是如何在地图上绘制视频图像 因为视频可以在地图上以不同角度观看 并且图像在地图上应该是梯形而不是四边形 I copied im
  • 使用 ref setAccessibilityFocus 不起作用

    我正在使用ref支柱连同findNodeHandle在一堆组件上以便能够触发AccessibilityInfo setAccessibilityFocus 然而 它并不总是按预期工作 有时参考是null虽然componentDidMount
  • 将所有列(表中)的所有零(如果有)更改为...例如 1

    我有一个包含 18 列 均为整数 和 1040 行的表 如果任何值为零 我想将其更改为 1 我正在使用 Postgresql 做这个的最好方式是什么 我无法想出一个简单的更新语句 而且我是数据库新手 关于我应该看什么来学习如何实现这样的事情
  • AspectJ - 使用类型间声明创建全局记录器字段

    我想创建一个类型间声明 在每个类中声明一个 静态最终 Logger 实例 构造函数应该传递给封闭类Klazz class value Aspect public class LoggerAspect public interface Log
  • 安装 Gulp 后:“找不到命令‘gulp’”

    安装后gulp js通过 npm 我收到了no command gulp found运行时出错gulp来自安装到的同一目录的命令 当查看下方时node modules bin 目录 我可以看到gulp在那里可执行 我的npm安装有问题吗 这
  • C# 中何时使用“using”块?如何在 C# 中使用“using”块?

    我在大多数样本中看到SqlCommand像这样使用 using SqlConnection con new SqlConnection CNN STRING using SqlCommand cmd new SqlCommand Selec
  • jQuery 对话框中的单击事件发生两次?

    我一直在处理一个奇怪的问题 click 每当放置在 jQuery 对话框中时 事件就会发生两次 我的简单测试用例如下活生生的例子在这里 div style display none a href Test Link a div
  • 使用 foreach 而不是 while 循环循环 mysql_fetch_assoc [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我有一个 mysql 查询 result mysql query my query 有没有办法让这样的事情发挥作用 results mysql fetch assoc result f
  • Emacs 23、OS X、multi-tty 和 emacsclient

    如何让 emacs 23 在 OS X 上的多 tty 模式下正常工作 我已经添加 server start 到我的 emacs 并发现运行 Applications Emacs app Contents MacOS bin emacscl
  • 什么“类型”是从选择标签中选择的选项

    我是 PHP 新手 正在尝试获取从 select 标签中选择的选项的值 我熟悉某些类型的输入 例如单选 文本 复选框等 我的问题是 类型 是从选择标签中选择的选项 前三种形式工作得很好 但第四种则不行 这是我的代码
  • Akka 路由:回复发送到路由器最终成为死信

    我正在使用 Actor 路由 但无法将回复发送回路由器 以便路由列表中的另一个 Actor 可以接收到此消息 我在用着 sender tell Message context parent 为了根据 akka 文档回复路由器 路由参与者将发
  • 带有 .htaccess 的 SEO 友好 URL

    有人可以帮我重写一些 URL 吗 我有 例如 这些页面 www mydomain com test gallery asp id 2 www mydomain com test gallery asp id 3 并希望他们被要求为 www
  • html onchange 事件不起作用

    我正在尝试做一些实验 我想要发生的是 每次用户在文本框中输入内容时 它都会显示在对话框中 我用的是onchangeevent 属性来使其发生 但它不起作用 我仍然需要按提交按钮才能使其正常工作 我读到了有关 AJAX 的内容 并且正在考虑了
  • 哪些 lua 功能可以用作 python 或 tcl Expect 中的 pexpect?

    我有一些 shell 脚本 它们将一些消息打印到 stdout 并且如果输出与某些正则表达式匹配 我想生成一些其他进程 我可能还想将 shell 挂起一段时间 直到其他进程给出一些反馈 我的要求基本上表现得像shell中的pipe和tcle
  • mongoDB 中的嵌套对象文本搜索

    我不确定如何解决这个问题 我想在 mongoDB 集合中搜索并仅返回适合搜索查询的嵌套对象 在所有字段上使用文本搜索 该集合中的所有文档都具有以下格式 arr id 1 name Random description Hello world
  • 在 RealityKit 中启用手势

    我有一个自定义的 usdz 文件 不是通过代码创建的 而是一把真正的椅子 我将其保存在Entity 一旦我有了它 这就是我的代码 func updateUIView uiView ARView context Context if let