【问题标题】:Child object not following default camera in SceneKit子对象不跟随 SceneKit 中的默认相机
【发布时间】:2021-12-08 02:17:27
【问题描述】:

在一个项目中,我已将SCNPlane 附加到默认摄像头,因为allowsCameraControl 设置为true,如下所示:

scnView.pointOfView?.addChildNode(plane)

然后将平面放置在默认相机的正前方:

plane.position = SCNVector3(x: 0, y: 0, z: -5)

不过,当我调试场景时,它最初会在正确的位置显示飞机。但是,当通过用户触摸输入更改默认相机位置时,平面不会停留在相机前方,而是停留在初始位置。

有谁知道是什么导致了这里的误解?

【问题讨论】:

  • 如果我没记错的话,只要通过手势移动相机,就会创建一个内部相机对象并用于执行移动,因此您的对象不会被移动,因为它会保持原始状态相机。这是由于这个特殊的 allowCameraControl 属性。尝试禁用此属性(设置为 false)并交替移动相机。 (在 github 上,您可以找到有关使用手势移动/旋转对象的示例,这些示例不会在 allowCameraControl 上中继 - i.Ex:github.com/gadsden/SceneKit-Quaternion-Rotations
  • 感谢您的回答。我知道这一点,并明确希望使用通过allowCameraControl创建的默认相机,因为它非常好。我认为将一个物体附加到该相机上会以相同的方式工作,但显然它没有。

标签: swift camera scenekit


【解决方案1】:

当时的问题是

scnView.pointOfView?.addChild(plane)

执行后,场景的实际 POV 仍然是旧相机,而不是 allowsCameraControl 生成的相机。一旦用户进行第一次触摸输入,poV 就会切换到生成的。

【讨论】:

    猜你喜欢
    • 2017-08-28
    • 2016-02-24
    • 2017-09-12
    • 2017-01-29
    • 2018-01-08
    • 2017-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    相关资源
    最近更新 更多