ios - iOS Swift ARKit 可视化来自 ARWorldMap RawFeaturePoints 的原始特征点
问题描述
一个ARWorldMap
has rawFeaturePoints
,它是一个类型的点云ARPointCloud
有谁知道如何像下面的视频一样可视化这个点云;
https://m.youtube.com/watch?v=Pb4uv4FSWKI
这怎么可能实现?
解决方案
正如您所说的那样,这可以使用rawFeaturePoints
实例属性来实现,它表示在相机图像中检测到的显着特征。
var rawFeaturePoints: ARPointCloud? { get }
或者
sceneView.session.currentFrame?.rawFeaturePoints
这是Josh Robbins在 GitHub 上编写的代码摘录。
func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
guard let currentFrame = self.augmentedRealitySession.currentFrame,
let featurePointsArray = currentFrame.rawFeaturePoints?.points else { return }
visualizeFeaturePointsIn(featurePointsArray)
}
func visualizeFeaturePointsIn(_ featurePointsArray: [vector_float3]) {
self.augmentedRealityView.scene.rootNode.enumerateChildNodes { (featurePoint, _) in
featurePoint.geometry = nil
featurePoint.removeFromParentNode()
}
DispatchQueue.main.async {
self.rawFeaturesLabel.text = self.Feature_Label_Prefix + String(featurePointsArray.count)
}
featurePointsArray.forEach { (pointLocation) in
let clone = sphereNode.clone()
clone.position = SCNVector3(pointLocation.x, pointLocation.y, pointLocation.z)
self.augmentedRealityView.scene.rootNode.addChildNode(clone)
}
}
推荐阅读
- python - 在 s3 存储桶之间复制时过滤掉空文件
- java - java.lang.RuntimeException:未找到 API 密钥。对于片段中的 mapView
- android - 询问连接 USB 或访问蓝牙的权限 - React Native
- mysql - 选择在 SQLworkbench 中的此位置无效
- python - 如何在python中找到给定日期每周的总播放时间?
- pandas - 在 Azure Databricks 上以附加模式写入 CSV 文件
- c - MacOSX Catalina - 内存泄漏和物理内存消耗
- php - 增加字符串值
- vue.js - VUE.js 和 v-mask - 获取后未应用掩码
- html - 如何修复左边距和右边距 qweb odoo 的间隙