Конференция "Игры" » Проблеммы с D3DXMatrixLookAtLH [Delphi, Windows]
 
  • Taur (24.03.09 18:47) [0]
    Хотелось сделать, чтобы пользователь мог перемещать и поворачивать камеру, однако что-то сделал не так, и камера ведет себя совсем не так как надо. Если двигается более менее нормально (хотя тоже не так как должна), то с поворотами совсем все плохо: камера просто трясется и никак не реагирует на движение мыши. Может кто-нибудь сказать, что я делаю не так или если все не так, каким образом можно добиться вращения и перемещения камеры?
    Заранее спасибо.

    procedure CursorMove;
    var
     p: TPoint;
    begin
     GetCursorPos(p);
     xAngle:=xAngle+(p.x-(ScrX div 2));
     yAngle:=yAngle+(p.y-(ScrY div 2));
     SetCursorPos((ScrX div 2),(ScrY div 2));
    end;
    ................................................................................ ........
    {процедура перерисовки сцены}
    vUpVec:=D3DXVECTOR3(0.0, 1.0, 0.0);
    {xa,za меняются в обработчике событий нажатия клавиш клавиатуры увеличением или уменьшением на 1}
    vEyePt.x := xa;                                
    vEyePt.z := za;
    vEyePt.y := ya;
    CursorMove;
    vLookatPt.x := sin(xAngle)*Sin(yAngle);
    vLookatPt.z := cos(xAngle)*sin(yAngle);
    vLookatPt.y := cos(yAngle);
    D3DXMatrixLookAtLH(View, vEyePt, vLookatPt, vUpVec);
    pD3DDevice.SetTransform(D3DTS_VIEW, View);

  • @!!ex © (25.03.09 10:45) [1]

    > каким образом можно добиться вращения и перемещения камеры?

    Используя стандартные матричные операции игнорируя D3DXMatrixLookAtLH
  • Старик (25.03.09 18:08) [2]
    Правильно тебе сказали. Напиши юнит со своими векторными и матричными операциями (математику учил ведь в школе?), и юзай его, это самый простой и безболезненный выход.
  • фваф (25.08.16 19:19) [3]
    ваыаываываываывыаывавававыавыаыв айцукацау
  • фваф (25.08.16 19:19) [4]
    ваыаываываываывыаывавававыавыаыв айцукацау
 
Конференция "Игры" » Проблеммы с D3DXMatrixLookAtLH [Delphi, Windows]
Есть новые Нет новых   [118452   +47][b:0][p:0.002]