directx free camera

Тема в разделе "WASM.DirectX", создана пользователем dimonn, 30 июн 2010.

  1. dimonn

    dimonn New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2006
    Сообщения:
    38
    Адрес:
    Sim-City
    Нужна тулза для свободного управления камерой в выбраном directx приложении. Короче, чтобы можно было домножить текущую view matrix на мою. В принципе хватит только translate. Самому писать лень, не хочу время терять. Если есть что-то готовое, киньте ссылку.
     
  2. destrator

    destrator New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2010
    Сообщения:
    16
    http://www.gamedev.ru/code/forum/?id=131526
     
  3. destrator

    destrator New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2010
    Сообщения:
    16
    Сори, невнимательно прочитал вопрос :)
    Для свободной камеры в коде по ссылке http://www.gamedev.ru/code/forum/?id=131526#m2 исправить строки:
    Код (Text):
    1.     vMove += D3DXVECTOR3(mCameraRot._31, 0.0f, mCameraRot._33)*m_FBMove;
    2.     vMove += D3DXVECTOR3(mCameraRot._11, 0.0f, mCameraRot._13)*m_LRMove;
    на
    Код (Text):
    1.     vMove += D3DXVECTOR3(mCameraRot._31, mCameraRot._32, mCameraRot._33)*m_FBMove;
    2.     vMove += D3DXVECTOR3(mCameraRot._11, mCameraRot._12, mCameraRot._13)*m_LRMove;
    Для расчета матрицы вида:
    Код (Text):
    1. D3DXMATRIX mView; // Матрица вида
    2. D3DXVECTOR vPosition; // Текущая позиция
    3.  
    4. vPosition += vMove;
    5. D3DXVECTOR vAt = vPosition + D3DXVECTOR3(mCameraRot._13, mCameraRot._23, mCameraRot._33);
    6.  
    7. D3DXMatrixLookAtLH(&mView, &vPosition, &vAt, &D3DXVECTOR3(0.0, 1.0, 0.0));
     
  4. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    Для проги с шейдерами работать не будет.


    Только где fixed function pipeline заюзан. Если так, то перехватываем Draw* методы и перед вызовом вызываем свою

    g_pd3dDevice->SetTransform( D3DTRANSFORMSTATE_VIEW, pView );
    где pView - матрица вида . работает на играх дх от 7 до 9 (без шейдеров)

    Для игр с шейдерами (Все современные и не очень ;) ) нужно менять шейдеры/ данные передаваемые в шейдер