Форум: "Игры";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
ВнизПроблемы с камерой Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.051 c