(X,Y,Z)坐标运动

时间:2013-01-22 16:20:08

标签: 3d

我创建了一个球体,球体内部(细胞)是位于球体一端的另一个较小的球体(核),另一端是球体的微管结构。

微管具有中心点,然后有从细胞核的边缘延伸到细胞边缘的细线。

我有点(病毒)在整个细胞中移动。一旦病毒进入微管结构(假设它从细胞边缘附着到结构),它必须朝着微管的中心移动,并最终沿着细胞管向细胞核移动。

我已经弄清楚如何确定病毒是否在微管结构上,但是我无法弄清楚如何将它移到线上。我使用象限系统在二维空间中找到了它,但我无法在3D空间中做到这一点。

我的问题是:一旦病毒进入微管,我如何更新坐标以将其移向中心然后朝向细胞核?

谢谢

2 个答案:

答案 0 :(得分:0)

所以你的问题归结为“如何在3D中将对象从一个点移动到另一个点(多帧)?”

答案完全取决于你如何实现对象移动。但基本概念是:

  1. 从“到”点的位置减去“从”点的位置。结果是一个向量,指向您希望对象移动的方向。
  2. 更改此向量的大小(不改变其方向),以便此向量可以作为对象的Velocity向量。
  3. 现在您拥有了对象的起始位置和速度,可以随时间移动它,直到您到达目标点。

答案 1 :(得分:0)

您的问题是在两点A和B之间平滑插值对象O.您可以使用线性插值,三次样条插值等。

线性插值 让我们说:

  • O位于框架Fa处的位置A;
  • O位于帧Fb的位置B;

然后对于Fa和Fb之间的Fc,您可以将C计算为:

C = A +(B-A)(Fc-Fa)/(Fb-Fa)

基本上,您考虑从A点开始添加到目前为止执行的翻译。直到现在执行的翻译是执行的总翻译(B-A)由标准化的帧数(因此在0和1之间)加权,因为插值开始如此(Fc-Fa)/(Fb-Fa)

如果Fc = Fa(所以我们还没有开始插值),那么C = A; 如果Fc = Fb(所以我们应该到达最终位置),那么C = B;

这种插​​值将产生线性轨迹。但是,速度是恒定的。这意味着O将以完全相同的速度开始,行进和结束。在动画中,这很少给出好的结果。其他技术使用三次插值,Kochanek-Bartels样条等。这些插值技术实现起来要复杂得多,但可以更好地控制点的行进速度。