我刚开始看苹果的 ARKitExample,我还在学习。我需要像交互式指南一样做。例如,我们可以检测到一些东西(比如二维码),在那个区域,我可以用 1 个标签显示吗?
是否可以将自定义 View (例如 UIVIew、UIlabel)添加到表面?
编辑
我看到了一些添加行的示例。我需要找到如何添加额外的 View 或图像。
let mat = SCNMatrix4FromMat4(currentFrame.camera.transform)
let dir = SCNVector3(-1 * mat.m31, -1 * mat.m32, -1 * mat.m33)
let currentPosition = pointOfView.position + (dir * 0.1)
if button!.isHighlighted {
if let previousPoint = previousPoint {
let line = lineFrom(vector: previousPoint, toVector: currentPosition)
let lineNode = SCNNode(geometry: line)
lineNode.geometry?.firstMaterial?.diffuse.contents = lineColor
sceneView.scene.rootNode.addChildNode(lineNode)
}
}
我认为这段代码应该能够添加自定义图像。但我需要找到整个样本。
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)
}
最佳答案
ARKit 不是渲染引擎——它不会为您显示任何内容。 ARKit 提供有关真实世界空间的信息,供渲染引擎使用,例如 SceneKit、Unity 和您构建的任何自定义引擎(使用 Metal 等),以便它们可以显示似乎存在于真实世界空间中的内容。因此,任何针对 ARKit 的“我如何显示”问题实际上都是针对您与 ARKit 一起使用的渲染引擎的问题。
SceneKit 是一种使用 ARKit 显示 3D 内容的简单开箱即用、不需要额外软件的方式,所以我想你会问这个问题。
SceneKit 无法将 UIView
渲染为 3D 场景的一部分。但它可以渲染平面、立方体或其他形状,并将纹理贴图 2D 内容渲染到它们上面。如果你想在 ARKit 检测到的平面上绘制文本标签,这就是调查的方向——按照示例的,嗯,示例创建与检测到的 SCNPlane
对应的 ARPlaneAnchor
对象,为自己获取一些文本的图像,然后设置该图像作为平面几何体的漫反射内容。
关于ios - 向 ARKit 添加自定义 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44724475/