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


Balls and holes PC game / Balls and Holes PC игра
Вакансии
Игродельня
Сегодня
17 февраля 2019 21:40
Вход Регистрация Забыли пароль ?

Урок 3 Создание Win32-приложений. Создание меню и простых диалоговых окон.
  Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008  
подробнее...

Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт
Статьи сайта
megainformatic - Урок 7 2D-анимация

megainformatic - Урок 8 Загрузка/Сохранение текущей игры, режим паузы, режимы часов/будильника, запуск браузера Internet Explorer для показа сайта разработчика и других интернет-ресурсов

megainformatic - Урок 9 Тестирование и отладка приложения

megainformatic - Мои Музыкальные Миры

megainformatic - уроки Photoshop free

megainformatic cms express

megainformatic cms express

megainformatic cms express

megainformatic cms express files

megainformatic - Методы создания растровых изображений в Adobe Photoshop

megainformatic - Создание фотореалистичной текстуры травы

megainformatic - Рабочее пространство Adobe Photoshop

megainformatic - Бесшовные (тайловые) текстуры

megainformatic - Создание изображений огня, воды, неба

megainformatic - Создание текстур горных пород и суши (урок 5)

megainformatic - Рисование персонажей (урок 6)

megainformatic - Рисование фона (урок 6 часть 2)

megainformatic - Рельефные изображения

Добавление статей на сайт под управлением megainformatic cms express

megainformatic - Воспроизведение файлов в форматах it, xm, s3m, mod

megainformatic - Воспроизведение файлов в форматах it, xm, s3m, mod - страница 2

megainformatic - Воспроизведение в игре музыки в формате XM

megainformatic - Воспроизведение файлов в формате OGG Vorbis

megainformatic - игра "Веселый Буквоежка" - инструменты разработки

megainformatic - Игра "Веселый Буквоежка" - история создания проекта

megainformatic - Как анимировать паука ?

megainformatic - Уроки Photoshop

megainformatic - Купить Уроки Photoshop - Чудеса

megainformatic - Купить Уроки Photoshop - Рисуем и Анимируем

megainformatic - Эмулятор игры Ну, Погоди!

сайт megainformatic - Говорящий Комикс Веселый Буквоежка

megainformatic - Что нужно для создания собственного сайта ?

megainformatic - Моделируем девушку в 3d используя 3ds max

megainformatic - Уроки Fruity Loops Studio - пишем свою музыку

megainformatic - Уроки Fruity Loops Studio - пишем свою музыку - урок 1 - Быстрый старт

megainformatic - Сброник статей по дизайну и компьютерной графике. Обзор.

megainformatic - Уроки 3d на delphi directx - Вывод Заставки

Добро пожаловать в систему управления сайтом megainformatic cms

megainformatic - Создание эскиза и макета страницы сайта

megainformatic - Верстка созданного макета

megainformatic - Добавление модулей обеспечивающих минимально необходимый функционал

megainformatic - Основы добавления контента на сайт, управления и поддержки сайта

megainformatic - Проверка работы сайта, установка на хостинг

megainformatic - Основы продвижения созданного сайта

megainformatic - Создание шаблонов

megainformatic - Создание интернет-магазина

megainformatic - Музыкальные миры - композиция Морозное утро - 10 версий

ЛЕТО

megainformatic - Нечто Необъяснимое - пре релиз

megainformatic cms admin

megainformatic cms admin

megainformatic - Основы создания 3d игр - проект Тайны Морских Глубин

megainformatic - уроки delphi directx 8.1 3d - Основы Вращений и Управления камерой

megainformatic cms seo

megainformatic cms admin

megainformatic - Моделируем девушку в 3d - Подготовка 2d-эскиза тела человека

подробнее

     
 

Видео урок посвященный созданию игры на примере игры Ну, Погоди ! - рождение игры часть 2.

Элементарные и простые игры на примере которых можно в delphi 7 на directx 8.1 api научиться создавать игры.

 
     
 
Урок 4 Построение класса приложения
 
О том, что потребуется для данного урока читайте в основном разделе - уроки delphi directx 8.1
 
Далее у читателя подразумевается наличие базовых знаний языка Delphi.
 
[назад] [страница 1] [далее] [к содержанию]
 
Из предыдущих уроков вы уже почерпнули некоторую информацию о том, как строится и функционирует типичное D3D-приложение. Эта информация является общей для всех приложений DirectX написанных как на C++, так и на Delphi. Разница лишь связана с синтаксическими особенностями данных языков программирования и средами программирования в которых происходит работа.
 
Здесь и далее мы познакомимся с основными особенностями Direct3D-приложения, которые необходимо учитывать при разработке его базового класса.
 
За основу мы возьмем класс CD3DApplication, рассмотрим и протестируем на конкретных примерах его особенности, а далее покажем класс, который используется в игре "Ну, Погоди!" и проведем небольшое сравнение.
 
С исходным кодом класса CD3DApplication вы можете познакомиться заглянув в модуль D3DApp.pas из папки common библиотеки delphi directx 8.1
 
Данный класс является абстрактным (также как и например TForm), поэтому нужно сначала создать производный класс от данного, а затем уже работать с новым созданным классом, используя его для своих целей, что и происходит во всех примерах из DirectX SDK.
 

CD3DApplication производится напрямую от TObject.

Основное назначение класса - обеспечение работы WinAPI-приложения с использованием также DirectX API, другими словами данный класс предоставляет удобный для работы интерфейс для вызова необходимых приложению интерфейсов Windows и главным образом интерфейсов DirectX.

 

Основные методы этого класса - это

Create

Destroy

Create_

Run

MsgProc

и ряд виртуальных методов, которые частично реализованы в данном классе, но для конечного использования требуют дальнейшей реализации в производном классе Вашего приложения

OneTimeSceneInit

InitDeviceObjects

RestoreDeviceObjects

FrameMove

Render

InvalidateDeviceObjects

DeleteDeviceObjects

FinalCleanup

остальные методы, поля и свойства данного класса служат в основном для обеспечения работы вышеописанных основных методов.

 
В качестве основы для изучения данного класса и экспериментов с ним мы возьмем пример SwitchScreenModes
[downloads:12] из предыдущего урока. Для экспериментов над кодом класса CD3DApplication советую Вам взять файл D3DApp.pas и его копию разместить внутри папки того проекта в котором Вы будете проводить эксперименты. При этом среда Delphi будет использовать локальную копию вместо копии из папки common, а Вы сможете проводить какие угодно изменения не вмешиваясь в оригинальный код D3DApp.pas
 
Класс приложения CD3DApplication функционирует абсолютно по тем же правилам, которые мы рассмотрели в предыдущих уроках.
 

Метод Create задает начальные значения для множества полей данного класса,

в частности запоминается ссылка на самого себя -

g_pD3DApp := Self;

задаются начальные размеры окна приложения

m_dwCreationWidth := 400;
m_dwCreationHeight := 300;

и ряд других, назначение которых Вы узнаете из дальнейшего повествования

 
Данный метод - метод конструктора класса, вызывается при создании нового объекта данного класса и выполняет базовую начальную инициализацию заданных полей класса теми значениями, которые заданы в реализации данного конструктора, все остальные поля обнуляются или выставляются в nil (если это указатели)
 

Метод Destroy - метод деструктора класса, вызывается при удалении объекта класса. При этом освобождается память занятая объектом и связанными с ним ресурсами. Если таких ресурсов достаточно много и они занимают значительный объем, то выполнение метода может занимать значительное время - вспомните любую игру, в которую Вы играли в последний раз, почему игра по выходу из нее закрывается не сразу, а через некоторое время? Именно поэтому.

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

Теперь Вам должно быть понятно то, почему чем больше игра, тем дольше она запускается при старте или закрывается при выходе из неё.

 
Особенностью данного метода является то, что он должен вызываться не напрямую, а посредством метода Free. Для этих же целей можно применять функции SAFE_DELETE и FreeAndNil
 

Метод Create_ - представляет метод начальной инициализации класса приложения. Его имя происходит от имени оригинального метода Create на C++. Но поскольку в языке Delphi для конструктора и деструктора применяются специальные имена (Create и Destroy), а в языке C++ имя конструктора и деструктора совпадает с именем класса, то данный метод и получил такое название. Знак подчеркивания обозначает, что данный метод именно метод инициализации, а не метод конструктора!

Внутри данного метода вызывается весь код, необходимый для начальной инициализации DirectX-приложения:

создается объект Direct3D, выполняется создание списка графических устройств, создается окно приложения (если требуется), задается стиль, границы окна и рабочей области, запускается DXTimer осуществляющий периодические процессы D3D-приложения - цикл подготовки кадра и цикл отрисовки, вызывается виртуальный метод OneTimeSceneInit осуществляющий однократную инициализацию, должен быть реализован в производном классе, поэтому его работа целиком зависит от того, как он будет реализован, наконец метод Initialize3DEnvironment выполняет окончательную инициализацию 3D-среды, главным образом создавая объект IDirect3DDevice8 на основе параметров, которые были получены на предыдущих этапах выполнения.

После этого приложение переходит в состояние готовности. Это означает, что начинаются периодические процессы, выполняющие циклическую работу:

метод Run - если приложение работает как WinAPI, то данный метод вызывается напрямую и будет запущен цикл проверки сообщений на основе которого и работает типичное WinAPI-приложение.

метод MsgProc - представляет реализацию оконной процедуры приложения, которая отвечает за обработку поступающих в неё сообщений от системы. Эти сообщения играют важную роль, т.к. при помощи них и происходит собственно работа приложения в системе Windows. При каких-либо событиях, например, нажатии пользователем клавиши или перемещении мыши система реагирует на них и создает соответствующие сообщения. Эти сообщения попадают в очередь сообщений и если предназначены конкретному приложению имеющему фокус, то система передает их ему. Помимо описанных в качестве сообщений могут быть любые другие - достаточно заглянуть в код метода MsgProc и вы увидите как обрабатывается приложением сообщение об активации/деактивации приложения, реакция на команду окна меню и т.д.

 
Оставшиеся методы - OneTimeSceneInit, InitDeviceObjects, RestoreDeviceObjects, FrameMove, Render, InvalidateDeviceObjects, DeleteDeviceObjects, FinalCleanup

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

 

Назначение метода OneTimeSceneInit состоит именно в однократном его вызове. Внутри данного метода можно создавать такие объекты, которые необходимо создать лишь однократно при начальном старте - объект DirectInput, некоторые общие ресурсы, которые будут использоваться на протяжении всего приложения.

InitDeviceObjects - в отличие от предыдущего метода может вызываться и не один раз, однако перед его вызовом необходимо вызывать DeleteDeviceObjects т.е. сначала удалить все используемые объекты, иначе это приведет к ошибкам.

Методы RestoreDeviceObjects и InvalidateDeviceObjects также работают в логической паре. После инвалидации объектов их обязательно нужно восстановить, перед восстановлением обязательно инвалидировать. Иначе это опять же приведет к ошибкам. В этих методах нуждаются объекты, зависимые от текущего устройства. Если вдруг произошел его сброс, то происходит инвалидация, после чего нужно обязательно выполнить восстановление. К таким объектам относятся модели, шейдеры.

 

Метод FrameMove - исходя из названия "движение кадра" - отвечает за подготовку следующего кадра анимации. Как таковая отрисовка в нем не происходит. Его основное назначение - это вызов метода UpdateInput который выполняет опрос устройств ввода клавиатуры и мыши, а также выполнение всех необходимых вычислений, которые осуществляют перемещение персонажей, логику игры и прочее

От сложности процессов, происходящих внутри данного метода напрямую будет зависеть производительность приложения, потому что данный метод в паре с методом Render периодически вызывается таймером DXTimer через минимальные интервалы времени, чем и определяется FPS - частота кадров.

Метод Render - не должен содержать слишком "тяжеловесного" кода, т.к. его основная задача - как можно быстрее отрисовать то, что было подготовлено на предыдущей стадии. Для ускорения работы данного метода выполняются различные подготовительные стадии, в частности, отсечение объектов, не попадающих в поле зрения камеры. Правильное выполнение этого процесса (естественно внутри FrameMove, а не внутри Render) гарантирует то, что игра "не будет тормозить" даже при кажущемся большом количестве игровых объектов присутствующих в игровой сцене. Они просто будут исключаться из цикла отрисовки, если не попадают в определенную область видимости.

 
Итак, вкратце мы рассмотрели что к чему. Пора приступить к экспериментам. Под экспериментами я понимаю более углубленное изучение кода класса CD3DApplication. Мы будем брать части кода и комментировать их, исключая из компиляции, затем наблюдать результат полученный при этом. Этим методом не всегда, но очень часто можно лучше уяснить для себя как работает та или иная часть приложения. Кроме того, такие эксперименты будут крайне полезны Вам если у Вас еще не очень достаточно опыта в программировании игр и приложений вообще. Такие эксперименты позволят получить общее представление о методах тестирования и отладки кода.
 

Откроем пример SwitchScreenModes и копию модуля D3DApp.pas, которую Вы должны были скопировать из папки common в папку данного проекта

Открыть модуль D3DApp.pas достаточно просто - в коде модуля SwitchModesUnit.pas найдите имя D3DApp в списке uses и удерживая нажатой клавишу [Ctrl] щелкните по этому имени левой кнопкой мыши.

Модуль D3DApp.pas будет открыт для Вас. Чтобы удостовериться, что Вы действительно работаете с копией, а не с оригиналом из папки common, попробуйте выполнить сохранение. Если диалог укажет на папку проекта, а не на common, значит всё верно, можно смело приступать к экспериментам!

 

Для начала мы заглянем внутрь метода CD3DApplication.Create_ и выясним несколько фактов:

Как происходит построение списка адаптеров и какой видео режим выбирается по умолчанию - нам нужно будет поработать с кодом внутри BuildDeviceList

Какие особенности учитываются при реализации Initialize3DEnvironment для инициализации 3D-среды

 

Самый простой эксперимент - закомментируем кусок кода -

{hr:= BuildDeviceList;
if FAILED(hr) then
begin
SAFE_RELEASE(m_pD3D);
Result:= DisplayErrorMsg(hr, MSGERR_APPMUSTEXIT);
Exit;
end;}

заключив его в фигурные скобки, выполним компиляцию, запустим приложение и посмотрим что произошло.

Мы получим Generic application error и приложение будет закрыто. Даже ничего не зная о функционале работы CD3DApplication из этого можно заключить, что данный код является критичным для работы приложения.

Раскомментируем код и отправимся вглубь метода BuildDeviceList для экспериментов внутри него.

Замечу, что показанная техника экспериментов с комментированием участков кода для лучшего уяснения его назначения и работы уже рассматривалась в ряде статей, в частности в - Теория и практика 3D-игр

 

Для быстрого перехода к реализацию BuildDeviceList также достаточно щелкнуть по этому идентификатору левой кнопкой мыши вкупе с клавишей [Ctrl].

Посмотрим как происходит работа внутри данного метода в режиме отладки. Для этого достаточно установить в нужной строке кода контрольную точку останова и запустить приложение в режиме отладки.

 
 
Для этого щелкаем левой кнопкой мыши в указанной позиции и там появится красный кружок вместо синего (как на рисунке).
 
 
Запускаем приложение в режиме отладки кнопкой Run как показано на рисунке.
 

Для пошагового исполнения кода используем клавишу [F8]. Для входа в код вызываемых процедур и функций можно использовать [F7].

Параллельно можно исследовать содержимое переменных наблюдая как изменяются их значения.

Сначала мы наблюдаем как выбираются все видео- режимы чьё разрешение >= 640x480

Отфильтровываются все подобные видеорежимы, отличающиеся лишь частотой покадровой развертки.

Заносятся в список только имеющие уникальный формат текстуры, отсортировываются в порядке увеличения разрешения и качества формата текстур.

Далее выясняется количество доступных графических устройств в системе, имеют ли они тип HAL (аппаратный уровень абстракции), могут ли использоваться в оконном режиме, совместимы ли с режимом рабочего стола, поддерживается ли аппаратная трансформация вершин, выясняется формат буфера глубины и т.п.

Таким образом основная задача данного метода - выборка наиболее подходящих видеорежимов и занесение их в список доступных.

 

Какой режим выставляется по умолчанию?

Все видеорежимы попадают в поля структуры m_Adapters представляющей список адаптеров в системе. Каждый адаптер в свою очередь имеет список устройств, список видеорежимов, форматов и т.д.

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

m_Adapters[a].dwCurrentDevice := d;
m_dwAdapter := a;
m_bWindowed := True;

после проверки и подтверждения его необходимых свойств, при этом метод возвращает результат построения списка - ок или ошибку с расшифровкой ее причины.

Для полного ответа на поставленный вопрос в методе Create_ попробуйте сразу после выполнения BuildDeviceList добавить такой тестовый код -

var

//**
cd: Cardinal;
//нужно объявить как глобальную переменную вне метода Create_
//**

{...}

//остальное уже в методе Create_

hr:= BuildDeviceList;
if FAILED(hr) then
begin
SAFE_RELEASE(m_pD3D);
Result:= DisplayErrorMsg(hr, MSGERR_APPMUSTEXIT);
Exit;
end;

//**
cd := m_Adapters[m_dwAdapter].dwCurrentDevice;
//**

 

установив точку останова на коде созданной строки вы можете получить в режиме отладки информацию о том, какое текущее устройство устанавливается по-умолчанию.

Используя нижеследующий код, который Вы можете почерпнуть из метода BuildDeviceList можно получить всю необходимую информацию -

var

//**
CurrentDevice, DeviceModeNum: Cardinal;
DesktopMode: TD3DDisplayMode;
p_AdapterInfo: PD3DAdapterInfo;
pDeviceInfo: PD3DDeviceInfo;
DeviceCurrentMode: TD3DModeInfo;
//**

//аналогично нужно объявить как глобальные переменные вне метода Create_, если сделать локальные, то их значения могут стать недоступны при отладке из-за оптимизации в регистрах процессора, поэтому для целей отладки и проверки получаемых значений нужны глобальные переменные

//**
CurrentDevice := m_Adapters[m_dwAdapter].dwCurrentDevice;
DesktopMode := m_Adapters[m_dwAdapter].d3ddmDesktop;
p_AdapterInfo := @m_Adapters[m_dwAdapter];
pDeviceInfo := @p_AdapterInfo^.devices[CurrentDevice];
DeviceModeNum := pDeviceInfo^.dwCurrentMode;
DeviceCurrentMode := pDeviceInfo^.modes[DeviceModeNum];
//**

теперь всё сразу становится очевидно -

сначала определяется текущее устройство CurrentDevice, затем текущий режим рабочего стола (если это Вам потребуется), считывается информация о текущем адаптере, по ней определяется информация о текущем устройстве pDeviceInfo, затем считывается номер текущего видеорежима и определяются его параметры

 

Двигаемся дальше. Если будет обнаружено, что обработчик окна m_hWnd пуст, т.е. требуется создать окно средствами WinAPI, то оно будет создано. Иконка, указатель мыши, цвет фона, стиль, границы, размеры задаются далее.

Если обработчик окна не был пуст, то запоминается указатель на старую оконную процедуру и устанавливается новый, обрабатывающий поступающие сообщения внутри метода MsgProc, а также вызывающий старую оконную процедуру. Это гарантирует корректную обработку поступающих приложению сообщений даже при использовании VCL-окон и приложения работающего на основе TApplication, как это имеет место в примерах всех предыдущих уроков и игре "Ну, Погоди!". Если забыть про этот важный момент - при создании собственного базового класса D3D-приложения, то можно долго гадать о причинах возможных ошибок и некорректной его работы.

 

Метод OneTimeSceneInit целиком зависит от реализации его в производном классе.

Остается рассмотреть метод Initialize3DEnvironment и поэкспериментировать с ним.

 

Заглянув в первые строки кода данного метода сразу определяем, что текущий видеорежим это pModeInfo

вызов AdjustWindowForChange; на самом деле выполняет скрытие окна полноэкранного режима

Далее идет настройка параметров отображения и самое интересное, что служит ответом на второй вопрос, поставленный в конце 3 урока

// Create the device
{//**
hr := m_pD3D.CreateDevice(m_dwAdapter, pDeviceInfo^.DeviceType,
m_hWndFocus, pModeInfo^.dwBehavior, m_d3dpp,
m_pd3dDevice);
}

hr := m_pD3D.CreateDevice(m_dwAdapter, pDeviceInfo^.DeviceType,
m_hWndFocus,
D3DCREATE_HARDWARE_VERTEXPROCESSING,
m_d3dpp,
m_pd3dDevice);

В чём же причина? Если заглянуть в документацию по DirectX 8 ,то в описании IDirect3D8::CreateDevice вы найдете список значений параметра BehaviorFlags

среди них D3DCREATE_PUREDEVICE = $10; и D3DCREATE_HARDWARE_VERTEXPROCESSING = $40; именно то значение, которое имеет данный флаг если использовать строку кода, которая показана закомментированной (зеленого цвета)

Приведенный чуть ниже код исправляет данный недостаток! Причина объяснена в документации по DirectX 8 -

D3DCREATE_PUREDEVICE
Specifies that Direct3D does not support Get* calls for anything that can be stored in state blocks. It also tells Direct3D not to provide any emulation services for vertex processing. This means that if the device does not support vertex processing, then the application can use only post-transformed vertices.

Т. е. установка данного флага не позволяет вызывать методы Get* и требует использования только пост-трансформированных вершин. Метод GetViewport как раз и не выдает при этом нужной информации!

 
оставшийся код располагает окно поверх остальных окон (если используется оконный режим), проверяются возможности устройства и формируется соответствующая информационная строка m_strDeviceStats, запоминаются параметры бэк-буфера, отображается указатель мыши и ограничивается его перемещение заданной областью, происходит вызов методов InitDeviceObjects и RestoreDeviceObjects, в случае ошибок происходит переключение на более низкий уровень возможностей графического устройства и рекурсивный вызов метода Initialize3DEnvironment.
 
По окончании выполнения метода Create_ приложение переходит в состояние готовности и запускается непрерывный цикл отрисовки вызывающий поочередно методы FrameMove и Render. Это происходит внутри метода TAppForm.ApplicationEventsIdle
 
 
 
[назад] [страница 1] [далее] [к содержанию]
 
 
     
     
     
     
подробнее

НОВОГОДНЕЕ ОБРАЩЕНИЕ СОЗДАТЕЛЯ Мега Информатик К ЖИТЕЛЯМ ПЛАНЕТЫ интернет.

Уважаемые жители сообщества интернет !

Сегодня у меня есть уникальная возможность - сделать то,
что возможно никогда еще не было доступно ранее -
обратиться сразу ко всему человечеству, ко всем
тем, кто меня слышит или хочет услышать.

Каждый из нас хранит в своей душе частичку чего-то сокровенного.
Каждый должен иметь равные возможности, хотя конечно это не всегда
так. Мы оказываемся подчас рабами обстоятельств и нам
кажется, что мы не в силах ничего изменить.

Поэтому каждый творит светлые и темные дела в разных
количествах и пропорциях.

Но всё же каждый из нас является или по-крайней мере
думает, что является тем, кто созидает и творит доброе
и вечное.

Спасибо Вам за то, что Вы делаете для других, потому что
каждый в меру своих возможностей делает что-то нужное и полезное
для других людей.

От ВСЕЙ ДУШИ ПОЗДРАВЛЯЮ ВАС С НАСТУПАЮЩИМ НОВЫМ ГОДОМ !

ЖЕЛАЮ ВАМ КРЕПКОГО ЗДОРОВЬЯ, МИРА И ПРОЦВЕТАНИЯ !

СПАСИБО ЗА ВНИМАНИЕ.

С НОВЫМ 2013 годом ! Мира, любви, согласия. С ув., megainformatic

А теперь немного о новинках и более ранних но уже проверенных продуктах сайта Мега Информатик -

[галерея рисованных девушек]

Более подробно о методиках рисования Вы можете узнать из уроков Photoshop -

серия продуктов - Уроки Photoshop

Уроки Photoshop free (Свободно распространяемые)
бесплатно
уроки photoshop
100 руб.
уроки photoshop - чудеса !
100 руб.
уроки photoshop -  рисуем и анимируем
250 руб.


Другие продукты

Новинки !!! - модуль падающий снег

приятная и позитивная mp3 музыка

мои давние музыкальные работы

подробнее

     
  Уроки Photoshop  
     
  Рисуем волка из мультфильма  
     
  07/11/2008  
     
 

Создаем анимацию хотьбы волка в Photoshop и ImageReady

Анимацию будем создавать на основе волка нарисованного в предыдущем уроке - рисуем волка

 
     
   
     
 

В этом уроке мы познакомимся с тем, как выполнить анимирование персонажа на примере хотьбы волка.

Мы создадим два варианта анимации - в формате gif для использования в интернет-публикациях и тестовых целях и в формате tga для использования в компьютерной игре

 
     
  [к началу] [страница 1] [страница 2]  
     
  Сохраните созданный файл. Теперь удалите все лишние слои, кроме показанных на рисунке -  
     
   
     
  сохраните файл под именем anim_walked_wolf.psd  
     
  Теперь подготовим анимационную цепочку. Мы уже упоминали, что она будет включать всего 8 кадров. Следовательно нам нужно иметь 8 наборов показанных на рисунке слоев. Для этого удобнее сгруппировать слои и каждой группе дать соответствующее имя -  
     
  создаем новую группу -  
     
   
     
  щелкаем по названию созданной группы Set 1 и называем Frame0  
     
   
     
   
     
  все слои переносим во внутрь созданной группы -  
     
   
     
  иногда потребуется сначала перетащить слой на начало группы, а уже внутри нее расставить слои в нужном порядке  
     
  далее сверните созданную группу  
     
   
     
   
     
  и дублируйте ее еще 7 раз, называя каждую новую группу Frame1, Frame2 и т.д. до Frame7. Для этого щелкните по группе правой кнопкой мыши -  
     
   
     
   
     
   
     
  Переходим к процессу создания анимации  
     
  Наша анимация будет заключаться в том, что волк должен идти -  
     
   
     
  на данном рисунке показаны все 8 кадров анимации анимационной цепочки справа налево. Крайний правый кадр - начальное положение волка (кадр помеченный цифрой 0).  
     
 

внимательно посмотрев на данную анимационную цепочку вы увидите что 0 и 4 кадр абсолютно одинаковы и представляют собой начальную позицию анимации волка. Кадры с 1 по 3 представляют первую фазу шага волка, 4 - возврат в исходную позицию для обеспечения непрерывности. Кадры с 5 по 7 вторая фаза шага. Поскольку данная анимация является цикличной, то она должна непрерывно воспроизводиться с кадра 0 до кадра 7, а по достижении 7 кадра снова возвращаться к кадру 0. Поэтому 9 кадр с номером 8 не требуется и его роль исполняет 0 кадр к которому происходит возврат при проигрывании анимации.

Иными словами кадры 3-0 первая половина цикла анимации, 7-4 - вторая.

 
     
  Далее проследите за анимацией каждой из конечностей. Например посмотрите на анимацию левой ноги (с такой точки зрения, когда стоим спиной к волку): в кадре 0 она находится в исходной позиции, в кадре 1 слегка поднята вперед, в кадре 2 достигла крайней точки движения, в кадре 3 вернулась примерно к положению подобному кадру 1. 4 кадр является исходной позицией, далее в 5 кадре нога отводится чуть назад, в 6 кадре достигает крайней точки движения назад, в 7 кадре возвращается в позицию аналогичную кадру 5.  
     
  Правая нога осуществляет подобные движения, но в противоположную сторону, руки движутся аналогично, с той разницей, что левая рука повторяет движения правой ноги, а правая - левой.  
     
  Исходя из сказанного выполним создание анимационной цепочки. Лучше это сделать в развернутом виде как на рисунке с шагающим волком.  
     
  Сначала нам нужно увеличить холст изображения до 128*8 пиксель в длину, т.к. нам потребуется 8 кадров -  
     
   
     
   
     
  для более точного размещения кадров анимационной цепочки по своим местам настраиваем размер ячеек сетки и включаем ее отображение  
     
   
     
   
     
   
     
   
     
  теперь выбираем нужный кадр представленный наборами слоев Frame0 - Frame7 и размещаем его в нужном месте анимационной цепочки, т.е. Frame0 - краний справа, Frame1 чуть левее и т.д. до Frame7 - крайний левый.  
     
   
     
  обратите внимание! для перемещений используем инструмент Move Tool, при этом в панели свойств этого инструмента галочку Auto Select Layer нужно отключить, чтобы нечаянно не выделялся автоматически слой под курсором.  
     
  Создав такую анимационную цепочку проверьте чтобы все кадры стояли одинаково ровно.  
     
  [назад] [далее]  
     
     
     
  [Все уроки]  
     
подробнее

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

Основы DirectInput8 на Delphi

Основы DirectSound8 на Delphi

 

Введение

Создание современных компьютерных игр длительный процесс. Существует несколько платформ, которые можно использовать.

Основными на сегодняшний день являются OpenGL и DirectX.

Итак, если Вы решились заняться освоением технологий DirectX в среде Delphi, то пришло самое время сделать первый шаг!

В данном сборнике представлены уже адаптированные под Delphi примеры. Так что Вы скоро сможете начать программировать DirectX даже не зная С++!!.

Если же Вы будете двигаться дальше, то Вам конечно понадобится оригинальный DirectX SDK, хотя бы версии 8.1 и хотя бы минимальные знания С++ (чтобы можно было самим адаптировать примеры из SDK на Delphi !).

Примеры даны для реализации в среде Delphi версий 6-7. Однако если у Вас отличная версия, то, скорее всего, Вам придется внести модификации в код. Но думаю, что это не составит большого труда, если учесть, что при ошибках компиляции Delphi подскажет Вам решения и Вы, покопавшись в Help'е сможете внести эти модификации :))

На сегодняшний день самым свежим является DirectX 9 SDK, содержащий Direct3D 10 (на момент чтения Вами этой статьи возможно еще свежее). Данный цикл примеров посвящен основам работы с DirectX 8.1 SDK (Software Developers Kit). Если Вы разберетесь с DX 8.1, то перейти на 9 не составит большого труда т.к. общие принципы останутся прежними. К тому же, в DX9 использование интерфесов DirectInput8 и DirectSound8 осталось практически без изменений, т.е. DI9 и DS9 не появилось!

Почему DirectX81 и Delphi?

Direct3D8

 

Базовые уроки

Вашему вниманию предлагаются 8 базовых уроков представляющих оригинальные уроки (1-6) взятые из DX SDK 8 и адаптированные к применению в Delphi 7.

Примечание: длинных описаний и пояснений к урокам пока не даю - все что здесь есть - это исходный код. Чтобы детально разобраться в технологии Вам понадобится DX SDK 8 или выше, Delphi 7 (или 6 или выше) и много много терпения и упорства.

Обзор уроков

 
 

Урок 1

Знакомит с концепцией написания приложений для работы с DirectX. Описываются принципы написания WinAPI приложений, способы обращения к арсеналу DirectX.

Урок 2

Ваше первое полноценное DirectX-приложение. В окне приложения изображается разноцветный треугольник.  
  для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Первый шаг
для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Шаг второй
 
           
 

Урок 3

Снова треугольник, но уже вращающийся. Показывается методика работы с матрицами.

Урок 4

На экране создается цилиндр. Показано использование материалов и источников освещения.  
  для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Посложнее
для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Следующий шаг
 
           
  Урок 5 Вращающийся цилиндр показан с наложением текстуры. Показано использование текстур.

Урок 6

На экране показана первая сложная модель – поверхность из набора треугольников (Mesh). Это модель тигра.

Используется наложение текстуры. Показано как загрузить модель из X-файла (икс-файла).

 
  для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Это уже интересно!
для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Еще интересней
 
     
 

Данные уроки основаны на оригинальных уроках из DX SDK 8. Они лишь адаптированы к применению в Delphi7. Адаптация выполнена автором или другими людьми (это указано в заголовках исходных файлов).

 
           
  Урок 7 Показана технология использования DirectX внутри стандартных VCL-приложений Delphi. Использование окна диалога для выбора файла произвольной модели (из X-файла). Урок 8

Слегка модифицированное приложение из урока 8 – показывает как можно изменять положение наблюдателя для лучшего обозревания модели.

О том как создавать X-файлы см. дополнения.

 
  для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
VCL+DirectX!
для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Новые модели
 
           
  Урок 9 Данное приложение позволит Вам: а) загрузить какую-либо модель в x-формате (икс-формате); б) посмотреть каким образом реализуется сложное вращение (сразу по двум осям) - в методе SetupMatrices; в) узнать как можно добиться эффекта обозревания мира (3D-пространства модели) управляя положением наблюдателя (камеры). Это модифицированное приложение из урока 8 – следующий базовый шаг в изучении технологий DirectX и их применении в практике программирования на Delphi. Урок 10

Данный урок введет Вас в создание полноценного Direct3D8-приложения на Delphi 7. Библиотека исходного кода позволит Вам быстрее начать создавать 3D-приложения на Delphi. Особенности урока: 1) выбор адаптера и видеорежима; 2) работа с DX-файлами; 3) работа с шейдерами; 4) анимация; 5) пример подводной сцены; 6) особенности Delphi-кода под Direct3D8. Данный урок - хороший старт для дальнейшего изучения DX8 SDK в среде Delphi 7.

 
  для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Первый 3D-мир
для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Дельфин под водой
 
           
           
  Урок 11

Технология создания открытых 3D-пространств, billboarding (вращение 2D по отношению к наблюдателю). В качестве основы D3D-приложения используется расширяемая библиотека, которая служит основой всех примеров оригинального DX SDK (она входит в состав архива данного урока). Цель самого урока: познакомить с технологией вращения плоских изображений для создания иллюзии объема. Кроме того, параллельно дается пример создания простейшего открытого 3D-пространства.

Примечание!: Все примеры во время исполнения требуют наличия файлов времени исполнения - D3DX81ab.dll и DXErr81ab.dll, их Вы можете найти в архиве С ОБЩИМ КОДОМ (см. ниже).  
  для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Открытое пространство, иллюзия объема у плоских деревьев
     
           
  Уроки 1-11 в виде самораспаковывающегося архива - 1,72 Mb
[downloads:16]
Внимание!!! Для нормальной компиляции Вам потребуются заголовочные файлы -
[downloads:10]
 
    Важные замечания: если Вы компилируете приложение, а оно не компилируется, запускаете, а выдаются ошибки и т.п. - Вам нужно скачать папку с ОБЩИМ КОДОМ! Размер архива - 772 Кб. Данный архив (С ОБЩИМ КОДОМ) потребуется Вам как для компиляции примеров, так и для дальнейшей работы по разработке компьютерных игр на Delphi. Содержит библиотечные файлы времени исполнения D3DX81ab.dll, DXErr81ab.dll и все основные и дополнительные заголовочные файлы (Direct3D8, D3DX8, DirectInput8, DirectSound8 и т.д.)  
           
  Итак, 12 уроков по основам Direct3D8 преодолено, конечно это еще не завершение, а только начало, но теперь самое время перейти к изучению средств поддержки устройств ввода информации - клавиатуры, мыши, а также джойстиков, рулей и других игровых устройств, а также работе со звуком - все это описывается в разделах:  
           
 

Основы DirectInput8 на Delphi

Основы DirectSound8 на Delphi

 
Основы DirectMusic на Delphi
 

Дополнения:

Для конверсии 3ds-файлов (см. ниже) используйте стандартную утилиту conv3ds из пакета DX SDK 8. Местонахождение [Путь к Microsoft DX SDK]\Bin\xfiles

В DX SDK9 упростилась процедура конверсии файлов 3ds max в формат x. Для этого используется встраиваемый plug-in. Получить его можно с DX9 SDK или (чтобы не скачивать весь DX9 SDK!) здесь.

Замечания

По запуску откомпилированных приложений из туториала по DirectX

Если откомпилированное приложение не работает, скорее всего оно не может найти необходимые ему файлы: модель, текстуру.

Решение: просто переместите исполнимый файл в папку, где находятся все используемые модели и текстуры или используйте правильный путь для загружаемых файлов.

По экспорту файлов-моделей 3D Studio Max (5, 7 версии) в формат х при помощи утилиты conv3ds (из папки bin\xfiles пакета DirectX SDK)

Прежде чем конвертировать файл в х-файл (икс-файл) нужно сначала в 3D Max’е экспортировать его (команда Export) в формат 3ds. Это связано с тем, что при обычном сохранении модели сохраняются с расширением max. Полученный файл с расширением 3ds можно конвертировать в х-файл. В DX9 SDK эта процедура упростилась! (см. выше). 

 
 
     
 
megainformatic cms free

Быстрая и Компактная Система Управления Вашим Сайтом - megainformatic cms express files

megainformatic cms express files - это простое, быстрое и очень компактное решение для создания первого вашего сайта. НЕ ИСПОЛЬЗУЕТ базы данных mysql. Вместо этого используются файловые базы данных. Поэтому Вы можете использовать систему даже на хостинге с поддержкой php, но без поддержки баз данных my sql.

Очень проста в установке - достаточно вам скопировать все файлы на ваш хостинг и сайт готов к работе !!!

В комплект входят 3 готовых шаблона, модули поиска и карты сайта, а также статьи по основам создания сайта.

Стоимость: 100 руб.

 
     
 

Быстрая и Компактная Система Управления Вашим Сайтом - megainformatic cms express files

Особенности:

- очень компакта и быстра в работе и развертывании сайта;

- открытый исходный код на php;

- быстрая и простая установка;

- подробное описание возможностей;

 
     
 

Чтобы создать свой сайт быстро и легко - приобретите megainformatic cms express files всего за 100 рублей, получите дистрибутив, распакуйте его и скопируйте полученные файлы на свой хостинг.

Ваш сайт готов к работе !!!

 
     
  Для добавления новых статей на ваш сайт - достаточно выложить файл контента в нужную папку, например papers/my_paper1  
     
 

А затем добавить описание в файл data/papers.csv для этой статьи.

После этого вам остается добавить ссылку на новую статью на главной странице сайта или на другой нужной странице - и пользователи смогут читать вашу новую статью.

Модули поиска и карты сайта автоматически собирают информацию о добавленных статьях из файла статей.

 
     
 

Если возможности megainformatic cms express files, вам кажутся ограниченными и Вы хотите чего-то большего - обратите внимание на следующие продукты -

megainformatic cms e-pro

 
     
  megainformatic cms e-shop  
     
  megainformatic cms e-mailer  
     
  Удачи вам в создании собственного виртуального интернет-пространства !!!  
     
     
     
megainformatic live chat
Начать беседу
X
 

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



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


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