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


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

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 3
        Мастер-класс: Создание моде
подробнее...

Теги

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

Статьи сайта

Введение в программирование игр на С++ для платформы DirectX 9 - Меняем иконку приложения

Введение в программирование игр на С++ для платформы DirectX 9 Добавляем другую модель

Введение в программирование игр на С++ для платформы DirectX 9 Программирование игр в directx. Hello, World!

Введение в программирование игр на С++ для платформы DirectX 9 Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008

Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008 - Урок 1 Основные операторы языка C++

Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008 - Урок 1 Основные операторы языка C++ (часть 2)

Урок 2 Написание Win32-приложений. Обзор стартового кода Win32-приложения. Добавление ресурса текстовая строка

Урок 3 Создание Win32-приложений. Создание меню и простых диалоговых окон.

Урок 4 Создание Win32-приложений. Стандартные диалоги. Изучение сопутствующих конструкций языка. Консольные Win32-приложения. Указатели. Ссылочный тип. Массивы.

Урок 4 часть 2 Win32. Диалог выбора цвета, смена цвета фона окна приложения

Написание приложения DirectX9c + MFC в среде MSVS 2005

megainformatic - Создание компьютерных игр на основе DirectX в среде Delphi 6, 7

megainformatic - Создание компьютерных игр на основе DirectX в среде Delphi 6, 7 - Почему избраны DX8 и Delphi ?

megainformatic - Основы IDirectMusic8 в среде Delphi6-7

megainformatic - Основы DirectInput8 в среде Delphi 7

megainformatic - Основы DirectSound8 в среде Delphi6-7

megainformatic - Плагин для 3DS MAX из DX9 SDK

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2)

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 2

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 3

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 4

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 5

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 6

Система управления сайтом - megainformatic cms e-shop

Система управления сайтом - megainformatic cms e-shop

Система управления сайтом - megainformatic cms e-shop

megainformatic - Уроки 3ds max - Введение в 3ds max

megainformatic - ГАЛЕРЕЯ 3D-моделей

megainformatic - СОЗДАНИЕ МАКЕТА ПОМЕЩЕНИЯ

megainformatic - Создание макета помещения - этап 2

megainformatic - МОДЕЛИРОВАНИЕ НА УРОВНЕ МНОГОУГОЛЬНИКОВ

megainformatic - СОЗДАНИЕ ПРЕДМЕТОВ ОБСТАНОВКИ ПОМЕЩЕНИЯ

megainformatic - Моделирование обстановки помещения

megainformatic - Создание модели автомобиля

megainformatic - Создание текстурной развертки для модели автомобиля

megainformatic - Создание анимации вращающихся колес автомобиля

megainformatic - игра Нечто: Необъяснимое и в плену желаний

megainformatic - Основы 3D-анимации, экспорт скелетной анимации

megainformatic - Подготовка модели к использованию скелетной анимации

megainformatic - Продолжаем Создание скелета для данной модели

megainformatic - Построение ирерархических связей между объектами и основы 3d анимирования

megainformatic - Особенности экспорта моделей и анимации экспортером kWXPort080719 из 3ds max 2009 

megainformatic - Создание модели броневика (Хэд)

megainformatic cms e-mailer

megainformatic cms e-mailer

megainformatic cms e-mailer

Бесплатная Система Управления Вашим Сайтом - megainformatic cms free

megainformatic - Путешествие в мир 3d

megainformatic - Путешествие в мир 3d - страница 2

megainformatic - Путешествие в мир 3d - страница 3

megainformatic - Путешествие в мир 3d - страница 4

megainformatic - Путешествие в мир 3d - страница 5

megainformatic - Путешествие в мир 3d - страница 6

megainformatic - Создание модели броневика (Хэд) - Анимация вращения колес

megainformatic cms express files

megainformatic cms express files

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

Предисловие

Данный цикл статей призван помочь тем, кто решил заняться освоением 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 Кб)
 
 
     
     
     
     
     
     
  [статьи] [как создать игру ну, погоди!] [к содержанию]  
     
 

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



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


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