Как применить SCNLookAtConstraint?

Я хочу убедиться, что прожектор всегда направлен на корневой узел сцены. Однако простое добавление SCNLookAtConstraint к легкому узлу, похоже, не работает. Я даже пытался включить блокировку карданного подвеса, но я все еще могу вращать узел после применения ограничения. Чтобы сделать ориентацию светового узла более очевидной, я добавил длинную рамку.

    // Set up light
    let light = SCNLight()
    light.castsShadow = true
    light.type = .spot
    light.intensity = 1000
    let lightNode = SCNNode()
    lightNode.light = light
    lightNode.position = SCNVector3(5, 5, -5)
    lightNode.geometry = SCNBox(width: 0.1, height: 1, length: 0.1, chamferRadius: 0.0)

    // Add constraint
    let constraint = SCNLookAtConstraint(target: scene.rootNode)
    constraint.isGimbalLockEnabled = true
    constraint.isEnabled = true
    lightNode.constraints? = [constraint]
    lightNode.rotation = SCNVector4(0, -1, -1, CGFloat.pi / 2)
    scene.rootNode.addChildNode(lightNode)

Чтобы продемонстрировать, что ограничение (и блокировка карданного подвеса) не работает, вот изображение без lightNode.rotation = SCNVector4 (0, -1, -1, CGFloat.pi / 2):

изображение после поворота

0 ответов

Другие вопросы по тегам