Главная страница
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.037 c
1-1118127057
-=snoop=-
2005-06-07 10:50
2005.06.29
добавление объекта на форму через код....


1-1118157641
Vitalik
2005-06-07 19:20
2005.06.29
runtime пакеты


1-1118069208
Эдик Дятлов
2005-06-06 18:46
2005.06.29
Сохранить запись, содержащую динамический массив, в файл


1-1117968479
lifo
2005-06-05 14:47
2005.06.29
МЕТОДЫ РАСПОЗНАВАНИЯ ОБРАЗОВ


5-1087794979
Adis
2004-06-21 09:16
2005.06.29
Ресурс