【问题标题】:SceneKit, Zoom camera to fit nodeSceneKit,缩放相机以适应节点
【发布时间】:2019-08-03 09:10:50
【问题描述】:

您好,我有一个包含 3 个节点的非常简单的场景:

  • 相机
  • Stl

放置 STL 时,它非常小,因此用户必须大幅缩放相机。我想做的是以编程方式将相机缩放到适合的 STL 节点,但我不确定如何。

这是我目前所拥有的:

stlNode = .... // Custom node
lightNode = scene?.rootNode.childNode(withName: "omni", recursively: true)
        cameraNode = scene?.rootNode.childNode(withName: "camera", recursively: true)

        cameraNode.constraints  = [SCNLookAtConstraint(target: stlNode)]
// Zoom to fit the stlNode here.
        scene?.rootNode.addChildNode(stlNode)


【问题讨论】:

    标签: ios swift scenekit


    【解决方案1】:

    您可以尝试创建一个 cameraClass,然后添加 zoomIn()、zoomOut() 函数以便您进行调整。您还可以稍微扩展您的节点,看看是否有帮助。

    var cameraEye = SCNNode()
    var cameraFocus = SCNNode()
    
    ...
    init()
        {
            cameraEye.name = "Camera Eye"
            cameraFocus.name = "Camera Focus"
    
            cameraFocus.isHidden = true
            cameraFocus.position  =  SCNVector3(x: 0, y: 0, z: 0)
    
            cameraEye.camera = SCNCamera()
            cameraEye.constraints = []
            cameraEye.position = SCNVector3(x: 0, y: 15, z: 0.1)
    
            let vConstraint = SCNLookAtConstraint(target: cameraFocus)
            vConstraint.isGimbalLockEnabled = true
            cameraEye.constraints = [vConstraint]
        }
    // Add your camera nodes
    gameNodes.addChildNode(camera.cameraEye)
    gameNodes.addChildNode(camera.cameraFocus)
    

    ZoomIn()/zoomOut() 只是一个调整距离的功能。

    【讨论】:

      猜你喜欢
      • 2018-07-18
      • 2017-09-12
      • 1970-01-01
      • 2016-02-09
      • 2014-03-21
      • 2016-06-16
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      相关资源
      最近更新 更多