Физика (Blitz 3D) - Blitz 3D - Игровые движки
Навигация по сайту
Сайт:

Дополнительно:

Файловый архив:

Каталог статей:

Форум:


Категории раздела
Blitz 3D [8]
Остальное [3]
Все остальное, что не попадает ни под одну категорию.

Мини-Опрос
Какой ОС Вы пользуетесь?
Всего ответов: 1209

Партнеры сайта
....

 Главная » Статьи » Игровые движки » Blitz 3D » Физика (Blitz 3D)

Физика (Blitz 3D)

20:50
Большинство уважаемых читателей играло в такие шедевры игровой индустрии как DOOM, Half-Life и др.?

Наверняка вы наслаждались физикой в этих играх: реалистичным поведением и взаимодействием предметов. Тем, как катится бочка или кантуется ящик. Оказывается, такую физику можно сделать даже на Blitz. Об этом и пойдет речь в предлагаемом цикле статей.

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

Для этого существуют так называемые физические движки. Физический движок — это программа, которая рассчитывает физику предметов, сделанная для применения в играх и в других приложениях. Используется в играх как отдельный модуль для создания физического мира.

На данный момент наиболее популярны: ODE, Newton, Takomak, Havok и PhysX. ODE — бесплатный и распространяется с исходным кодом. Newton тоже бесплатный, обладает высокой стабильностью, но по этой причине, увы, проигрывает в скорости. Havok и PhysX — самые быстрые, обладают очень большим спектром возможностей. Havok знаком по игре Half–Life 2, для нее он и был разработан. К сожалению, по причине его дороговизны я не смог его оценить. На PhysX игры только начали появляться. Вот игры, которые используют этот движок:
• Tom Clancy's Ghost Recon Advanced Warfighter;
• Rise of Nations: Rise of Legends (патч);
• Bet on Soldier: Blood Sport (патч);
• Bet on Soldier: Blood Of Sahara Expansion Pack;
• CellFactor: Combat Training;
• City of Villains (патч);
• Gunship Apocalypse;
• Stoked Rider: Big Mountain Snowboarding;
• Switchball.

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

Если кто-то еще не знает, то PhysX был разработан компанией AGEIA для плат PhysX. Плата предназначена для ускорения просчета физики. Вот что нам обещает производитель чипа:

• динамика твердого тела;
• универсальный детектор столкновений;
• анализ конечных элементов;
• динамика мягких тел;
• движение жидкостей;
• симулятор волос и одежды;
• позволяет рассчитывать физику нескольких сотен предметов одновременно ( рис. 1).

К сожалению, в бесплатной версии половиной возможностей невозможно воспользоваться. Недоступны будут, например, движение жидкостей, симулятор волос и одежды.
Но то, что нам нужно, будет прекрасно работать и без денег. Конечно, есть недостатки: придется качать пятимегабайтный драйвер. Без него никак . PhysX не работает под «реликтовой» Windows 98 и ей подобными.
Теперь вы знаете, что такое физический движок и знаете где он применяется.

Приступим к делу. Качаем драйвера: itmbin.nm.ru/physx/physx.zip — 5 метров (самые последние дрова можно закачать на сайте support.ageia.com, там же можно узнать подробную информацию), инсталлируем. Качаем PhysX — ddownloadd.nm.ru/Blitzpx.rar (либо смотрите на сайте dev.swargo.com в файлах, там буду выкладывать уроки и последние обновления — следите за новостями). Теперь ВНИМАТЕЛЬНО: в архиве два файла — Blitzpx.dll и Blitzpx.decls. Копируем их в папку X:\Blitz3d\userlibs. Все, движок готов к использованию. Создаем в блитце новый проект.

Graphics3D 640,480
SetBuffer BackBuffer() ;создаем камеру
cam=CreateCamera()
PositionEntity cam,0,3,-10 ;создаем свет
light=CreateLight()
PositionEntity light,15,66,15 ;создаем плоскость
plane=CreatePlane()
EntityColor plane,0,200,100 ;Инициализация физики
PxCreateWorld(1) pxSetGravity(0,-10,0) ;физика кубика
cube_body = PxCreateCube(1,1,1,3,2)
pxSetPosition cube_body,0,7,0
pxSetRotation cube_body,30,0,40
cube_mesh=CreateCube()
Repeat ;расчет физики
RenderPhysic(30, 0)
pxSetEntity(cube_mesh, cube_body)
UpdateWorld()
RenderWorld()
Flip
Until KeyHit(1)
End

Теперь разберем каждую команду и все параметры функций по отдельности.
PxCreateWorld(1) — эта функция создает мир. Параметр 1 включает плоскость, с которой взаимодействуют предметы, 0 — отключает. Это самая первая команда в физике. Все остальные пишутся после.
pxSetGravity(0,-10,0) — устанавливает вектор гравитации. В нашем случае ускорение свободного падения равно 10 м/с*с и направлено к земле. По умолчанию — 9.8.

PxCreateCube(x, y, z, mass, dens) — эта функция создает параллелепипед с размерами по осям x, y, z и массой mass. Dens — плотность, пока об этом знать не обязательно, просто ставьте 1. В нашем случае мы создаем кубик с ребрами длиной 1 и массой 3.

Функции pxSetPosition body, x, y, z и pxSetRotation body, pitch, yaw, roll устанавливают кубик в точке x, y, z и разворачивают под углами pitch, yaw, roll. То есть кубик будет создан в точке 0,7,0 и развернут под углами 30,0,40.
RenderPhysic(30,0) — рассчитывает физику всех предметов в сцене. 30 — время просчета физики: чем больше время просчета, тем меньше требуется ресурсов от компьютера. 0 — синхронизация отключена, 1 — включена. Синхронизацию следует использовать, если у вас в сцене число тел не превышает 400.

pxSetEntity(cube_mesh, cube_body) — определяет каркас (меш) кубика для созданного нами физического тела. Можно обойтись без этой команды. Альтернативный способ рассмотрим потом.

В сцене можно наложить текстуры на кубик и плоскость. Это придаст реалистичный вид нашему творению. Из кубика можно сделать деревянный ящик, картонную коробку или кирпич :-). Вот что получилось у меня ( рис. 2).

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


Категория: Blitz 3D | Просмотров: 5229 | Добавил: ДядяВолк (11.08.2010) | Рейтинг: 1.0/1
Источник: http://quadrathell.cn.ua/ |
HTML ссылка на материал:
BB ссылка на материал:
Похожие материалы :
Возможно вам будет интересно:
То, что нужно знать всем, кто движется в сфере геймдева. (1)
Создание игр на Game Maker: Создание простого арканоида (0)
Массивы (0)
Начинаем изучать PHP (4)
Создание TDS (0)
Знакомство с Движком! (0)
3D Rad - система сохранения №1. (0)
Глобальные объекты в Дельфи. Их свойства и методы. (0)
Исключения в C++ (0)
Borland Assembler (BASM) уроки для начинающих (урок 6) (0)
Создаем танчики (0)
Звуки и музыка (0)
startDrag или как заставить объект двигаться за мышью? (0)
Синтаксис GML в сравнении с Pascal (1)
Создаем вертолет (2)
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Поиск по всему сайту:
Поиск по разделу:

Панель пользователя
Здравствуйте, Гость


Ник:
Пароль:
Запомнить :

Ваш IP: 3.135.184.27

Случайные конструкторы

Случайные движки

Случайные статьи

Статистика
Онлайн всего: 19
Гостей: 19
Пользователей: 0

На сайте были:

При полном или частичном копировании материалов сайта ссылка на Make-Games.ru обязательна. Make-Games.ru © 2008 - 2024 Хостинг от uCoz
Топ Разработка игр