Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

Архивировано

Эта тема находится в архиве и закрыта для публикации сообщений.

yellyex

Физический движок

Рекомендованные сообщения

Физический движок (англ. physics engine) — компьютерная программа, которая производит симуляцию физических законов реального мира в виртуальном мире с той или иной степенью аппроксимации. Чаще всего физические движки используются не как отдельные самостоятельные программные продукты, а как составные компоненты (подпрограммы) других программ.

 

Все физические движки условно делятся на два типа: игровые и научные.

 

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

 

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

 

Современные физические движки симулируют не все физические законы реального мира, а лишь некоторые, причём с течением времени и прогресса в области информационных технологий и вычислительной техники список «поддерживаемых» законов увеличивается. На начало 2010 года физические движки могут симулировать следующие физические явления и состояния:

динамика абсолютно твёрдого тела

динамика деформируемого тела

динамика жидкостей

динамика газов

поведение тканей

поведение верёвок (тросы, канаты и т.д.)

 

Разработчики компьютерных игр всегда ставили перед собой задачу улучшения качества картинки, в то время как реализация физических эффектов оставалась на втором плане. Конечно, даже в 90-е годы выпускались игры (среди них легендарная Half-Life), в которых присутствовала реалистичная физика, пусть и в малом количестве. С тех пор ситуация значительно улучшилась: разрабатывались и выпускались физические движки, о которых сегодня и пойдет речь.

 

Физический движок является программой (или подпрограммой), которая отвечает за имитацию физических законов в виртуальном пространстве. Движки применяются как в игровых приложениях, так и в научных. Основное отличие игровых решений от научных заключается в том, что воспроизводимая физика не полностью соответствует действительности, то есть существуют некоторые погрешности. Во многом это обусловлено необходимостью быстрого просчета физики в реальном времени. В случае же с научными исследованиями, прежде всего, необходима точность, а скорость работы не так важна. Стоит отметить, что игровые движки используют некоторые упрощения для ускорения расчетов. Так, пространство может разбиваться на несколько составляющих для уменьшения количества проверок столкновений объектов. Интересно, что при быстром движении объектов их столкновения могут не фиксироваться. В таком случае используются технологии непрерывного отслеживания столкновений. К сожалению, на данный момент физические движки не могут реализовать все физические законы. Они работают с динамикой абсолютно твердых и деформируемых тел, жидкостей, газов, а также тканей и веревок.

 

Наиболее распространенными физическими движками являются NVIDIA PhysX, Havok, Open Dynamics Engine и Bullet Physics Library.

 

Самый первый физический движок был разработан ирландской компанией Havok в 2000 году. В том же 2000 году Havok приобрела немецкую компанию Ipion и ее движок Ipion Virtual Physics, поэтому уже следующие версии продукта Havok содержали наработки Ipion. Среди них стоит отметить технологию отслеживания столкновений и систему сочленений. Последняя позволяла разработчикам воспроизводить шариковое, пружинное и другие соединения. На сегодняшний день выпущено семь поколений Havok. Последняя версия – Havok 7.1 – увидела свет 22 декабря 2009 года. Тут стоит вспомнить о еще одной разработке компании – движке Havok FX. Его главной задачей было обеспечение ускорения «физики» силами видеокарт AMD и NVIDIA, что позволило бы ему стать вторым движком после Ageia PhysX с аппаратной поддержкой, но после покупки Havok компанией Intel разработка проекта была свернута. Тем не менее, в 2008 году была достигнута договоренность между AMD и Havok о сотрудничестве и оптимизации физического движка для продуктов американской компании. Еще одной интересной разработкой является технология Havok AI, представленная в 2009 году на конференции GDC. Как можно понять из названия, она отвечает за искусственный интеллект и входит в состав движка Havok. Сейчас можно насчитать более 250 игр, которые используют физическую составляющую Havok. Среди них Assassin’s Creed, Fallout 3, Left 4 Dead, StarCraft 2 и многие другие.

 

Главным оппонентом Havok является движок PhysX, созданный компанией Ageia в 2005 году под названием NovodeX. Вместе с движком был представлен физический ускоритель PhysX. Таким образом, NovodeX стал первым движком с аппаратной поддержкой. NovodeX работал с жидкостями, тканями и абсолютно твердыми телами. В том же 2005 году Ageia приобрела компанию Meqon Research AB, и физический движок Meqon стал частью PhysX. Тем не менее, инновационная разработка так и не стала популярной. Большую роль в провале сыграла неубедительная рекламная кампания, а также закрытый статус движка. В итоге мало кто из числа юзеров решался на покупку физического ускорителя, а разработчики игр обходили стороной PhysX. Ageia вошли в кризисный период, но NVIDIA пришла на помощь: в начале 2008 года зеленый гигант приобрел создателей PhysX. Вскоре физический движок был перенесен на платформу NVIDIA CUDA, то есть в качестве аппаратной поддержки теперь выступали не дискретные физические ускорители, а обыкновенные видеокарты. На данный момент PhysX официально работает только с ускорителями NVIDIA. PhysX поддерживают более 200 игр, среди которых Batman: Arkham Asylum, Mass Effect, Heavy Rain и другие.

 

Havok и PhysX являются не единственными физическими движками. Bullet Physics Library и Open Dynamics Engine также используются в большом количестве приложений. По последним подсчетам, Havok и PhysX используют около 50% разработчиков, причем PhysX идет немного впереди; Bullet Physics Library – 11%, а Open Dynamics Engine – 5%. Очень неплохой результат, учитывая то, что они не имеют такой мощной поддержки, как Havok и PhysX.

 

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

 

ВОЗМОЖНОСТИ СУЩЕСТВУЮЩИХ ДВИЖКОВ

 

НЕ ИМЕЕТ СМЫСЛА МНОГО ГОВОРИТЬ О ТОМ, ЧТО В СОВРЕМЕННЫХ ИГРАХ ОЧЕНЬ ЧАСТО ИСПОЛЬЗУЮТСЯ ФИЗИЧЕСКИЕ СИМУЛЯЦИИ РАЗЛИЧНОГО РОДА. ФИЗИКА УЖЕ ДАВНО (И НАДОЛГО) ПРОТОПТАЛА ДОРОЖКУ В СИМУЛЯТОРЫ, В ОСНОВНОМ АВТОМОБИЛЬНЫЕ

 

Физика используется и как основной элемент геймплея (хардкорные симуляторы), и как средства к получению дополнительных эмоций у игрока (различного рода разрушения). Также есть ряд жанров, в которых массовое применение физики началось сравнительно недавно — это прежде всего шутеры и игры с видом от третьего лица. Спектр использования физических эффектов в них очень широк: от достаточно простых rag-dolls и пинания ящиков до попыток завязать часть геймплея на физику (Half-life 2,  Psi-ops и т.д.). Кроме всего перечисленного, существует ряд игровых жанров, в которых физика не нужна в принципе, к примеру в пошаговых глобальных стратегиях. В целом на сегодня физика в играх является важнейшим элементом, но несмотря на это раскручена не так, как графика.

Немного терминологии

физический движок (фд)

 

ФД — библиотека, которая рассчитывает физические взаимодействия между объектами игрового мира (симулируется физика, описываемая законами Ньютона). Физические движки, используемые при разработке игр, как правило, не симулируют физические процессы игрового мира со 100% точностью, а лишь производят достаточно точную аппроксимацию физических законов. Современные игровые физические движки состоят из двух частей: подсистемы определения столкновений и подсистемы расчета физических взаимодействий.

Подсистема определения столкновений

 

Основные два параметра подсистемы определения столкновений: скорость работы и точность определения столкновений. Недостаточная точность приводит к появлению разных артефактов, таких как перекрытие объектов, неопределение столкновений при существенно разных размерах и скоростях объектов и т.д. Для ускорения работы подсистемы столкновений используют различного рода разбиения пространства на подпространства, такие как quadtree (рекурсивное деление пространства на четыре подпространства) или осtree (деление на восемь подпространств), для снижения количества проверок столкновений. Системы столкновений работают дискретно — столкновения рассчитываются через определенные промежутки времени. Итак, такого рода системы могут приводить к тому, что столкновения с участием быстро движущихся объектов не фиксируются — для борьбы с подобного рода артефактами некоторые системы столкновений поддерживают так называемый  continuous collision detection (CCD) (системы непрерывного отслеживания столкновений). Суть метода  continuous collision detection заключается в том, что проверка столкновений между двумя объектами производится не между ними самими в дискретные моменты времени, а между вытянутыми объемами, которые представляют движение объектов в течение всего временного шага.

Подсистема симуляции (пс)

 

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

 

Подавляющее большинство физических движков может (с различным успехом) симулировать физику твердого тела (Rigid body simulation). Твердое тело — это тело, которое не меняет свою форму (к ним можно отнести кирпич, стол, стену и т.д.). На данный момент подавляющее большинство игр использует именно физику твердого тела, главным образом потому, что с приемлемой производительностью может обсчитываться лишь физика твердого тела. Для представления объема твердых тел, в зависимости от движка, могут использоваться как различные примитивные тела (прямоугольники, сферы, цилиндры, конусы и т.д.), так и более сложные (карты высот, выпуклые многогранники или невыпуклые многогранники). Если используются только примитивные тела, более сложные тела описываются с помощью аппроксимации примитивами. Для описания свойств твердых тел используется понятие материала, который описывается параметрами: коэффициент трения (может быть два: коэффициент трения покоя, который показывает, как тяжело сдвинуть тело, и коэффициент трения движения, который показывает, как тяжело удерживать тело в движении), упругость (сколько энергии остается после столкновения с другим телом). Помимо этих параметров, могут быть и другие. Твердое тело также имеет массу. Движение твердых тел описывается при помощи линейной, угловой скорости и ускорения. Хотя движки позволяют устанавливать эти параметры непосредственно, воздействия на тела, как правило, осуществляют при помощи приложения либо физических сил (влияют на ускорения тел), либо импульсов (влияют на скорости).

 

На базе физики твердого тела реализуется также физическое поведение персонажей и широко известный эффект тряпичной куклы (rag-doll), который заключается в том, что персонаж (чаще всего мертвый) падает вниз, как тряпичная кукла. Для реализации подобного рода поведения только твердых тел недостаточно. Используются так называемые сочленения (joint) или ограничения (constraint).

 

Джоинт — это точка, которая соединяет два твердых тела (соединение обычно задается относительно точки джоинта) и накладывает ограничения на положение тел в пространстве друг относительно друга или на скорости тел относительно друг друга. Типов джоинтов много (некоторые движки позволяют писать собственные). Для реализации рэгдолов используют  ball-joint и hinge-joint.  Ball-joint  — это шарнирное соединение двух тел, оно ограничивает перемещение тел друг относительно друга и налагает ограничение на то, как повернуты тела относительно друг друга по трем осям (при помощи джоинтов такого типа в регдолле крепится плечо или голова к телу).  Hinge-joint — это петельное соединение двух тел, которое ограничивает повороты тел относительно друг друга одной осью. В целом же спектр применения джоинтов очень широк и не ограничивается только созданием rag-dolls.

 

Помимо физики твердого тела, различные физические движки могут реализовывать дополнительные возможности: специальную поддержку симуляции движения автомобилей, симуляцию воды и прочих жидкостей, симуляцию тканей и одежды, симуляцию частиц, дополнительную поддержку для симуляции персонажей — высокоуровневые контроллеры персонажей, встроенную поддержку rag-dolls, поддержку анимации и т.д.

Физика и разработка игры

 

Наличие физики в игре накладывает отпечаток на весь процесс разработки. В зависимости от того, каков объем и характер физических фич, могут быть затронуты практически все аспекты производственного процесса — от геймплея до контента.

 

Как делать физику — этот вопрос требует решения. На одном полюсе — решение о том, чтобы писать физику самостоятельно. На другом полюсе — покупка готового решения, которое полностью покроет спектр поставленных задач. Где-то посредине находится такой вариант: модифицировать существующий, но далеко не на 100% подходящий движок. Как и в остальных областях разработки ПО, данное решение зависит от множества факторов: наличия средств, наличия персонала, наличия подходящих решений и т.д.

 

В зависимости от выбора и требований к физике сложность разработки может значительно колебаться. Если же рассматривать одну и ту же игру с физикой и без нее, при прочих равных, то вариант с физикой (достаточно объемной) затронет всех участников производственного процесса. Наличие физики прежде всего влияет на архитектуру кода игры: введение такой сложной подсистемы влияет и на графику, и на искусственный интеллект, и даже на ввод пользователя.

 

Помимо архитектурных моментов, в команде разработчиков появляется новая роль — программист физики, который будет вынужден заниматься вопросами реализации воплощения физических фич (эта доля тяжелая и неблагодарная). Наличие физики повлияет и на геймдизайн. С одной стороны, можно будет добавлять различные физические геймлей-фичи, с другой стороны, появится дополнительная забота о том, как физика скажется на остальном геймплее. Также физика затрагивает и производство контента для игры: придется создавать физические модели объектов, настраивать материалы, rag-dolls и джоинты.

 

Добавление физики в игру усложняет процесс разработки продукта и требует дополнительных ресурсов.


moonfangtopich написал 29.08.2019 в 14:57:
У вас недостаточно широкий кругозор, пацаны

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

Поделиться сообщением


Ссылка на сообщение

много конечно, но прочитал, спасибо, интересно :parovozdjan:

Поделиться сообщением


Ссылка на сообщение

Всё! Читайте на здоровье.


moonfangtopich написал 29.08.2019 в 14:57:
У вас недостаточно широкий кругозор, пацаны

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

Поделиться сообщением


Ссылка на сообщение

ой ты потом еще добавил, боюсь не осилю, но потом прочитаю, спс за инфу

Поделиться сообщением


Ссылка на сообщение

варкрафта нет -> наъуй


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

Поделиться сообщением


Ссылка на сообщение

Чувак, это нечитабельный набор букавок в натуральном виде :nate:

Поделиться сообщением


Ссылка на сообщение

Чувак, это нечитабельный набор букавок в натуральном виде :nate:

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

 

А вы его читать начали :(


moonfangtopich написал 29.08.2019 в 14:57:
У вас недостаточно широкий кругозор, пацаны

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

Поделиться сообщением


Ссылка на сообщение

Отличная тема для лягушатника  :fapfap:

 

Пойду-ка я лучше в тему Версюте, скажу набам что 5 лет назат банд стоил по-другому, и деньги давали раз в 7-9 секунд. А то они там распиздаболились чутка. :ginsgnil:


Модераторы 2 таверны - адекватные люди.

Модераторы 1 таверны - адекватные люди.

Игроки ЛОЛ и ХОН - адекватные люди.

Игроки ДОТА - адекватные люди.

 

Всем мир и добро.

Поделиться сообщением


Ссылка на сообщение

драк, проверь правильность названия звуков, не все работают бтв  :dunno:

Поделиться сообщением


Ссылка на сообщение

там не то что бы вообще все гладко :lol:

жду ответа другого моддера, он мне разъяснит, где я проебался -.-


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

Поделиться сообщением


Ссылка на сообщение

там не то что бы вообще все гладко :lol:

жду ответа другого моддера, он мне разъяснит, где я проебался -.-

кароче я скачал дефолтную доту, онли сделал свои файлы + файл лист через прогу + листфайл в основную папку доты = фб работало, остальное хуета хоновская  :ginsgnil:

Поделиться сообщением


Ссылка на сообщение

Много букв :(


A K Q J 10

Поделиться сообщением


Ссылка на сообщение

я думал тему про доту..... ну что за уг :petro:


Не оскверняй меня своим курсором!

Поделиться сообщением


Ссылка на сообщение

там не то что бы вообще все гладко :lol:

жду ответа другого моддера, он мне разъяснит, где я проебался -.-

кароче я скачал дефолтную доту, онли сделал свои файлы + файл лист через прогу + листфайл в основную папку доты = фб работало, остальное хуета хоновская  :ginsgnil:

Вы ахуели тут на пару. Этот топик не для этого!  :opasnoste:

moonfangtopich написал 29.08.2019 в 14:57:
У вас недостаточно широкий кругозор, пацаны

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

Поделиться сообщением


Ссылка на сообщение

там не то что бы вообще все гладко :lol:

жду ответа другого моддера, он мне разъяснит, где я проебался -.-

кароче я скачал дефолтную доту, онли сделал свои файлы + файл лист через прогу + листфайл в основную папку доты = фб работало, остальное хуета хоновская  :ginsgnil:

чо  :palevo:

какая еще хоновская, если ты брал дефолтную карту, и вставлял свои?


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

Поделиться сообщением


Ссылка на сообщение

Запомнил, учту.


Поделиться сообщением


Ссылка на сообщение

всё вроде норм, читабельно, гж! Но это -

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

- это как же создал))) он определил основные законы и алгоритмы взаимодействий тел

Скрытый текст

 

fiat iustitia pereat mundus

Timberwat?

 

Error macro

Beneto_Fanart_Ermac_A.jpg

 

Gits

34fd02.gif

 

 

dark_souls_3_sketch__nameless_and_storm_

 

 

Поделиться сообщением


Ссылка на сообщение

Хочу игру в которой будет квантовая механика, но не будет работать класическая.  :nate:

Поделиться сообщением


Ссылка на сообщение

Всё знал офк :yes:


pidorasy.gifpidorasy.gifpidorasy.gif

Поделиться сообщением


Ссылка на сообщение

×
×
  • Создать...