ios - SceneKit,缩放相机以适应节点

标签 ios swift scenekit

嗨,我有一个非常简单的场景,包含 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)


最佳答案

您可以尝试创建一个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() 只是调整距离的函数。

关于ios - SceneKit,缩放相机以适应节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55129224/

相关文章:

ios - 如何在 UISplitViewController 中命名后退按钮

swift - 为什么 swift 字符串中的 "\n"在稍微不同的情况下表现不同?

ios - Swift:如何声明采用可变/var 参数的函数签名?

ios - SceneKit中convertPosition的解释

ios - Safari 远程调试拾取设备但不显示任何元素

iphone - 如何限制 UIDatePicker View 中的日期?

ios - 在 Obj-C 中,我如何制作一个 switch 语句来评估类,而不仅仅是数字?

string - swift println float 使用字符串

audio - Scenekit Xcode 7 位置音频

swift - SceneKit – SCNAction 和 CABasicAnimation 有什么区别?