Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

Проблемы с камерой   Найти похожие ветки 

 
Xeno ©   (2005-03-19 15:58) [0]

Кто нибудь знает почему в демке "actortwocam" когда включен вид от первого лица,если сильно резко повращать мышкой в разные стороны актёр начинает заваливаться в бок?? Причём если мышь не трогать или сильно не дёргать то все нормально. Пробовал на разных машинах, подобный эффект присутствует везде. Кто нибудь знает как это лечиться?


 
DeadMeat ©   (2005-03-19 18:47) [1]

Это все Navigator и иже с ним...
У него есть папра минусов, если плохо настроить...
Вот этот и он начинает не плавно двигать когда фпс ниже 60.
Поэтому я делал свое управление мышью.

---
...Death Is Only The Begining...


 
mr_Coder ©   (2005-03-19 23:13) [2]

Для Navigator"а поставь
UseVirtualUp=True;
VirtualUp=Y


 
Xeno ©   (2005-03-20 15:51) [3]

Если кому интересно проблемму решил так:
 xangle:=mouse.CursorPos.X-screen.Width/2;
 yangle:=mouse.CursorPos.Y-screen.Height/2;
 setcursorpos(screen.width div 2,screen.Height div 2);
GlCamera1.MoveAroundTarget(-yangle*40*deltaTime,0);
Player.TurnHorizontal(xangle*40*deltaTime);
где Player - TGLDummyCube,GlCamera1 - камера смотрящая на Player"а, проблема у Navigator1"а похоже в определении координат по оси У,хотя могу и ошибаться....


 
Xeno ©   (2005-03-22 06:09) [4]

Нашёл ещё одно решение,заключается в ручной обработке поворота объекта с камерой, вроде как полностью решает данную проблемму:

procedure TForm1.MouseView();
var
  mpos:Tpoint;
begin
    GetCursorPos(mpos);
    SetCursorPos(SceneW, SceneH);
    Player.TurnAngle:=Player.TurnAngle-((mpos.x-SceneW)*0.1);
    if ((Player.PitchAngle-(mpos.y-SceneH)*0.1) < 90)   //Makes sure that you can"t
    and ((Player.PitchAngle-(mpos.y-SceneH)*0.1) > -90) then //pitch your head too much.
         Player.PitchAngle:=Player.PitchAngle-(mpos.y-SceneH)*0.1;
    Player.Up.X:=-sin(Player.PitchAngle*pi/180)*sin(Player.TurnAngle*pi/180);
    Player.Up.Y:=cos(Player.PitchAngle*pi/180);
    Player.Up.Z:=-sin(Player.PitchAngle*pi/180)*cos(Player.TurnAngle*pi/180);
end;

procedure TForm1.Realign();
begin
    Player.Direction.Z:=cos(Player.TurnAngle*pi/180);
    Player.Direction.X:=sin(Player.TurnAngle*pi/180);
    Player.Direction.Y:=sin(Player.PitchAngle*pi/180);
end;


 
Xeno ©   (2005-03-22 06:11) [5]

Жаль никто сразу не подсказал,много времени потерял на поиск алгоритма...


 
DeadMeat ©   (2005-03-22 21:07) [6]

Ты думаешь это плохо? То, что ты сам его нашел..

---
...Death Is Only The Begining...


 
Xeno ©   (2005-03-23 07:05) [7]

Может и нет :-))



Страницы: 1 вся ветка

Текущий архив: 2005.06.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.033 c
14-1117174949
panov
2005-05-27 10:22
2005.06.29
Приношу извинения за беспредел автомодератора.


14-1117675849
Dyakon_Frost
2005-06-02 05:30
2005.06.29
Геометрия на плоскости


14-1117491469
KilkennyCat
2005-05-31 02:17
2005.06.29
Если кому нужна работа в Петербурге


1-1118260453
Gopher
2005-06-08 23:54
2005.06.29
Синтаксис


1-1118081903
Серёга
2005-06-06 22:18
2005.06.29
Ошибка EOleSysError