Как сделать изображение jpg с помощью ARKit ARSKViewDelegate? - ios


1

Я хотел бы отобразить jpg-изображение как 2d-прямоугольник, плавающий в пространстве. Использование примера SpriteKit - как вернуть jpg-образ из ARSKViewDelegate?

Демо возвращает SKLabelNode - есть ли класс Node, который будет подходящим для jpg-изображения, которое я бы извлек из сети, возможно, UIImage?

func view(_ view: ARSKView, nodeFor anchor: ARAnchor) -> SKNode? {
    // Create and configure a node for the anchor added to the view session.
    let labelNode = SKLabelNode(text: "?")
    labelNode.horizontalAlignmentMode = .center
    labelNode.verticalAlignmentMode = .center
    return labelNode;
}
Источник
  •  18
  •  2
  • 9 мар 2020 2020-03-09 06:51:28

2 ответа

0

Похоже, я могу использовать SKSpriteNode из SKTexture. Единственная проблема с этим - я вижу в предупреждениях журналов о сниженной производительности. [Technique] World tracking performance is being affected by resource constraints [1]

    let url = URL(string: imageURL)
    let data = try? Data(contentsOf: url!) //make sure your image in this url does exist, otherwise unwrap in a if let check
    let theImage = UIImage(data: data!)
    let Texture = SKTexture(image: theImage!)
    return SKSpriteNode(texture: Texture)
1

Вы можете использовать SCNPlane и назначить UIImage как содержимое этой плоскости.

let imagePlane = SCNPlane(width: sceneView.bounds.width/6000, height: sceneView.bounds.height/6000)
imagePlane.firstMaterial?.diffuse.contents = //<-- UIImage here
imagePlane.firstMaterial?.lightingModel = .constant
let planeNode = SCNNode(geometry: imagePlane)

UPDATE: теперь я заметил, что вы используете SpriteKit. В коде, который я использовал, используется SceneKit.