作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试着用我的AR经验来实现飞机探测。
我有一个扩展名为ARSCNView
的ARSCNViewDelegate
子类。
调用了我的委托方法。然而,我从未见过调用我的cameraDidChangeTrackingState
方法。知道吗?
class ARView: ARSCNView {
override init(frame: CGRect, options: [String : Any]? = nil) {
super.init(frame: frame, options: options)
let sessionConfig = ARWorldTrackingConfiguration()
sessionConfig.planeDetection = [.horizontal]
self.session.run(sessionConfig)
self.delegate = self
}
}
extension ARView: ARSCNViewDelegate{
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
//add childNodes to the node here....
//but, this method doesn't get called
}
}
renderer(_:didAdd node:, for anchor:)
,但我不确定是否应该使用这个,因为在大多数(也是Apples)示例中,它们向锚节点添加对象,如上面代码中所示。还是我必须自己触发d
session(_ session: ARSession, didAdd anchors: [ARAnchor])
方法?
最佳答案
此函数是一个实例方法。您需要将会话的委托设置为对象,然后将锚保存在数组中。如果需要使用任何锚定,只需搜索数组并找到对您有用的锚定。
sceneView.delegate = self
func renderer(_ renderer: SCNSceneRenderer,
didAdd node: SCNNode,
for anchor: ARAnchor) {
guard let planeAnchor = anchor as? ARPlaneAnchor else {
fatalError()
}
planeAnchor.addPlaneNode(on: node,
contents: UIColor.arBlue.withAlphaComponent(0.5))
// let virtualNode = VirtualObjectNode()
// DispatchQueue.main.async(execute: {
// node.addChildNode(virtualNode)
// })
}
let anchorsArray = planeAnchor[2]
let node = SCNNode()
node.position = SCNVector3Make(anchorsArray.center.x,
0,
anchorsArray.center.z)
关于swift - 未调用方法renderer(_:didAdd节点:,用于 anchor :),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55173954/
我正在开发一个使用 ARKit 和 CoreML 的 iOS 应用程序,该应用程序应该在识别出墙上的某个数字后添加一个 SCNNode。我现在面临的问题是我有两个函数同时竞争(一个函数搜索墙(rend
完全依赖 ARKit 自动平面检测是我不想做的事情,因为它需要时间来检测表面,然后现实生活中的表面应该有足够的纹理,因此我需要考虑一些事情提供一个选项,如果我愿意,我应该能够通过点击按钮随意添加 an
我在实现 MKMapViewDelegate 的方法 mapView(_:didAdd:) 时遇到意外错误。它从 Xcode 9.3 开始发生,而在 Xcode 9.2 中没有发生。使用集群时,我在使
我是一名优秀的程序员,十分优秀!