У меня есть объект, с помощью которого я хотел бы сделать так, чтобы он следовал кривой Безье, и сейчас я немного растерялся относительно того, как заставить его делать это на основе времени, а не точек, составляющих кривую.
. :: Текущая система ::.Каждый объект в моем графе сцены состоит из векторов положения, поворота и масштаба.Эти векторы используются для формирования соответствующих им матриц: масштабирования, поворота и перемещения.Которые затем умножаются в этом порядке, чтобы сформировать матрицу локального преобразования.Мировое преобразование (обычно единичная матрица) затем умножается на локальное матричное преобразование.
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);
}
Редактировать: извините, это не очень ясно.Я работал над этим целую вечность, и это заставило мой мозг превратиться в кашу.
Я хочу, чтобы объект был прикреплен к кривой и был направлен в направлении кривой.
Что касаетсядвижение, я хочу, чтобы объект следовал кривой в зависимости от времени, таким образом это создает плавное движение по всей кривой.