HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > Реализация физики для 2d объектов
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
SanYa
Житель форума

Дата регистрации: May 2006
Проживает: Тула
Сообщений: 369
Возраст: 35

Рейтинг



Реализация физики для 2d объектов

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

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

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

зы: о существовании готовых движков знаю, но не хочу их по 2м причинам: они на AS3 и хочется разобраться самому.

В общем, за любую информацию буду благодарен.

__________________
кто к нам с чем зачем, тот от того и того...

Сообщить модератору | | IP: Записан
Сообщение: 43426

Старое сообщение 16-03-2009 14:00
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Гугли 2D physic. Собственно физика состоит из двух частей - симулятора и коллижен детектора. Для 2D написать коллижен детектор достаточно просто. Физика - обычные уравнения из школьного курса.
Силы, действующие на тело.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 43429

Старое сообщение 16-03-2009 16:17
-
George
Новичок

Дата регистрации: Jun 2008
Проживает: Минск
Сообщений: 28
Возраст: 33

Рейтинг



Начну сразу с плохого: во Flash (по крайней мере MX) крайне тяжело, а порой невозможно (однако не буду полностью отрицать) создать полноценную, честную, нетормознутую физику. И почему же?
1. Относительное небыстродействие Flash-а.
2. Ограничение на разрядность чисел (насколько помню - 17 разрядов, причем 4 из них занимает E+65 (К примеру)).
3. Ограничение на время выполнение скрипта (15 секунд на кадр) - но это скорее всего для расчетов, но не для демонстраций.
4. До тех пор, пока скрип не выполнится, кадр не сменится. Т.е. даже если стоит 120 кадр/сек, то реально может быть намного меньше, или, еще понятнее, значение кадр/сек - это верхнее ограничение для скорости воспроизведения.

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

В качестве ресурса, где можно найти много интересных вещей, посоветовал бы flasher.ru

Ну и напоследок, архивчик с разными физическими (+1 математика) демонстрациями, с которыми я когда-то баловался. К каждой демонстрации приложен текстовый файл с некоторыми комментариями. Собственно архив:

Вложение: phys.rar (89.5 кб)
Этот файл был скачан 409 раз.

Сообщить модератору | | IP: Записан
Сообщение: 43432

Старое сообщение 16-03-2009 19:21
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



George на флэше отличные рагдоллы получаются, зря ты так.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 43434

Старое сообщение 16-03-2009 20:49
-
George
Новичок

Дата регистрации: Jun 2008
Проживает: Минск
Сообщений: 28
Возраст: 33

Рейтинг



Дядя Миша, так я же не утверждаю, что нельзя реализовать более-менее реальную физику. Я просто описал некоторые ограничения Flash-а (по крайней мере MX), которые не позволяют создать, как бы это сказать..., много точной физики. Или много, но простенькой, или мало, но относительно точной (почему относительно, написал в ограничениях). Как демонстрация (тот же ragdoll) - нормально, но если вставить уже не один, а два-три, а то и десяток ragdoll-ов, то комп, скорее всего, перестанет нормально переваривать физику. Пример: в архиве есть ролик с веревкой. Хотя веревка моделируется несчатными 50 пружинами, секунд за 40 ролик способен повесить мой комп (почему не сразу - не знаю). Пробывал увеличивать кол-во пружинок в 10 раз - с секунды третьей уже смотрим слайд-шоу...

Сообщить модератору | | IP: Записан
Сообщение: 43464

Старое сообщение 17-03-2009 17:39
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
нормально, но если вставить уже не один, а два-три, а то и десяток ragdoll-ов, то комп, скорее всего, перестанет нормально переваривать физику

Вот и неправда твоя
Qif_Qgame игрушку выкладывал (сцылку давал) - игрушка на флэше, надо стрелять рэгдолльными человечками из пушки.
10-15 таких человечков абсолютно не тормозят. Не забываем, что речь идет про 2Д физику.
А архива твоего что-то невидно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 43465

Старое сообщение 17-03-2009 18:16
-
BioHazard
Jess Liberty C++ за 21 день

Дата регистрации: Nov 2008
Проживает: (void)
Сообщений: 274

Рейтинг



Цитата:
George писал:
Собственно архив:

Вложение: phys.rar (89.5 кб)
Этот файл был скачан 4 раз.

Сообщить модератору | | IP: Записан
Сообщение: 43467

Старое сообщение 17-03-2009 19:34
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



BioHazard ага, что-то не обратил внимания.
George поглядел я твои демки. Тебе знакомо слово "интерполяция" ?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 43468

Старое сообщение 17-03-2009 20:10
-
SanYa
Житель форума

Дата регистрации: May 2006
Проживает: Тула
Сообщений: 369
Возраст: 35

Рейтинг



Во первых, Дядя Миша, George спасибо за советы!

Цитата:
George писал:
В качестве ресурса, где можно найти много интересных вещей, посоветовал бы flasher.ru

Там я уже давно ошиваюсь .

Цитата:
George писал:
Пример: в архиве есть ролик с веревкой. Хотя веревка моделируется несчатными 50 пружинами, секунд за 40 ролик способен повесить мой комп (почему не сразу - не знаю).

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

Цитата:
Дядя Миша писал:
Qif_Qgame игрушку выкладывал (сцылку давал) - игрушка на флэше, надо стрелять рэгдолльными человечками из пушки.
10-15 таких человечков абсолютно не тормозят.

А дело в том, что оно скорее всего написано на AS3, который и сам много быстрее и математика там быстрей считается. Если бы дело было на 2й версии скрипта, то вероятно подтормаживало бы.

Цитата:
George писал:
3. Ограничение на время выполнение скрипта (15 секунд на кадр) - но это скорее всего для расчетов, но не для демонстраций.

Имеется ввиду, что обработчик события onEnterFrame у нас максимум будет 15 сек выполняться, а потом заглохнет?
Просто несколько книжек по AS 2 я все-таки осилил и нигде не встречал этой информации . Конечно есть предположение, что в 8й версии флеша, помимо прихода класса bitmap некоторые ограничения ушли, но я в этом не уверен, потому что по сути это же тот же AS2, еще не AS3.

__________________
кто к нам с чем зачем, тот от того и того...

Сообщить модератору | | IP: Записан
Сообщение: 43469

Старое сообщение 17-03-2009 20:37
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



SanYa ну так заюзай AS 3.0
Делов-то

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 43470

Старое сообщение 17-03-2009 22:13
-
SanYa
Житель форума

Дата регистрации: May 2006
Проживает: Тула
Сообщений: 369
Возраст: 35

Рейтинг



Дядя Миша Это не так просто, там очень много, что изменилось, а я учился изначально на AS2, мне трудно будет переходить, тем более что 3.0 стал полностью объектно-ориентированным, там только классы..классы..классы и ничего кроме. Понятное дело, что придется перейти на него, но сейчас не так много времени, что бы разбираться.
Так что будем мучать AS 2.0

__________________
кто к нам с чем зачем, тот от того и того...

Сообщить модератору | | IP: Записан
Сообщение: 43471

Старое сообщение 17-03-2009 22:34
- За что?
George
Новичок

Дата регистрации: Jun 2008
Проживает: Минск
Сообщений: 28
Возраст: 33

Рейтинг



Цитата:
Дядя Миша писал:
Тебе знакомо слово "интерполяция" ?

Теперь знакомо... Только можно объяснить к чему это тут?
Цитата:
SanYa писал:
Имеется ввиду, что обработчик события onEnterFrame у нас максимум будет 15 сек выполняться, а потом заглохнет?

Имеется в виду, что если скрип не успевает выполнится за 15 секунд (а любой скрипт выполняется в течение только одного кадра), то Flash Player выругается (см. вложение) и предложит прервать выполнение скрипта, если отказаться от предложения, то через еще 15 векунд выскочит опять и т.д. Обойти можно, если разбить выполнение скрипта на несколько кадров, чтобы выполнение одного занимало меньше 15 секунд (как сделано в демонстрации с полем диполя).

[ Вложение ]
flash.gif

Сообщить модератору | | IP: Записан
Сообщение: 43472

Старое сообщение 18-03-2009 15:58
- За что?
SanYa
Житель форума

Дата регистрации: May 2006
Проживает: Тула
Сообщений: 369
Возраст: 35

Рейтинг



George Все, теперь понял о чем ты. У меня такое бывало, только когда ошибку допускал в скрипте и он зацикливался.

Кстати, надысь немного порыскал, нашел довольно симпатичную физику на AS 2, http://www.cove.org/flade/

__________________
кто к нам с чем зачем, тот от того и того...

Сообщить модератору | | IP: Записан
Сообщение: 43475

Старое сообщение 18-03-2009 16:50
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Теперь знакомо... Только можно объяснить к чему это тут?

К тому что физика пускается с определенным интервалом - обычно в 60 fps, а промежуточные значения получаем путем интерполяции соседних результатов. И в итоге маятник их первой демки не будет себя так дерганно вести, да и остальная физика станет помягче.
Ну и конечно же меньший нагруз на CPU.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 43483

Старое сообщение 18-03-2009 21:42
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 09:29. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > Реализация физики для 2d объектов
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024