3DCamera ???
От: Dronas  
Дата: 24.12.03 11:03
Оценка:
Люди, помогите плиз!
Нужна камера, с возможностью перемещения как авиа-смуляторах
Re: 3DCamera ???
От: Micker  
Дата: 24.12.03 11:49
Оценка:
Здравствуйте, Dronas, Вы писали:

D>Люди, помогите плиз!

D>Нужна камера, с возможностью перемещения как авиа-смуляторах

Не мог бы сформулировать свои нужды поконкретнее?
Что тебе такого нужно от камеры?
Жизнь, как игра —
идея паршивая,
графика обалденная...
Re[2]: 3DCamera ???
От: Dronas  
Дата: 24.12.03 15:11
Оценка:
Здравствуйте, Micker, Вы писали:

M>Здравствуйте, Dronas, Вы писали:


D>>Люди, помогите плиз!

D>>Нужна камера, с возможностью перемещения как авиа-смуляторах

M>Не мог бы сформулировать свои нужды поконкретнее?

M>Что тебе такого нужно от камеры?

DirectGraphics,
вперед, назад, влево, вправо — это все работает, авот когда крен добавляешь...
Re: 3DCamera ???
От: Patalog Россия  
Дата: 24.12.03 15:18
Оценка:
Здравствуйте, Dronas, Вы писали:

[]

Копай в сторону кватернионов.
Почетный кавалер ордена Совка.
Re[2]: 3DCamera ???
От: mksa Россия  
Дата: 24.12.03 18:26
Оценка:
Здравствуйте, Patalog, Вы писали:

P>Здравствуйте, Dronas, Вы писали:


P>[]


P>Копай в сторону кватернионов.

У Nehe в туториалах была подобная камера. С кватернионами.
Re[3]: 3DCamera ???
От: Dronas  
Дата: 25.12.03 05:39
Оценка:
Здравствуйте, mksa, Вы писали:

M>Здравствуйте, Patalog, Вы писали:


P>>Здравствуйте, Dronas, Вы писали:


P>>[]


P>>Копай в сторону кватернионов.

M>У Nehe в туториалах была подобная камера. С кватернионами.

Так, посмотрю...
Re: 3DCamera ???
От: DrMom  
Дата: 04.01.04 03:43
Оценка:
Здравствуйте, 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);        
                }
...        
    };



CPoint3D OpenGLTransform::TransformPoint(CPoint3D &pnt)
{
    double *matr    =    m_pViewMatrix;
    CPoint3D rez;
    rez.m_X    =    matr[0]*pnt.m_X + matr[4]*pnt.m_Y + matr[8]*pnt.m_Z + matr[12];
    rez.m_Y    =    matr[1]*pnt.m_X + matr[5]*pnt.m_Y + matr[9]*pnt.m_Z + matr[13];
    rez.m_Z    =    matr[2]*pnt.m_X + matr[6]*pnt.m_Y + matr[10]*pnt.m_Z + matr[14];
    return rez;
}
CVector3D OpenGLTransform::TransformVector(CVector3D &vec)
{
    double *matr    =    m_pViewMatrix;
    CVector3D rez;
    rez.m_X    =    matr[0]*vec.m_X + matr[4]*vec.m_Y + matr[8]*vec.m_Z;
    rez.m_Y    =    matr[1]*vec.m_X + matr[5]*vec.m_Y + matr[9]*vec.m_Z;
    rez.m_Z    =    matr[2]*vec.m_X + matr[6]*vec.m_Y + matr[10]*vec.m_Z;
    return rez;
}


Сократил как мог. Это пример для OGL. Следовательно если тебе нужен крен, то ты просто создаешь соответствующее преобразование и используешь его для преобразования трех векторов. Все просто. Я бы может пример нормальный дал, но к сожалению моя библиотека слишком манструозна для нормального объяснения, а расковыривать ее лень.

ЗЫ Для DirectX или например VTK все так жн просто.
Re[2]: 3DCamera ???
От: DrMom  
Дата: 04.01.04 03:50
Оценка:
Здравствуйте, DrMom, Вы писали:

DM>Здравствуйте, Dronas, Вы писали:


D>>Люди, помогите плиз!

D>>Нужна камера, с возможностью перемещения как авиа-смуляторах

Кстати забыл сказать, что в DX создание преобразования типа крен тангаж и рыскание делается вобще специальными ф-ми. Тебе только надо их вызвать, а результат применить к векторам и установить камеру в новое положение.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.