将自定义视图添加到ARKit

时间:2017-06-23 14:58:30

标签: ios arkit

我刚开始从苹果看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); 

2 个答案:

答案 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
}