Как скачать файл ARImage (.SCN) для отображения изображения в ARSCNView? - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь загрузить ARImage (файл .scn) В моем приложении.И отображать в ARSCNView

Ниже мой код работает нормально, он может отображать изображение.Изображение также ниже

func addARObject(x: Float = 0, y: Float = 0, z: Float = -0.5) {

    let aRUrl : URL = URL(string :arImageUrl2)!
    do {
        let arScene = try SCNScene(url: aRUrl  , options: nil)
        let arNode = arScene.rootNode.childNode(withName: "chair", recursively: false)
        print("x,y,z",x,y,z)
        arNode?.position = SCNVector3(x,y,z)

        zAxis = z
        if isNodeAvailable {
            currentNode.position = SCNVector3(x,y,z)
        }else{
            isNodeAvailable = true
            currentNode = arNode
            sceneView.scene.rootNode.addChildNode(arNode!)
        }
    }
    catch {
        print("errrrrororororor")
    }

}

. Выходное значение составляет ?? enter image description here

Но стул цвет красный и его отображающая поверхность белого цвета.но на самом деле нет поверхности.

Если в папке «Мой проект» без загрузки используется то же изображение, то цвет стула - красный.Так может ли кто-нибудь объяснить мне, что не так с моим кодом или проблемой с изображением?

Ниже изображение, когда я использую локальный файл в своем проекте.

enter image description here

1 Ответ

0 голосов
/ 17 октября 2018

Вы создаете родительский узел, а затем можете добавить все свои узлы как дочерние.

var nodes: [SCNNode] = getMyNodes()

var parentNode = SCNNode()
parentNode.name = "chair"

for node in nodes {
parentNode.addChildNodes(node)
}

Вы можете получить доступ к определенному дочернему элементу, используя:

 parentNode.childNode(withName: nameOfChildNode, recursively: true)

Если вы импортируете изфайл сцены:

 let scene = SCNScene(named: "myScene.scn")

  func getMyNodes() -> [SCNNode] {
  var nodes: [SCNNode] = [SCNNode]()
  for node in scene.rootNode.childNodes {
    nodes.append(node)
   }
   return nodes
 }

После получения дочернего узла от родительского узла вы можете добавить текстуру к дочернему узлу.

  let childOne = parentNode.childNode(withName: nameOfChildNode, recursively: true)

  childOne.?.firstMaterial?.diffuse.contents = UIColor.red
...