Применить GIF к SCNPlane - PullRequest
       78

Применить GIF к SCNPlane

1 голос
/ 18 апреля 2020

Прямо сейчас мой код Swift создает SCNPlane с изображением под названием we.jpg. Я хотел бы заменить we.jpg на ball.gif. material.diffuse.contents - это место, где UIImage прикреплен к SCNPlane.

let planeGeometry = SCNPlane(width: 0.2, height: 0.35)
let material = SCNMaterial()
material.diffuse.contents = UIImage(named: "we.jpg")
planeGeometry.materials = [material]

1 Ответ

0 голосов
/ 18 апреля 2020

Вы можете легко заменить текстуру .jpg SCNPlane текстурой .gif. Но помните, что в SceneKit нет поддержки анимированных GIF-текстур.

Вот код:

import ARKit
import SceneKit

class ViewController: UIViewController {

    @IBOutlet var sceneView: ARSCNView!   // in case you're using AR app
    //@IBOutlet var sceneView: SCNView!   // in case you're using VR app 
    let planeNode = SCNNode()

    override func viewDidLoad() {
        super.viewDidLoad()

        let scene = SCNScene()
        sceneView.scene = scene
        sceneView.allowsCameraControl = true

        planeNode.geometry = SCNPlane(width: 0.2, height: 0.35)
        planeNode.position = SCNVector3(0, 0,-0.5)
        sceneView.scene?.rootNode.addChildNode(planeNode)

        DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) {  // 3 sec delay
            let image = UIImage(named: "texture.jpg")
            self.planeNode.geometry?.firstMaterial?.diffuse.contents = image
        }

        // Other stuff...
    }

    //...and you can replace a texture with a button's click:

    @IBAction func replaceTexture(_ sender: UIButton) {
        let image = UIImage(named: "texture.gif")
        planeNode.geometry?.firstMaterial?.diffuse.contents = image
    }
}
...