遵循3D螺旋路径

时间:2014-03-06 20:49:35

标签: spiral helix

我想制作一个滚动圆锥螺旋路径的球的逼真3D演示。可以找到帮助我接近解决方案的参考here。 [我正在使用Stage3D在Actionscript 3中创建我的解决方案,但很乐意使用其他语言提供任何建议的编码解决方案,使用其他您可能更熟悉的3D框架。]

当我输入我的帖子标题时,系统向我指出了大量“可能已经有你答案的问题”,这很有帮助,我确实检查了每一个。在不想劫持现有主题的情况下,我应该说this one包含了大量关于一般主题的非常有用的评论,但没有解决我无法解决的具体挑战。

使用引用的参考资料,我很满意这段代码片段,它跟踪了我希望球跟随的路径。 [ N.B。 我的参考资料和大多数其他基于数学的参考资料都将Z视为上下;然而,我的用法是上下Y的更常见的3D图形。]

此代码针对每个帧执行。

ft += 0.01; // Where ft is a global Number.
var n:Number = Math.pow (0.5, (0.15 * ft));
// Where s is a constant used to scale the overall path.
obj.moveTo (
    (s * n * Math.cos (2.0 * ft)),
    (s * n),
    (s * n * Math.sin (2.0 * ft))
    );

球跟随一条漂亮的路径,由于灯光和其他着色器代码,在场景中可以看到非常不错的效果。

我当前实施的不好之处在于,当球从一点移动到另一点时,球似乎没有沿着该路径滚动。我没有使用任何物理引擎,并且我没有寻求任何解决碰撞的解决方案,但我希望球能够正确地展示如果运动是由于球在赛道上滚动而将会发生什么。

所以,为了让挑战更加明确,让我们说球是一个带有#15条纹和标签的台球。在这种情况下,视觉结果应该是数字15应该转过来治疗,但是,正如你可能从我的 obj.moveTo()函数的名称推测出来的那样, 3D对象位置的变化,而不是其方向。

最后,这让我想到了具体的问题/要求。我一直无法发现哪些旋转变化必须与每个位置变化同步,以便正确地说明如果台球从第2点沿着路径从点1滚动,它将如何出现。

部分解决方案似乎是:

obj.setRotation ((Math.atan2 (Math.sin (ft), Math.cos (ft))), Vector3D.Y_AXIS);

但这仍然不正确。我希望有一些众所周知的公式可以添加到我的渲染代码中。

0 个答案:

没有答案
相关问题