|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.01.2011, 11:53 | #1 |
Пользователь
Регистрация: 03.11.2010
Сообщений: 68
|
WASD + мышка. DirectX + Delphi.
Здравствуйте!
Если у кого есть, поделитесь пожалуйста примером реализации перемещения камеры в трёхмерном пространстве "WASD + мышка", ну как в FPS Пока разбираюсь с матрицами но мало что выходит Использую DirectX9 + Delphi 2007 Спасибо зы: прикрепляю example с простым выводом куба, я его использую как основу для опытов. |
24.01.2011, 15:14 | #2 |
Пользователь
Регистрация: 09.01.2011
Сообщений: 16
|
На DirectX не знаю, а на OpenGL вот:
Код:
|
24.01.2011, 15:14 | #3 |
Пользователь
Регистрация: 09.01.2011
Сообщений: 16
|
Обработка клавиш
Код:
Код:
Последний раз редактировалось k3rn3l; 24.01.2011 в 15:25. |
29.01.2011, 04:20 | #4 |
Регистрация: 19.01.2011
Сообщений: 3
|
Ку
У вас всё есть в методе TMainForm.SetupCamera :
FD3DDevice.SetTransform(D3DTS_VIEW, ViewMatrix); вот этот метод задает направление взгляда камеры, это видовая матрица. задавайте изменение видовой матрицы в каждом кадре а не только в начале как настройка сцены, в метод TMainForm.RenderScene например сразу после метода FD3DDevice.SetTransform(D3DTS_WORLD , WorldMatrix); мировая матрица у вас в каждом кадре задается, а видовая нет. изменяя ViewMatrix вы можете вертеть камерой вокруг сцены меняя вектор Eye в вашем примере : // Вектор, определяющий положение глаз наблюдателя Eye.x := 0; Eye.y := 0; Eye.z := -5; // Строим левостороннюю матрицу вида D3DXMatrixLookAtLH(ViewMatrix, Eye, At, Up); данный "глаз" Eye.x := 0; Eye.y := 0; Eye.z := -5; говорит, что камера смотрит из точки (0,0,-5) в точку (0,0,0) т.к. At.x := 0; At.y := 0; At.z := 0; меняйте Eye и At в зависимости от мыши и/или клавиатуры и задавайте видовую матрицу в кадре, вроде всё. матричные операции для кручения верчения объектами, это отдельная песня, объект может выть например составным, части которого движутся относительно друг друга, например модель поршня-шатуна-коленчатого вала, тут даже поступательное движения переходит во вращательное. у меня нет тех модулей или не все, что указаны в строке uses , но кажется у вас задано вращение вокруг Глобальных осей X, Y, Z объекты же всё норовят вращаться как бы сами по себе, вокруг собственных осей координат а не вокруг глобальных... в любом случае задача нетривиальная. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Delphi 7(10), windows 7 и DirectX | ImmortalAlexSan | Общие вопросы Delphi | 7 | 05.09.2010 20:44 |
Delphi&DirectX | insolent | Общие вопросы Delphi | 9 | 29.07.2010 11:28 |
Книга DirectX и Delphi.... | Jupiter | Свободное общение | 8 | 22.08.2009 19:26 |
picking directX(Delphi) | Mell12345678 | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 0 | 04.06.2009 10:31 |
New Project: DirectX and Delphi | Kostia | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 12 | 04.05.2008 04:27 |