Как установить анимацию для дочернего узла из файла scn в iOS swift? - PullRequest
0 голосов
/ 17 октября 2018

У меня есть 3d модель поезда с треком.Папка поезда является родительским узлом и имеет два дочерних узла, которые называются железнодорожным и электрическимПри обнаружении ссылки на верхней части опорного изображения 3d поезда дорожки будут показаны и медленно 3d модель поезда анимации на узле дорожки с плавной анимацией.

вот мои скриншоты файла art.assets.scn:

enter image description here

Вот мой код обнаружения опорных изображений, который я использовал для рендерингаМетод делегата:

  //train 3d model plane
  let trainBottomPlane = SCNPlane(width: 0.08, height: 0.02)
  trainBottomPlane.firstMaterial?.diffuse.contents = UIColor.red.withAlphaComponent(0.0)
  let trainBottomNode = SCNNode(geometry: trainBottomPlane)
  trainBottomNode.eulerAngles.x = -.pi/2
  trainBottomNode.position = SCNVector3(0, 0, -0.038)
  let overlaytrainNode = self.getNode(withImageName: "trainModel")
  print("overlay::\((overlaytrainNode))")

Вот код для получения дочернего узла файла scn:

lazy var trainNode: SCNNode = {
    guard let scene = SCNScene(named: "art.scnassets/train.scn"),
        let node = scene.rootNode.childNode(withName: "train", recursively: false) else { return SCNNode() }

    let newValue = node.childNode(withName: "ElectricTrain", recursively: false)
    print("newvalue::::\(newValue)")
    newValue.position = SCNVector3(1.0  , 0.05, 0.0)

    node.scale = SCNVector3(0.0025, 0.0025, 0.0025)
    node.position = SCNVector3(-0.07, 0.00, 0.0)
    node.eulerAngles.x = -.pi/2
    node.eulerAngles.y = .pi
    node.eulerAngles.z = .pi/2

    return node
}()

func getNode(withImageName name: String) -> SCNNode {
    var node = SCNNode()
    switch name {
    case "3dMap": 
        node = dmapNode
    case "3dGraph":
        node = dgraphNode
    case "trainModel":
        node = trainNode
    default:
        break
    }
    return node
}

Мои вопросы: 1. Как получить дочерний узел и установить позицию?2. Как сделать плавную анимацию для поезда, чтобы двигаться на рельсе, когда обнаружен опорный пробел?

Любая помощь, высоко ценится пожалуйста.

...