Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Проблеммы с D3DXMatrixLookAtLH [Delphi, Windows]


Taur   (24.03.09 18:47

Хотелось сделать, чтобы пользователь мог перемещать и поворачивать камеру, однако что-то сделал не так, и камера ведет себя совсем не так как надо. Если двигается более менее нормально (хотя тоже не так как должна), то с поворотами совсем все плохо: камера просто трясется и никак не реагирует на движение мыши. Может кто-нибудь сказать, что я делаю не так или если все не так, каким образом можно добиться вращения и перемещения камеры?
Заранее спасибо.

procedure CursorMove;
var
 p: TPoint;
begin
 GetCursorPos(p);
 xAngle:=xAngle+(p.x-(ScrX div 2));
 yAngle:=yAngle+(p.y-(ScrY div 2));
 SetCursorPos((ScrX div 2),(ScrY div 2));
end;
................................................................................ ........
{процедура перерисовки сцены}
vUpVec:=D3DXVECTOR3(0.0, 1.0, 0.0);
{xa,za меняются в обработчике событий нажатия клавиш клавиатуры увеличением или уменьшением на 1}
vEyePt.x := xa;                                
vEyePt.z := za;
vEyePt.y := ya;
CursorMove;
vLookatPt.x := sin(xAngle)*Sin(yAngle);
vLookatPt.z := cos(xAngle)*sin(yAngle);
vLookatPt.y := cos(yAngle);
D3DXMatrixLookAtLH(View, vEyePt, vLookatPt, vUpVec);
pD3DDevice.SetTransform(D3DTS_VIEW, View);


@!!ex ©   (25.03.09 10:45[1]


> каким образом можно добиться вращения и перемещения камеры?

Используя стандартные матричные операции игнорируя D3DXMatrixLookAtLH


Старик   (25.03.09 18:08[2]

Правильно тебе сказали. Напиши юнит со своими векторными и матричными операциями (математику учил ведь в школе?), и юзай его, это самый простой и безболезненный выход.


фваф   (25.08.16 19:19[3]

Удалено модератором


фваф   (25.08.16 19:19[4]

Удалено модератором


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо