实际上我正在工作名片图像检测以显示那里的业务配置文件。 我已经实现了图像检测,平面动画。这是我的问题,当图像与平面一起检测到时,它应该显示用户名标签,配置文件和网站。我正在尝试显示用户名标签,但我已经在 SCNText 中完成了。我如何使用SCNNode标签用户iamge。
这是我尝试过的代码:
guard let imageAnchor = anchor as? ARImageAnchor else {return}
if let imageName = imageAnchor.referenceImage.name {
print(imageName)
if imageName == "card" {
// let planeGeometry = SCNPlane(width: 25, height: 25)
// planeGeometry.firstMaterial?.isDoubleSided = true
// planeGeometry.firstMaterial?.diffuse.contents = UIColor.blue.withAlphaComponent(0.5)
//--
let plane = SCNPlane(width: 4,
height: 10)
plane.firstMaterial?.diffuse.contents = UIColor.init(red: 0, green: 189, blue: 255, alpha: 0.88)
plane.cornerRadius = 0.25
let planeNode = SCNNode(geometry: plane)
planeNode.opacity = 0.25
planeNode.eulerAngles.x = -.pi / 2
// planeNode.position = SCNVector3(x:0, y:0, z:2)
planeNode.runAction(SCNAction.moveBy(x: 0, y: 0, z: 5, duration: 0.5))
let nameText = SCNText()
nameText.firstMaterial?.diffuse.contents = "Gowdhaman"
nameText.font = UIFont(name: "Avenir-medium", size: 16)
nameText.firstMaterial?.diffuse.contents = UIColor.red
nameText.firstMaterial?.diffuse.contents = SCNVector3.init(0, 0, 0)
// nameText.firstMaterial?.diffuse.contents =
// nameText.firstMaterial?.diffuse.contents = SCNAction.moveBy(x: 0, y: 0, z: 5, duration: 1)
let nameLabelNode = SCNNode(geometry: nameText)
let eulerAngles =
self.sceneView.session.currentFrame?.camera.eulerAngles
nameLabelNode.eulerAngles = SCNVector3((eulerAngles?.x)!,
(eulerAngles?.y)!, (eulerAngles?.z)! - .pi/6)
planeNode.addChildNode(nameLabelNode)
node.addChildNode(planeNode)
self.sceneView.scene.rootNode.addChildNode(node)
}
}
我目前正在做一个非常相似的项目!我尝试的一件事是创建一个SCNPlane,然后将其内容设置为渲染器函数中的图像
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
let node = SCNNode()
......
// create a plane to contain the image
let profilePlane = SCNPlane(width: 0.035, height: 0.035)
// Add the profile picture file in your assets folder to the contents of your plane
profilePlane.firstMaterial?.diffuse.contents = "ProfilePictureName"
let profilePlaneNode = SCNNode(geometry: profilePlane)
node.addChildNode(profilePlaneNode)
}
使用此代码,它将在 imageAnchor 的中心生成一个正方形,因此您需要在之后调整一些内容