Я пытаюсь разместить на экране виртуальное 2D-изображение помимо отслеживаемого (эталонного) изображения. Для этого я использовал приведенный ниже код после отслеживания эталонного изображения, я создаю плоскость, которая напоминает изображение на экране, а затем оцениваю положение узла изображения с помощью простых математических расчетов. Слишком просто, видимо, потому что результат не очень хороший.
Я считаю, что должен быть способ получше, но я новичок в ARKit и еще не нашел его, мне нужна помощь. Спасибо.
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
let node = SCNNode()
if let imageAnchor = anchor as? ARImageAnchor {
if let name = imageAnchor.name {
print("Image name: \(name)")
}
// Create a plane to visualize the initial position of the detected image.
let plane = SCNPlane(width: imageAnchor.referenceImage.physicalSize.width,
height: imageAnchor.referenceImage.physicalSize.height)
let planeNode = SCNNode(geometry: plane)
planeNode.opacity = 0.25
planeNode.eulerAngles.x = -.pi / 2
let imagePlane = SCNPlane(width: 0.1, height: 0.1)
imagePlane.firstMaterial?.diffuse.contents = UIImage(named: "image")
let imageNode = SCNNode(geometry: imagePlane)
imageNode.eulerAngles.x = -.pi / 2
let x = Float(-1 * (plane.width/2 + imagePlane.width/2))
let y = Float(-1 * (plane.height/2 + imagePlane.height/2))
imageNode.position = SCNVector3Make(Float(x), Float(y), 0)
node.addChildNode(imageNode)
}
return node
}
Вот неудовлетворительный результат:
Обновлено: Что здесь не так? Изображение должно оставаться рядом с отслеживаемым изображением (большим) слева, касаясь левой стороны отслеживаемого изображения. И проблема также в том, как добиться этого, я добился этого плохого результата с помощью приблизительных математических вычислений, я полагаю, есть способ использовать преобразование отслеживаемой плоскости изображения, чтобы расположить другое изображение сбоку.
Добавил скриншот к вопросу
Что там не так? Размер изображения? Просто установите изображение как материал для первой плоскости, я не понимаю, зачем вам 2
@jlsiewert: проблема не в размере изображения, изображение должно оставаться рядом с отслеживаемым изображением (большим) слева, касаясь левой стороны отслеживаемого изображения. И проблема также в том, как добиться этого, я добился этого плохого результата с помощью приблизительных математических вычислений, я полагаю, есть способ использовать преобразование отслеживаемой плоскости изображения, чтобы расположить другое изображение сбоку.





Что в итоге, скриншот можно посмотреть?