ria pc game
fle game engine - движок для создания игр
fle game engine - движок для создания игр


Balls and holes PC game / Balls and Holes PC игра
Вакансии
Игродельня
Сегодня
22 мая 2018
18:58
Вход Регистрация Забыли пароль ?

Краеугольная особенность работы Web-form на примере смены состояния checkbox
        Другие уроки можно посмотреть в разделе Статьи  
подробнее...

Теги

создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт

Статьи сайта

megainformatic - Создание сайта для бизнеса

megainformatic - Новый взгляд на очевидные вещи

megainformatic - Разработка программ на c++

megainformatic - Немного о музыке

megainformatic - GET и POST запросы

megainformatic - для чего нужна карта сайта

megainformatic - Web Администрирование

megainformatic - Мысли о разном

megainformatic - Легко ли быть программистом

megainformatic - Глубины программирования на C++

megainformatic - Убираем лимит на размер импортируемого файла в PhpMyAdmin

megainformatic - Как создать torrent файл

megainformatic - Нужна ли валидация вашему сайту ?

megainformatic - Антивирус DrWeb

megainformatic - Калькулятор рассчёта стоимости зубопротезирования для стоматологической клиники

megainformatic - Что такое BitTorrent (БитТоррент)

megainformatic - Миссис Даутфайр 1993 фильм torrent

megainformatic - Как скачивать торрент-раздачу ?

megainformatic - Автотелега фильтр

megainformatic - Фильмы

megainformatic - Fahrengeit Фаренгейт игра 2006 для PC

megainformatic - Fez игра для PC 2013

megainformatic - Дневник памяти - фильм 2004

megainformatic - Scooter - The night - Video and Lyrics - Скутер - Ночь - Видео и лирика

megainformatic - Если всё же неудача

megainformatic - Смерть или искупление или избавление

megainformatic - По ту сторону

cj megainformatic - музыкальный альбом БЕСКОНЕЧНОЕ ДВИЖЕНИЕ ОЖИДАНИЕ И ДЕЙСТВИЕ

megainformatic - Костя Коробкин - Секретный проект - интерактивный комикс

megainformatic - Основы анимации во флеш на примере анимирования простейшей окружности

megainformatic - Парсер сайтов Введение

megainformatic - Я пишу музыку для себя и для продажи

megainformatic - Статьи на околомузыкальные темы - осень 2014 часть 1

megainformatic - рассказ - Чужие воспоминания - автор Синицин Андрей - 24.09.2014

megainformatic - Сайты живущие вне поисковых систем. Есть ли такие и как их найти ?

megainformatic - Game craft - проект разработки игровых и мультимедийных проектов

megainformatic - Game craft - моделируем scv

megainformatic - Game craft - моделируем scv - шаг 1 (часть 2)

megainformatic - Game craft - моделируем scv - шаг 2 (часть 3)

megainformatic - Game craft - Наложение текстуры на модель робота scv (часть 4)

megainformatic - Game craft - Прорисовка текстуры робота SCV шаг 5

megainformatic - Game craft - Экспорт модели из 3ds max в формат X

megainformatic - Game craft - отображение scv модели в формате x в d3d9-приложении

megainformatic - Game craft - управление игрой от Direct Input в d3d9 - приложении

megainformatic - Game craft - игровая камера в d3d9 - приложении

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 1

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 2

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 3

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 4

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 5

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 6

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 7

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс (kk hny) - онлайн комикс - страница 1

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс (kk hny) - онлайн комикс - страница 2

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс (kk hny) - онлайн комикс - страница 3

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс (kk hny) - онлайн комикс - страница 4

     
  [статьи] [как создать игру ну, погоди!] [к содержанию]  
     
 
Основы Вращений и Управления камерой
 

Предисловие

Данный цикл статей призван помочь тем, кто решил заняться освоением DirectX. Примеры даны применительно к Delphi 6-7. В данной статье рассматривается пример 3D-приложения содержащий замкнутое пространство, движущуюся модель субмарины и возможность управления обзором из камеры.

Особенности примера: используется чистое WinAPI-приложение (без использования VCL). К исходному коду прилагаются все необходимые файлы - *.pas и *.dll необходимые для полноценной работы с DirectX8.1 на Delphi 6-7.
 
Примечание: для лучшего понимания данного примера Вам нужно познакомиться с понятием кватерниона.
 
Некоторые теоретические сведения о векторной математике смотри здесь.
 

Камера

Камера описана следующим образом:

TD3DCamera = class(TObject)
private
FPosX, FPosY, FPosZ: Single; // положение камеры
FOrient: TD3DXQuaternion; // ориентация
FAxisAngles: TD3DXVector3; // углы вращений по основным осям


...
public
constructor Create;
end;

пример приложения submarine (DirectX на Delphi)

исходный код примера (29 Кб)

Скачиваний : 0

общий код - необходим для компиляции и исполнения данного примера и других DirectX-приложений (которые Вы еще напишете) под Delphi 6-7.

Скачиваний : 15

медиа-файлы (676 Кб)

Скачиваний : 0
 

Управление камерой

Управление камерой осуществляется от клавиатуры. Для опроса состояния клавиатуры используется интерфейс DirectInput8 и утилита из модуля DX8_DIUtil8 (см. исходный код примера).

Скачиваний : 0
Клавиши управления - стрелки - перемещение камеры в пространстве; [Del]/[Page Dn] - вращение вокруг оси Y; [Home]/[End] - вращение вокруг оси X; [Ins]/[Page Up] - вращение вокруг оси Z.

 

Реализация опроса клавиатуры находится в методе GameActions; Этот метод периодически вызывается в методе FrameMove.

 

Сам процесс перемещения и поворота камеры реализован в ряде методов:

procedure CameraMoveLR(Direction: Integer);
procedure CameraMoveFB(Direction: Integer);
procedure CameraRotate(Direction: Integer; Axis: TRotationAxis);

 

Вращение реализовано следующим образом:

procedure CSubmarineD3DApp.CameraRotate(Direction: Integer; Axis: TRotationAxis);
var
CurrentRotation: Single;


begin

// определяем текущую ориентацию - углы вращений по осям

case Axis of
raX: CurrentRotation := D3DCam.FAxisAngles.x;

raY: CurrentRotation := D3DCam.FAxisAngles.y;
raZ: CurrentRotation := D3DCam.FAxisAngles.z;
else
CurrentRotation := 0;
end;

// ограничиваем вращение диапазоном -90..90 градусов (-pi/2..pi/2 радиан)

if (Direction = 1) and (CurrentRotation < D3DX_PI*0.499) then
CurrentRotation := CurrentRotation + Direction*CameraRotationSpeed;
if (Direction = -1) and (CurrentRotation > -D3DX_PI*0.499 ) then
CurrentRotation := CurrentRotation + Direction*CameraRotationSpeed;

// запоминаем новый угол

case Axis of
raX: begin
D3DCam.FAxisAngles.x := CurrentRotation;
end;
raY: begin
D3DCam.FAxisAngles.y := CurrentRotation;
end;
raZ: begin
D3DCam.FAxisAngles.z := CurrentRotation;
end;
end;

// формируем кватернион вращения - из 3 вращений: рысканье (yaw), тангаж (pitch), крен (roll)

D3DXQuaternionRotationYawPitchRoll(D3DCam.FOrient, D3DCam.FAxisAngles.y,
D3DCam.FAxisAngles.x, D3DCam.FAxisAngles.z);

// временная переменная для вывода значений на экран (с целью отладки)
D3DCam.FTempOrient := D3DCam.FOrient;
end;

 

В методе FrameMove следующие строчки кода преобразуют кватернион ориентации камеры (D3DCam.FOrient) в матрицу вращения, положение камеры задается матрицей смещения (matTrans) по текущим координатам камеры.

D3DXMatrixRotationQuaternion(matCursor, D3DCam.FOrient);

D3DXMatrixIdentity(m_matView);
D3DXMatrixMultiply(m_matView, m_matView, matCursor);

D3DXMatrixTranslation(matTrans, D3DCam.FPosX, D3DCam.FPosY,
D3DCam.FPosZ);

D3DXMatrixMultiply(m_matView, m_matView, matTrans);

 
Важные замечания - смотри здесь.
 
исходный код примера и общий код можно скачать здесь:
Скачиваний : 0
(29 Кб)
Скачиваний : 15
(585 Kb)
     
необходимые медиа-файлы:
Скачиваний : 0
(676 Кб)
 
 
     
     
     
     
     
     
  [статьи] [как создать игру ну, погоди!] [к содержанию]  
     
megainformatic live chat Чтобы писать сообщения в чат авторизуйтесь
X
 

Оставленные комментарии



fle game engine - движок для создания игр
fle game engine - движок для создания игр


Something: Unexplained 2 captive of desires / Нечто: Необъяснимое 2 в плену желаний
Костя Коробкин Комикс Коллекционное издание - 6 комиксов, 81 страница, 220 mp3 треков
megainformatic Размещение баннерной рекламы у нас
















    
Время загрузки: 1,1155