gpt4 book ai didi

swift - 获取引用图像的名称 swift ARKit 1.5

转载 作者:行者123 更新时间:2023-11-28 10:42:46 25 4
gpt4 key购买 nike

有人知道如何在 AR 中通过相机获取红色的引用图像名称吗?

我认为 anchor 正在读取标识符并将其连接到返回名称物理尺寸 的引用图像。

我想要一个 AR Resources 文件夹,我可以在其中放置不同的图像,然后根据相机识别的内容,我想显示一个模型而不是另一个模型。

非常感谢!

最佳答案

ARReferenceImage 具有以下您可以访问的属性:

var name: String?

A descriptive name for the image.

var physicalSize: CGSize

The real-world dimensions, in meters, of the image.

因此,为了获取引用图像的名称和其他属性,您可以使用以下 delegate 回调:

func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {

//1. If Out Target Image Has Been Detected Than Get The Corresponding Anchor
guard let currentImageAnchor = anchor as? ARImageAnchor else { return }

//2. Get The Targets Name
let name = currentImageAnchor.referenceImage.name!

//3. Get The Targets Width & Height
let width = currentImageAnchor.referenceImage.physicalSize.width
let height = currentImageAnchor.referenceImage.physicalSize.height

//4. Log The Reference Images Information
print("""
Image Name = \(name)
Image Width = \(width)
Image Height = \(height)
""")
}

请注意,此代码假定您的图像具有在 ARResources Asset Folder 中设置的名称,例如:

enter image description here

然后您可以将逻辑放在回调中或调用另一个函数,该函数在 ARImageAnchor 的转换处添加 SCNNodeSCNScene,例如:

//1. Create An SCNNode
let nodeHolder = SCNNode()

//2. Determine Which ImageTarget Has Been Detected
if name == "ImageOne"{

let nodeGeometry = SCNBox(width: 0.02, height: 0.02, length: 0.02, chamferRadius: 0)
nodeGeometry.firstMaterial?.diffuse.contents = UIColor.cyan
nodeHolder.geometry = nodeGeometry

}else if name == "ImageTwo"{

let nodeGeometry = SCNSphere(radius: 0.02)
nodeGeometry.firstMaterial?.diffuse.contents = UIColor.cyan
nodeHolder.geometry = nodeGeometry
}

//3. Add The SCNNode At The Position Of The Anchor
nodeHolder.position = SCNVector3(currentImageAnchor.transform.columns.3.x,
currentImageAnchor.transform.columns.3.y,
currentImageAnchor.transform.columns.3.z)

//4. Add It To The Scene
augmentedRealityView?.scene.rootNode.addChildNode(nodeHolder)

关于swift - 获取引用图像的名称 swift ARKit 1.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49716202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com