使用SceneKit控制飞行车辆的运动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用SceneKit控制飞行车辆的运动相关的知识,希望对你有一定的参考价值。

我目前有一个场景,其中包含场景根部的中心节点,具有类似地球的几何形状和代表飞行器的节点。

但是我找不到控制车辆运动的正确方法。我需要能够在静止高度和速度的轨道上左右转动。

我尝试了许多动画和物理体力的组合都会导致不良结果。

我最接近的是:

  • 将车辆的枢轴属性设置为场景的中心
  • 然后设置如下的Action来控制前进 [_vehicleNode runAction:[SCNAction repeatActionForever:[SCNAction rotateByX:-1 y:0 z:0 duration:10.0]]];
  • 然后最后用力左右转动 [_vehicleNode.physicsBody applyTorque:SCNVector4Make(0, 1, 0, 1) impulse:YES];

但是,我似乎无法将枢轴和/或位置设置为正确的值以获得所需的结果。

编辑:看起来上面的方法将是我正在寻找的解决方案,但是出于某种原因,当我向车辆节点添加几何图形时,它在场景图中的位置会发生显着变化。当我添加硬编码按钮以将其位置更改为它所属的位置时,对于该单帧而言似乎是正确的,然后直接返回到不知道的中间。

编辑2:用原始球体替换所有几何体以进行测试后,节点现在按预期旋转,但现在不受物理力的影响,似乎忽略了它作为dynamicBody的声明。

答案

如果我理解你想要正确实现的目标,你可以试试这个:

  • 将第一个节点添加到场景中,位于(0,0,0)并使用SCNAction使其沿Y轴永远旋转
  • 将您的船舶节点添加为第一个节点的子节点。将它放在(X,0,0)处,使其围绕地球运行
  • 使用动作或动画沿X轴旋转船舶节点

以上是关于使用SceneKit控制飞行车辆的运动的主要内容,如果未能解决你的问题,请参考以下文章

飞机纵向飞行控制

使用 CAKeyframeAnimation 在 Scenekit 中为旋转节点设置动画

无人机视频图像运动目标检测算法综述------2019年-------------

基于串级 PID 控制算法的四旋翼无人机控制系统设计与实现

无人旋翼飞行器自适应飞行控制系统设计与仿真

卧槽!出了一个Python实时目标跟踪系统神器!