Форум программистов, компьютерный форум, киберфорум
Игровые движки
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,097
Записей в блоге: 2

Анимация и физический движок

15.09.2015, 14:40. Показов 4010. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте

Хотя к OpenGL это не имеет никакого отношения, но думается именно здесь большинство людей которым это будет интересно.

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

Чего хотелось бы: уметь делать такую анимацию автоматом/пулеметом для напр 100 (или 1000) бабочек и (обязательное требование) с учетом collision detection. Назначить каждой бабочке свой цветок - не вопрос, причем число цветков не обязано совпадать. Но вот все остальное - в полном тумане. Ясно что если хотим collision - нужен движок физики. Есть такой (Bullet), и есть опыт его использования. И тут много проблем. Конечно можно сделать бабочку "rigid body", но крылышками она уже просто так не замашет - body движется под действием сил (а не "как хочу"). Подлетая к цветку она должна сесть на него задницей и как-то держаться. А как? (идей пока нет). Ну и "облетать препятствия" - еще круче.

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

Не исключено что "хотелка" великовата - ну помечтать иногда тоже не вредно

С уважением
Игорь
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.09.2015, 14:40
Ответы с готовыми решениями:

Стоит ли писать свой физический движок?
Здравствуйте, имеется около 5к объектов расположенных далеко друг от друга, перемещающихся в 3D пространстве. Это просто точки с массой,...

Физический 3D движок
Я щас изучаю 3d движок Papervision3D, хочю сделать простые гонки, но в этом движке нет физики. Я слышал что есть какойто физический...

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

28
9953 / 2954 / 497
Регистрация: 05.10.2013
Сообщений: 8,053
Записей в блоге: 242
17.09.2015, 17:27
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от snake32 Посмотреть сообщение
Скажешь: ДА, но я ж могу изменить траекторию, пока проектирую их в юнити. Это просто!
Я: А если их 100500? Все 100500 траекторий будешь моделировать руками? Это ведь просто!
Задача генерации траекторий уже не касаются Unity никаким боком. Это чисто алгоритмическая задача. Я просто для примера расставил руками, а на деле написанный скрипт должен сгенерировать Waypoint'ы и расставить в нужных местах для каждой бабочки.

Цитата Сообщение от Igor3D Посмотреть сообщение
А если близко (напр 2 на 1 цветке) придется и collision крыльев считать.
Зачем делать Mesh Сollider для крыльев?

Цитата Сообщение от Igor3D Посмотреть сообщение
Только 10 - уже геморрой капитальный. Поэтому-то дизайнер и хочет иметь такой тул
Создавать руками траектории никакой дизайнер не будет. Я сделал траекторию руками просто для примера, на деле количество и расположение точек траекторий для каждой бабочка должен считать написанный вами (или кем-то) алгоритм.

Цитата Сообщение от Igor3D Посмотреть сообщение
В роли спирали - анимация.
Это как понять? Давайте правильно употреблять термин "анимация". Я его понимаю, что это движения, которые можно сохранить в FBX файл, поэтому для меня эта фраза совершенно непонятна: "В роли спирали - анимация."
0
17.09.2015, 17:55

Не по теме:

Цитата Сообщение от 8Observer8 Посмотреть сообщение
Задача генерации траекторий уже не касаются Unity никаким боком.
Да ладно! Не может быть! Как же юнити? Тему треда не подскажешь? :rofl:

0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,097
Записей в блоге: 2
17.09.2015, 18:17  [ТС]
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Задача генерации траекторий уже не касаются Unity никаким боком.
Это точно? Уверены? Просто жаль если так - хотелось бы (творчески) позаимствовать оттуда.

Цитата Сообщение от 8Observer8 Посмотреть сообщение
Это как понять? Давайте правильно употреблять термин "анимация". Я его понимаю, что это движения, которые можно сохранить в FBX файл,
Кадр анимации - это данные однозначно определяющие положение и поворот объекта любым способом - напр матрица или позиция + углы поворота или кватернион. Конечно анимация может иметь и массу др данных (напр для материала, текстур) но в данном случае они нас не интересуют.

Цитата Сообщение от 8Observer8 Посмотреть сообщение
поэтому для меня эта фраза совершенно непонятна: "В роли спирали - анимация."
В анимации бабочка кружится и летит. Упрощая (осредняя) этот путь мы задавим кружение (частота которого выше) и останется движение по какой-то достаточно гладкой траектории. Т.е. если бы она подымалась по спирали, то осредненный путь - ось спирали, и для каждого кадра анимации мы знаем чему он соответствует на этой оси. Тогда можно вместо оси подставить другую (путь что получился в Bullet) и на нее намотать ту же самую спираль.

Не воспринимайте это слишком серьезно, это всего лишь весьма сырые соображения.
0
9953 / 2954 / 497
Регистрация: 05.10.2013
Сообщений: 8,053
Записей в блоге: 242
17.09.2015, 18:59
Да ладно! Не может быть! Как же юнити? Тему треда не подскажешь?
Анимация и физический движок.

1) Анимация - это как ТС написал: "крылышками (бяк-бяк-бяк-бяк)". Так вот опять это легко сделать в Unity, просто найти готовую 3D модель и за 5 минут сделать анимацию в Mecanim: один раз развернуть крылышки и свернуть - на этом анимация махания крылышками запишется. Её можно вызывать из скрипта.

2) Физический движок. Опять же работать с физ. движком PhysicsX в Unity прозрачная. Для бабочки будет сферический коллайдер.

3) Траектории движения множества бабочек. Пишется алгоритм на C#, который генерирует N траекторий для N бабочек.

Добавлено через 3 минуты
Цитата Сообщение от Igor3D Посмотреть сообщение
Это точно? Уверены? Просто жаль если так - хотелось бы (творчески) позаимствовать оттуда.
Не уверен, может кто-то подобные задачи уже решал. Можно посмотреть в разделе Scripting на Asset Store
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,097
Записей в блоге: 2
18.09.2015, 08:06  [ТС]
Цитата Сообщение от snake32 Посмотреть сообщение
Да ладно! Не может быть! Как же юнити?
Ну вообще-то примерчик (что Ваня склепал) произвел на меня большое впечатление. Да, мощнейший инструментарий, "руками" такое наладить ой непросто. Но, к сожалению, не в тему

Цитата Сообщение от 8Observer8 Посмотреть сообщение
3) Траектории движения множества бабочек. Пишется алгоритм на C#, который генерирует N траекторий для N бабочек.
Вы четко разделяете, типа "вот траектории", а "вот анимация(и)", но если эти вещи изолированы - они "не срастутся". Траектория - это не просто "набор точек", а еще и повороты/ориентация бабочки в пр-ве (и не только). Напр

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

ВСЕ данные что я перечислил (а найдутся и др) в анимации уже ЕСТЬ. А начиная генерировать путь "с нуля" их еще надо как-то задать - и я в упор не вижу как
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
18.09.2015, 16:20
Цитата Сообщение от Igor3D Посмотреть сообщение
Есть такой (Bullet),
Bullet софтверный. А PhysX аппаратный этим и вытеснил.
Цитата Сообщение от Igor3D Посмотреть сообщение
"облетать препятствия" - еще круче.
Вот может как-то поможет =).
Есть такая игра Freelancer так вот там корабль на автопилоте облетает астероиды плавно + физика от удара когда этот автопилот глючит )). Скорей всего движения корабля задается какраз силой т.к. там физ движок. Игрушка вроде 2003 года.

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

Возможно стоит погуглить в направлении космических леталок типа: “облет препятствий кораблем” и подобные темы. Например : http://plawius.com/prototype/?lang=ru
Попробуйте связаться с разработчиками для подсказки как они делали в общих чертах или других схожих проектов.

Добавлено через 59 минут
А вот пару кликов по этому запросу. Сам удивлялся как они так сделали в игре…
Похоже эта задача называется Pathfinding Algorithms
http://gamma.cs.unc.edu/RVO2/
А вот их типы.
http://gamedev.stackexchange.c... algorithms
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,097
Записей в блоге: 2
21.09.2015, 10:48  [ТС]
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Возможно стоит погуглить в направлении космических леталок типа: “облет препятствий кораблем” и подобные темы.
Ну до облета препятствий еще далеко как до небес Тут вообще хоть какой-то путь иметь. Вот что есть сейчас

Объекту (rigid body) назначается конечная точка и указывается величина прилагаемой силы. И точка и сила могут меняться во времени. Сила работает по Ньютону F = m * a, то есть на каждом кадре вычисляем вектор ускорения и добавляем его к вектору скорости объекта. Это впрочем совсем не значит что объект прилетит куда назначено - на него могут влиять др силы, или он может упереться в препятствие. Болезненная проблема - приземление. То есть прилететь-то все же прилетел, но как попало "прилип" к месту назначения, часто еще и "дергается" там.

И вот есть хороший, интересный путь сделанный пользователем - как его задействовать? Можно тупо сделать объект "kinematic" - тогда его можно двигать самому, без физики. Но на такой объект никто не сможет повлиять, т.е. сам он может толкать других, но не наоборот
0
21.09.2015, 10:53

Не по теме:

Цитата Сообщение от Excalibur921 Посмотреть сообщение
А PhysX аппаратный
Аппаратный только для карт nVidia. Говорят, есть ещё видеокарты AMD(ATI) Radeon. =)

0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,097
Записей в блоге: 2
22.10.2015, 08:26  [ТС]
Через некоторое время вернулся к этой задаче. В первую очередь почитал теорию - и все кажется не так уж мрачно. Обсуждается здесь Стая, рой и.т.п. Кому интересно - присоединяйтесь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.10.2015, 08:26

Физический движок
Я хочу создать игру о танках в 2D, где важна физика полёта снаряда, прошу помощи в реализации этой идеи. Для тех, кому непонятна мысль,...

Физический движок с вращением
Здравствуйте. К сожалению, большинство туториалов содержит движки без вращения, а там где оно есть, я не могу найти его хоть какое то...

Простейший физический движок
Добрый всем день! Сразу к сути! Есть нарисованный человечек управляемый с помощью стрелок клавиатуры. На него действует нечто вроде...

Разработать физический движок
Доброго времени суток, форумчане! Столкнулся с проблемой, возможно, не свойственной Java. Есть задание (показано в картинке)....

Физический движок Box2d, сборка статической библиотеки
Здравствуйте. Я новичок и решил впервые собрать статическую библиотеку из Box2D. При первой попытке получил ошибку Embarcadero C++...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru