我有一个蛇皮网,从搅拌机中输出。 蛇有骨头(像脊椎),我想沿曲线动画(SplineCurve3)
我可以计算样条曲线上的点,以及这些点之间的角度,但我正在努力正确设置骨骼的旋转。
问题是每个骨骼都是前一个骨骼的一个子骨骼,因此旋转骨骼也会旋转其他骨骼。
这是一张图片:
外形是蛇。
粉色线是SplineCurve3的一部分。
蓝色/绿色线条是骨骼(THREE.SkeletonHelper)。
使用SplineCurve3.getTangentAt旋转每个骨骼。因为父母也是旋转的,所以蛇会卷起来。我基本上需要将骨头放在粉色线的位置。
我该怎样补偿'用于在计算骨骼的旋转时旋转父项?
此外,在图像中路径是平坦的,但我的目标是将蛇移动到3维。它是一条飞蛇。
答案 0 :(得分:0)
你能澄清哪个旋转是哪个(可能画一些角度并标记它们以供参考)?
如果整条蛇与轴成一定角度,则只需从骨骼角度减去该角度。
然而,骨骼角度是相对于父骨骼定义的,而不是相对于轴线的绝对角度?如果您使用x轴作为相对角度的绝对角度,则会产生您看到的越来越多的旋转骨骼的行为。
假设骨骼角度应相对于父骨骼给出,那么您需要:
childRelativeAngle = childAbsoluteAngle - parentAbsoluteAngle