我正在使用SceneKit
来使用3D汽车在谷歌地图中使用,就像Uber一样。 我设法使用它并旋转它,但相机在顶部,一旦位置管理器方向发生变化以查看汽车的边缘,我想旋转它。
我尝试更改欧拉角,但效果不佳。 我尝试使用默认相机,但没有找到如何将其放置在顶部或左侧或右侧......我只能从 .scn 文件中更改它,而不能在代码中更改它。
https://github.com/HilalAH/Uber3dModel
仅供参考 - 你有 allowsCameraControl = true,可能不希望这样。
这是帮助您入门的非常快速的方法。
在您的相机上设置一个约束,使其始终看您的汽车,然后您可以使用简单的矢量调整 cameraEye。 你可以对汽车的航向做一些数学运算,并将cameraEye放置在相对于它移动方向(背面、侧面等(的任何位置,但汽车将永远是焦点。
像这样的代码,相机焦点是你的车:
class Camera
{
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: 0, z: 20)
let vConstraint = SCNLookAtConstraint(target: cameraFocus)
vConstraint.isGimbalLockEnabled = true
cameraEye.constraints = [vConstraint]
}
}
确保已添加相机对象:
scene.rootNode.addChildNode(camera.cameraEye)
scene.rootNode.addChildNode(camera.cameraFocus)