Главная страница
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.03 c
14-1117554968
Новичоккк
2005-05-31 19:56
2005.06.29
Простой вопрос по ASM


1-1118216188
Чапаев
2005-06-08 11:36
2005.06.29
Action Manager &amp; Access Violation


14-1117535388
Digitman
2005-05-31 14:29
2005.06.29
Потолкуем о Lazarus ?...


1-1117624739
towik
2005-06-01 15:18
2005.06.29
Как можно вывести тип Множество на форму?


1-1117867566
seregka
2005-06-04 10:46
2005.06.29
как очистить буфер обмена