Как обернуть изображение поверх трехмерного объекта в ARkIt2? - PullRequest
0 голосов
/ 19 декабря 2018

Мне нужно обернуть 3d-объект (scene) изображением.Примерно так:

enter image description here

Я использую следующий код:

let imageMaterial = SCNMaterial()
let image = UIImage(named: "temp_flow_image")
imageMaterial.diffuse.contents = image

let objectScene = SCNScene(named: "art.scnassets/frame.scn")
    let objectNode: SCNNode = objectScene!.rootNode.childNode(withName: "frame", recursively: true)! 
objectNode.geometry?.firstMaterial?.diffuse.contents = imageMaterial

objectNode.position = SCNVector3(0,0,-4)

let scene = SCNScene() // Main scene of the app
self.sceneView.scene = objectScene!

Весь процесс будет выглядеть так:

Загрузите объект 3d как SCNNode и программно оберните изображение вокруг него.Я могу видеть 3d объект, но не изображение поверх него.Что я здесь не так делаю?Разве мы не можем редактировать геометрическую часть scene прагматично?

Я могу обернуть изображение вокруг SCNBox или любой другой предопределенной фигуры в arkit, но не с внешним 3d объектом

1 Ответ

0 голосов
/ 20 декабря 2018

работает следующий код:

self.sceneView.scene.rootNode.enumerateChildNodes { (node, _) in
if(node.name == "box") {
   parentNode = node
   let geometry = parentNode.geometry
   geometry?.firstMaterial?.diffuse.contents = imageToDisplay
   parentNode.position = SCNVector3Make(0, 0, -2.9)
   let boxShape:SCNPhysicsShape = SCNPhysicsShape(geometry: geometry!, options: nil)
            parentNode.physicsBody = SCNPhysicsBody(type: .static, shape: boxShape)
            parentNode.physicsBody?.restitution = 1
        }
    }

 sceneView.scene.rootNode.addChildNode(parentNode)

Я создал scene box в Xcode

...