Переместить объект в направлении кривой Безье?

У меня есть объект, с помощью которого я хотел бы сделать так, чтобы он следовал кривой Безье, и сейчас я немного не понимаю, как это сделать, основываясь на времени, а не на точках, составляющих кривая.

. :: Каждый объект в моем графике сцены состоит из векторов положения, вращения и масштаба. Эти векторы используются для формирования соответствующих им матриц: масштаб, поворот и перенос. Которые затем умножаются в указанном порядке для формирования матрицы локального преобразования. Затем мировое преобразование (обычно единичная матрица) умножается на преобразование локальной матрицы.

class CObject
{
public:
 // Local transform functions
 Matrix4f GetLocalTransform() const;
 void SetPosition(const Vector3f& pos);
 void SetRotation(const Vector3f& rot);
 void SetScale(const Vector3f& scale);

    // Local transform
    Matrix4f m_local; 
    Vector3f m_localPostion;
    Vector3f m_localRotation; // rotation in degrees (xrot, yrot, zrot)
    Vector3f m_localScale;
}

Matrix4f CObject::GetLocalTransform()
{
    Matrix4f out(Matrix4f::IDENTITY);

    Matrix4f scale(), rotation(), translation();

    scale.SetScale(m_localScale);
    rotation.SetRotationDegrees(m_localRotation);
    translation.SetTranslation(m_localTranslation);

    out = scale * rotation * translation;
}

У меня есть большой вопрос:

1) Как мне сориентировать мой объект так, чтобы он смотрел на касательную кривой Безье?

2) Как мне перемещать этот объект по кривой, не просто устанавливая положение объектов в положение точки на кюве Безье?

Вот обзор функции на данный момент

void CNodeControllerPieceWise::AnimateNode(CObject* pSpatial, double deltaTime)
{
    // Get object latest pos.
    Vector3f posDelta = pSpatial->GetWorldTransform().GetTranslation();

    // Get postion on curve
    Vector3f pos = curve.GetPosition(m_t);

    // Get tangent of curve
    Vector3f tangent = curve.GetFirstDerivative(m_t);

}

Редактировать: извините, это не очень ясно . Я работал над этим целую вечность, и от этого мой мозг превратился в кашу.

Я хочу, чтобы объект был прикреплен к кривой и смотрел в направлении кривой.

Что касается движения, я хочу возразить чтобы следовать кривой в зависимости от времени, таким образом создается плавное движение по кривой.

5
задан Sent1nel 15 January 2011 в 22:30
поделиться