【问题标题】:Move an SCNNode and make it look at the same point it was looking at before moving移动一个 SCNNode 并使其与移动前的相同点
【发布时间】:2020-10-19 18:41:50
【问题描述】:

我创建了具有 SCNCylinder 几何形状的 SCNNodes 来表示点之间的线(即:SCNSphere)。 它确实工作得很好。

现在我要移动一个点,并且想将“链接”到该点的 2 条线移动。为简单起见,让我们只关注第一行。

移动一行:

  1. 我移动圆柱节点的中心并更新其长度。
  2. 我使用 simdLook 来改变它的方向。

lineNode.simdLook(at: targetPoint, up: shapeRootNode.WorldUp, localFront: lineNode.WorldUp)

线正确地移动到中心点,并且具有正确的长度,但每 2 次调用就会出现错误的方向。第一次调用后它是正确的。在第二次调用之后,它垂直于它应该具有的方向。在第三次调用之后它是正确的。等等……????

✅ 我验证了 targetPoint 是正确的,场景的 worldUp(在它的根节点上)是恒定的。所以这留下了线节点的worldUp ❌。

simdLook 的第 3 个参数是局部前端。由于 SCNCylinder 是垂直构建的,因此其本地 worldUp 是行方向。所以它应该工作?????

【问题讨论】:

    标签: scenekit


    【解决方案1】:

    好的,我找到了解决方法。

    在使用 Look 之前,我将 lineNode.Orientation 重置为 SCNQuaternion 的身份。

    所以问题是Look 错误地使用了节点当前的Orientation 属性来计算新的... Orientation 同一节点的属性!

    这很愚蠢。

    【讨论】:

      猜你喜欢
      • 2015-02-19
      • 2019-11-06
      • 2018-03-02
      • 2021-07-12
      • 2021-06-25
      • 1970-01-01
      • 2018-08-03
      • 1970-01-01
      • 2023-02-17
      相关资源
      最近更新 更多