THREE.js:制作蒙皮网格遵循样条线

时间:2015-05-21 15:46:38

标签: javascript math three.js

我有一个蛇皮网,从搅拌机中输出。 蛇有骨头(像脊椎),我想沿曲线动画(SplineCurve3)

我可以计算样条曲线上的点,以及这些点之间的角度,但我正在努力正确设置骨骼的旋转。

问题是每个骨骼都是前一个骨骼的一个子骨骼,因此旋转骨骼也会旋转其他骨骼。

这是一张图片:

problem

外形是蛇。

粉色线是SplineCurve3的一部分。

蓝色/绿色线条是骨骼(THREE.SkeletonHelper)。

使用SplineCurve3.getTangentAt旋转每个骨骼。因为父母也是旋转的,所以蛇会卷起来。我基本上需要将骨头放在粉色线的位置。

我该怎样补偿'用于在计算骨骼的旋转时旋转父项?

此外,在图像中路径是平坦的,但我的目标是将蛇移动到3维。它是一条飞蛇。

1 个答案:

答案 0 :(得分:0)

你能澄清哪个旋转是哪个(可能画一些角度并标记它们以供参考)?

如果整条蛇与轴成一定角度,则只需从骨骼角度减去该角度。

然而,骨骼角度是相对于父骨骼定义的,而不是相对于轴线的绝对角度?如果您使用x轴作为相对角度的绝对角度,则会产生您看到的越来越多的旋转骨骼的行为。

假设骨骼角度应相对于父骨骼给出,那么您需要:

childRelativeAngle = childAbsoluteAngle - parentAbsoluteAngle