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