Как получить горизонтальное изображение в сцене? Xcode размещает его вертикально. Ничего не помогает - PullRequest
0 голосов
/ 26 июня 2019

Я помещаю изображение как узел в сцене. Я просто хочу показать это на каком-то изображении. Но Xcode размещает его вертикально только в центре referenceImage. Я пытался найти решение. Ничего не помогает Как я могу нанести логотип на изображение? Что я делаю не так?

Я также пытался преобразовать узел с помощью функций Vector3, Vector4 и .eulerAngles.x. И я получил тот же результат.

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

    guard let imageAnchor = anchor as? ARImageAnchor else { return }

    let placeholderImage = UIImage(named: "logo")
    let geometry = SCNPlane(width: 0.3, height: 0.3)
    let material = SCNMaterial()
    material.diffuse.contents = placeholderImage
    geometry.materials = [material]
    let planeNode = SCNNode(geometry: geometry)

    let (min, max) = planeNode.boundingBox
    let size = SCNVector3Make(max.x - min.x, max.y - min.y, max.z - min.z)
    let widthRatio = Float(imageAnchor.referenceImage.physicalSize.width)/size.x
    let heightRatio = Float(imageAnchor.referenceImage.physicalSize.height)/size.z

    guard let ratio = [widthRatio, heightRatio].min() else { return }

    let finalRatio = ratio * 0.8           
    planeNode.transform = SCNMatrix4(imageAnchor.transform)
    planeNode.eulerAngles.x = -.pi / 2
    planeNode.scale = SCNVector3Make(0.001, 0.001, 0.001)
    planeNode.eulerAngles = SCNVector3Make(-.pi/2, 0, 0);
    sceneView.scene.rootNode.addChildNode(planeNode)

    let appearanceAction = SCNAction.scale(to: CGFloat(finalRatio), duration: 0.4)
    appearanceAction.timingMode = .easeOut
    planeNode.runAction(appearanceAction)

    self.planeNode = planeNode
    self.imageNode = node
}

Ошибки отсутствуют. Проект выполняется, но логотип всегда расположен вертикально.

...