Вращение цилиндра SceneKit вокруг одной оси

#ios #swift #scenekit

#iOS #swift #scenekit

Вопрос:

У меня есть следующий код, чтобы включить отображение 3D цилиндра в представлении. При просмотре на устройстве жесты поворачивают цилиндр как по оси x (проведите пальцем вверх и вниз), так и по оси y (проведите пальцем влево и вправо), но ось z заблокирована. Я полагаю, что это значение по умолчанию для allowsCameraControl.

Что я хотел бы сделать, так это заблокировать ось x (я думаю), чтобы работали только жесты прокрутки влево и вправо. Я не должен быть в состоянии видеть верхнюю или нижнюю часть цилиндра. Я хотел бы сохранить вращение по умолчанию при пролистывании влево и вправо (т. Е. Оно естественным образом замедляется после пролистывания).

С благодарностью принимаю любую помощь!

 class MyCollectionViewController: UIViewController {

@IBOutlet weak var scnView: SCNView!

var scnScene: SCNScene!


override func viewDidLoad() {
    super.viewDidLoad()
    sceneSetup()
}


// MARK: Scene
func sceneSetup() {

    scnScene = SCNScene()

    let cylinder = SCNNode(geometry: SCNCylinder(radius: 5.0, height: 20))
    cylinder.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "image1")
    cylinder.geometry?.firstMaterial?.specular.contents = UIColor.white

    scnView.allowsCameraControl = true

    scnScene.rootNode.addChildNode(cylinder)

    scnView.autoenablesDefaultLighting = true

    scnView.scene = scnScene
}
  

}

Ответ №1:

Добавление следующего в ваш код может заблокировать вертикальный

    scnView.defaultCameraController.maximumVerticalAngle = 0.001
  

Комментарии:

1. Мне нравится однострочное решение! Спасибо!