Tag: arkit

如何将ARSCNView放入Tabview控制器而不冻结ARSession?

我试图在我的应用程序(选项卡式应用程序)中实现iOS 11 beta的ARKit。 但正如在ARKit会话暂停和不恢复线程中所说的,每当我将该选项卡更改为另一个视图控制器并返回时,ARSession正在冻结,而不是恢复。 是否有可能在选项卡式应用程序中实现ARSCNView,以便如果您回来我可以恢复ARSession? 如果是这样怎么办?

放置,拖放和删除ARKit中的SCNNode

我正在使用ARKit开发一个小型项目。 我希望能够添加对象到我的AR SceneView点击,删除它们,双击,并拖动主题拖动。 初始点击放置对象工作正常,但我有一些与节点删除和拖动的问题。 移除和拖拽的主要问题是实际上“握住”或点击SCNNode是非常困难的。 大部分结果最终都不在我添加的SCNNode上。 第二个问题是,拖动是有点bug,SCNNode真的不像我的手指那样拖动。 我已经决定在github上创build一个项目,链接在这里: https : //github.com/theraad/ARAttempt 但是我也会发布我的代码来移除对象并在这里拖动对象: -(void)handleRemoveObject:(UITapGestureRecognizer *)recognizer { NSLog(@"Long Press Fired"); CGPoint tapPoint = [recognizer locationInView:_sceneView]; NSArray <SCNHitTestResult *> *result = [self.sceneView hitTest:tapPoint options:nil]; if ([result count] == 0) { return; } SCNHitTestResult *hitResult = [result firstObject]; if (hitResult.node) { [[hitResult.node parentNode] removeFromParentNode]; } } -(void)moveObject:(UIPanGestureRecognizer *)recognizer { […]

SceneKit节点不会改变场景根节点的位置

我使用的是与ARKit的SceneKit,现在有一个简单的应用程序,我点击屏幕上,它添加一个ARAnchor和一个SCNNode到我的场景。 在某些时候,我想要移动整个场景,所以我试着改变sceneView.scene.rootNode.position.x += 10来testing。 如果我在任何特定的节点上调用这个节点,那么该节点确实适当地移动 但是在rootNode上调用它,没有任何反应,我期望每个子节点(它是场景中的每个节点)都随之移动。 为什么我的其他节点不能正常移动,有什么我可以做的解决这个问题? 还是我在想这个错误?

ARKit演示在iPhone 6 / iPhone 6 Plus上崩溃

我正在使用ARKitfunction ,最近主要的iOS版本,但我得到一个错误failed assertion崩溃 MTLRenderPassDescriptor:深度附件的MTLStoreActionMultisampleResolve存储操作不受设备支持 我已经有iOS11testing版,安装在我的iPhone设备上。

ARKit和Vuforia – 标记识别

我正在开发一个iOS应用程序,我需要识别一个标记(很可能是QR码),并使用ARKit将一些3D内容放在它上面。 我正在考虑Vuforia和ARKit的组合。 是否有可能只使用Vuforia来识别标记并获得它的位置,然后将这些数据“传递”给ARKit? 我需要识别标记以select相应的3D内容。 我需要获得只有标记的位置,才能放置3D内容,之后我想使用ARKit进行跟踪。 可能吗? 是否有另一种可用于ARKit的标记识别解决scheme?

ARKit放置一个SCNNode面向相机

我正在使用ARKit来显示3D对象。 我设法把节点放在用户面前的现实世界中(也就是相机)。 但是,当我放下它们的时候,我并没有设法使它们面对相机。 let tap_point=CGPoint(x: x, y: y) let results=arscn_view.hitTest(tap_point, types: .estimatedHorizontalPlane) guard results.count>0 else{ return } guard let r=results.first else{ return } let hit_tf=SCNMatrix4(r.worldTransform) let new_pos=SCNVector3Make(hit_tf.m41, hit_tf.m42+Float(0.2), hit_tf.m43) guard let scene=SCNScene(named: file_name) else{ return } guard let node=scene.rootNode.childNode(withName: "Mesh", recursively: true) else{ return } node.position=new_pos arscn_view.scene.rootNode.addChildNode(node) 节点位于摄像机前的平面上。 但他们都在朝着同一个方向看。 我想我应该旋转 SCNNode但我没有设法做到这一点。

ARKit – 是否有可能像vuforia一样跟踪对象?

如果Apple的ARKit支持vuforia那样的3D对象跟踪(甚至图像跟踪),我无法find任何信息。 我不想在世界任何地方放置3D模型。 相反,我想检测一个特定的3D对象,并在该对象的infront和ontop上放置AR对象。 简单的例子:我想跟踪真实世界中的特定玩具车,并在AR场景中在其上面添加扰stream板。 有人可以提供我可以或不可以的信息吗?

如何将视觉框架坐标系转化为ARKit?

我正在使用ARKit(与SceneKit)添加虚拟对象(例如球)。 我使用Vision框架跟踪真实世界对象(例如脚),并在视觉请求完成处理器方法中接收其更新的位置。 let request = VNTrackObjectRequest(detectedObjectObservation: lastObservation, completionHandler: self.handleVisionRequestUpdate) 我想用虚拟replace被跟踪的真实世界对象(例如,用立方体代替脚),但是我不知道如何将坐标系不同的BoundingBox矩形(我们在视觉请求完成中接收到的)replace为场景套件节点。 下面是视觉请求完成处理程序的代码: private func handleVisionRequestUpdate(_ request: VNRequest, error: Error?) { // Dispatch to the main queue because we are touching non-atomic, non-thread safe properties of the view controller DispatchQueue.main.async { // make sure we have an actual result guard let newObservation = request.results?.first as? VNDetectedObjectObservation else […]

技术世界跟踪性能正受到资源限制的影响

在启用世界跟踪的情况下运行ARKit会话时,Xcode控制台显示有关(我认为:减less)跟踪性能的日志消息 ,尽pipe AR Session处于正常跟踪状态, 我在一个光线充足的办公室里用了很多“function”来检测, 该设备只能巧妙地移动 。 TLDR:我想了解什么可能导致他们,他们有什么影响,以及如何防止他们,或者当他们发生时重新采取行动。 不是简单地隐藏错误。 [Technique] World tracking performance is being affected by resource constraints [0] [Technique] World tracking performance is being affected by resource constraints [1] 控制台应用程序显示这些来自图书馆ARKit并落在日志类别技术 。 尽pipe听起来像是警告 ,但控制台应用程序将其types显示为错误 。 按照预期,在使用世界追踪时,控制台应用程序会在错误发生时显示大量的CoreMotion日志,但这些行似乎没有包含任何错误,警告或其他信息,这些信息可以帮助我诊断正在发生的事情。 在日志中显示错误的那一刻, 没有委托callback ,但最终(5秒或50秒之间的任何情况)屏幕将冻结,并且callback会话失败: Error Domain=com.apple.arkit.error Code=200 "World tracking failed." UserInfo={NSLocalizedDescription=World tracking failed., NSLocalizedFailureReason=World tracking cannot determine the device's […]

如何从ARKit录制video?

现在我正在testingARKit / SceneKit的实现。 对屏幕的基本渲染是有点工作,所以然后我想尝试将我在屏幕上看到的video录制到video中。 只是为了loggingScene Kit,我发现了这个Gist : // // ViewController.swift // SceneKitToVideo // // Created by Lacy Rhoades on 11/29/16. // Copyright © 2016 Lacy Rhoades. All rights reserved. // import SceneKit import GPUImage import Photos class ViewController: UIViewController { // Renders a scene (and shows it on the screen) var scnView: SCNView! // Another […]