我刚开始从苹果看ARKitExample,我还在学习。我需要像互动指南那样做。例如,我们可以检测到某些内容(如QRCode),在该区域中,我可以显示1个标签吗?
是否可以将自定义视图(如可能是UIVIew,UIlabel)添加到曲面?
修改
我看到一些添加线的例子。我需要找到如何添加其他视图或图像。
func updateRenderer(_ frame: ARFrame){
drawCameraImage(withPixelBuffer:frame.capturedImage)
let viewMatrix = simd_inverse(frame.came.transform)
let prijectionMatrix = frame.camera.prijectionMatrix
updateCamera(viewMatrix, projectionMatrix)
updateLighting(frame.lightEstimate?.ambientIntensity)
drawGeometry(forAnchors: frame.anchors)
}
我认为此代码应该能够添加自定义图像。但我需要找到整个样本。
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);
答案 0 :(得分:4)
ARKit不是渲染引擎 - 它不会为您显示任何内容。 ARKit提供有关真实世界空间的信息,供渲染引擎使用,例如SceneKit,Unity和您构建的任何自定义引擎(使用Metal等),以便它们可以显示看似存在于真实世界空间中的内容。因此,任何"我如何展示" ARKit的问题实际上是您使用ARKit的任何渲染引擎的问题。
SceneKit是使用ARKit显示3D内容的简单开箱即用,无需额外软件要求的方式,所以我认为你会问这个问题。
SceneKit无法将UIView
渲染为3D场景的一部分。但它可以渲染平面,立方体或其他形状,并将2D内容纹理映射到它们上。如果你想在ARKit检测到的平面上绘制文本标签,那就是要调查的方向 - 按照示例,嗯,示例创建对应于检测到的{{1}的SCNPlane
个对象s,给自己一些文字的图像,并将该图像设置为平面几何体的漫反射内容。
答案 1 :(得分:-1)
是的,您可以在ARKit Scene中添加自定义视图。 只需制作视图的图像,然后将其添加到任何位置即可。 您可以使用以下代码获取UIView的图像
func image(with view: UIView) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.isOpaque, 0.0)
defer { UIGraphicsEndImageContext() }
if let context = UIGraphicsGetCurrentContext() {
view.layer.render(in: context)
let image = UIGraphicsGetImageFromCurrentImageContext()
return image
}
return nil
}