Поместите 3D-модель вместо координат - PullRequest
0 голосов
/ 13 марта 2019

Я работаю над проектом AR, используя ARKit. Я хочу разместить 3D-модель вместо Координаты. Я могу добавить изображение вместо координаты ниже код

public init(location: CLLocation?, image: UIImage) {
        let plane = SCNPlane(width: image.size.width / 100, height: image.size.height / 100)
        plane.firstMaterial!.diffuse.contents = image
        plane.firstMaterial!.lightingModel = .constant

        annotationNode = AnnotationNode(view: nil, image: image)
        annotationNode.geometry = plane

        super.init(location: location)

        let billboardConstraint = SCNBillboardConstraint()
        billboardConstraint.freeAxes = SCNBillboardAxis.Y
        constraints = [billboardConstraint]

        addChildNode(annotationNode)
    }

Код класса AnnotationNode для размещения изображения в Координате.

open class AnnotationNode: SCNNode {
    public var view: UIView?
    public var image: UIImage?

    public init(view: UIView?, image: UIImage?) {
        super.init()
        self.view = view
        self.image = image
    }

    required public init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

Вот код добавления 3D-модели на экран.

let idleScene = SCNScene(named: "art.scnassets/idleFixed.dae")!
//        let idleScene = SCNScene(named: "art.scnassets/piper_pa18.dae")!

        // This node will be parent of all the animation models
        let node1 = SCNNode()

        // Add all the child nodes to the parent node
        for child in idleScene.rootNode.childNodes {
            node1.addChildNode(child)
        }

Если я добавлю строку ниже, 3D-модель будет добавлена ​​в приложение, но не в определенную координату.

sceneLocationView.scene.rootNode.addChildNode(node1)

Но я хочу добавить 3D-объект. Может кто-нибудь помочь мне, как этого добиться?

...