Здравствуйте, Micker, Вы писали:
M>Здравствуйте, Dronas, Вы писали:
D>>Люди, помогите плиз! D>>Нужна камера, с возможностью перемещения как авиа-смуляторах
M>Не мог бы сформулировать свои нужды поконкретнее? M>Что тебе такого нужно от камеры?
DirectGraphics,
вперед, назад, влево, вправо — это все работает, авот когда крен добавляешь...
Здравствуйте, Patalog, Вы писали:
P>Здравствуйте, Dronas, Вы писали:
P>[]
P>Копай в сторону кватернионов.
У Nehe в туториалах была подобная камера. С кватернионами.
Здравствуйте, mksa, Вы писали:
M>Здравствуйте, Patalog, Вы писали:
P>>Здравствуйте, Dronas, Вы писали:
P>>[]
P>>Копай в сторону кватернионов. M>У Nehe в туториалах была подобная камера. С кватернионами.
Здравствуйте, Dronas, Вы писали:
D>Люди, помогите плиз! D>Нужна камера, с возможностью перемещения как авиа-смуляторах
А чего тут сложного не понимаю. Для камеры существенны 3 вектора: глаз, направление и верх.
Вот пример кода:
template<class Driver, class TransformDriver>
class CCamera : public CObject3D<TransformDriver>, public Driver, virtual public ICamera
{
protected:
CVector3D m_eye;
CVector3D m_center;
CVector3D m_up;
...
virtual void UpdateCamera()
{
// Все это не существенно, а важно, что transform это по сути дела матрица преобразования
CVector3D eye, center, up;
Transform transform;
LoadParentTransform();
AddOwnTransform();
transform.SaveCurrentTransform();
eye = transform.TransformPoint(m_eye);
center = transform.TransformPoint(m_center);
up = transform.TransformVector(m_up);
// Банальная установка положения камеры
SetLookAt(eye, center, up);
}
...
};
Сократил как мог. Это пример для OGL. Следовательно если тебе нужен крен, то ты просто создаешь соответствующее преобразование и используешь его для преобразования трех векторов. Все просто. Я бы может пример нормальный дал, но к сожалению моя библиотека слишком манструозна для нормального объяснения, а расковыривать ее лень.
ЗЫ Для DirectX или например VTK все так жн просто.
Здравствуйте, DrMom, Вы писали:
DM>Здравствуйте, Dronas, Вы писали:
D>>Люди, помогите плиз! D>>Нужна камера, с возможностью перемещения как авиа-смуляторах
Кстати забыл сказать, что в DX создание преобразования типа крен тангаж и рыскание делается вобще специальными ф-ми. Тебе только надо их вызвать, а результат применить к векторам и установить камеру в новое положение.