Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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.041 c
4-1115369254
pavel_guzhanov
2005-05-06 12:47
2005.06.29
как определить размеры рисунка


11-1101068644
Shamansky
2004-11-21 23:24
2005.06.29
Как в Delphi открыть dwg или dxf файлы


1-1117620335
PhAn
2005-06-01 14:05
2005.06.29
Другой IntToStr


8-1110129381
anamal
2005-03-06 20:16
2005.06.29
AlphaBlend


4-1115450526
hwmaster
2005-05-07 11:22
2005.06.29
как проверить сколько свободного места осталось в оперативке ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский