Форум программистов, компьютерный форум, киберфорум
Наши страницы

Игровые движки

Войти
Регистрация
Восстановить пароль
 
 
Igor3D
940 / 554 / 65
Регистрация: 01.10.2012
Сообщений: 2,695
#1

Анимация и физический движок - Игровые движки

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

Здравствуйте

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

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

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

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

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

С уважением
Игорь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2015, 14:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Анимация и физический движок (Игровые движки):

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

Анимация в OpenGL, а где собсно, анимация? - OpenGL
// Bounce.cpp // Demonstrates a simple animated rectangle program with GLUT // OpenGL SuperBible, 3rd Edition // Richard S. Wright...

2д Движок - Графика и игры
Наконец-то закончил одно дельце))) Могу взяться за то что хотел.За написание игры) Конечно вообще главная идея писать её на андроид.Но...

Браузерный 3D движок - Графика и игры
Посоветуйте хороший браузерный 3D движок. Модераторы, можно как то исправить название темы? Задел кнопку, и получилась фигня. Должно было...

Подскажите 2д движок - Графика и игры
Подскажите пожалуйста наилучший движок для 2д игр, чтобы был на С++, и желательно чтобы был навороченный, типа система частиц, редактор,3д...

Игровой движок - Графика и игры
Всем привет! У меня к вам вопрос: Я прочитал про Ogre3D, и понял, что это вовсе не игровой движок, а графический. Посоветуйте мне...

28
8Observer8
1842 / 1168 / 154
Регистрация: 05.10.2013
Сообщений: 3,815
Записей в блоге: 55
15.09.2015, 16:23 #2
По поводу модели бабочки. Вы умеете моделировать в 3D редакторах? Скорее всего - нет. Поэтому нужно будет найти через поисковик Free версию с анимацией: butterfly 3d model fbx

Приложение лучше делать на Unity. С нуля вы, скорее всего, не сделаете. Если и сделаете на DX или OGL, то только через 4-5 лет (говорят DX изучается быстрее, чем OGL). Не дойдёт до бабочек. А с Unity (если хорошо взяться), то за неделю научитесь. Очень простой движок. Полно туториалов по любому поводу. Самое то.
0
Igor3D
940 / 554 / 65
Регистрация: 01.10.2012
Сообщений: 2,695
15.09.2015, 18:02  [ТС] #3
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Приложение лучше делать на Unity.
Так вопрос не стоит, см. что нужно получить на выходе.

"Бабочка(и)" - просто пример. Задача не та или иная конкретная сцена, а в общем виде: "размножить" имеющуюся анимацию, обязательно с collision detection. А откуда возьмется исходная для размножения - не переживайте, найдется.
0
8Observer8
1842 / 1168 / 154
Регистрация: 05.10.2013
Сообщений: 3,815
Записей в блоге: 55
15.09.2015, 18:51 #4
Цитата Сообщение от Igor3D Посмотреть сообщение
а в общем виде: "размножить" имеющуюся анимацию
Где будете создавать анимацию? Это можно сделать в 3DsMax, Maya - у которых есть студенческая лицензия. Можно в бесплатном Blender. Потом экспортировать, например, в FBX файл. Далее, импортировать в Unity. Создать один префаб. Настроить анимацию в Mecanim, написать скрипт включения анимации при определённых условиях и размножить объект с анимацией из скрипта. Коллайдеры будут на объекте. Они тоже создаются в 3D редакторах.

Цитата Сообщение от Igor3D Посмотреть сообщение
но крылышками она уже просто так не замашет - body движется под действием сил (а не "как хочу")
Не под действием сил, а как вы создадите анимацию, например, в 3DsMax:
0
Igor3D
940 / 554 / 65
Регистрация: 01.10.2012
Сообщений: 2,695
16.09.2015, 11:00  [ТС] #5
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Не под действием сил, а как вы создадите анимацию, например, в 3DsMax:
Вы исходите из предположения что все будет скармливаться движку Union, а он уж займется и физикой, и скриптами и всем остальным. Это не тот случай, не то что я предложил обсудить.

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

Заставить бабочку махать крыльями в Bullet можно, но для этого надо немало постараться: создать constraint (крепление крылышек к телу) и прикладывать вращающую силу к каждому крылу. Ну это относительно несложно если задано аналитически (напр какое-то число взмахов в секунду) - но как это выдрать из анимации? Др словами как рассчитать силы которые имели бы тот же эффект что и заданная анимация?
0
8Observer8
1842 / 1168 / 154
Регистрация: 05.10.2013
Сообщений: 3,815
Записей в блоге: 55
16.09.2015, 12:02 #6
Цитата Сообщение от Igor3D Посмотреть сообщение
Но это работа дизайнера, программисту здесь делать нечего.
Как раз таки зная API Unity программист может написать алгоритмы манипурирования объектами как угодно. Работа дизайнера-моделиста - создать 3D модель, он же или аниматор - создаст анимации, далее экспортирует в FBX файл. Потом уже вступает в работу программист, который импоритрует модель и пишет игровые алгоритмы, настраивает физику и т.д.

Цитата Сообщение от Igor3D Посмотреть сообщение
Плохо или хорошо, но есть движок Bullet а Uinion нету
Нам есть физический движок не хуже - PhysX от NVIDIA. Почитайте про Unity в вики.

Цитата Сообщение от Igor3D Посмотреть сообщение
но как это выдрать из анимации? Др словами как рассчитать силы которые имели бы тот же эффект что и заданная анимация?
Самый быстрый и логичный способ - это создать анимации в 3D редакторах, либо обвешивают, к примеру, человека датчиками и записывают разные анимации. Врядли, конечно, на бабочку можно нацепить датчики, но определённо намного выгоднее создать анимацию, например, в 3DsMax, Blender и т.д. А программист уже на скриптах опишет, при каких условиях запускается, та или иная анимация.
0
Igor3D
940 / 554 / 65
Регистрация: 01.10.2012
Сообщений: 2,695
16.09.2015, 14:01  [ТС] #7
По поводу смены движка и создания анимации - мне нечего добавить к тому что я уже сказал в предыдущем посте.

Цитата Сообщение от 8Observer8 Посмотреть сообщение
Потом уже вступает в работу программист, который импоритрует модель и пишет игровые алгоритмы, настраивает физику и т.д.
Цитата Сообщение от 8Observer8 Посмотреть сообщение
А программист уже на скриптах опишет, при каких условиях запускается, та или иная анимация.
Хорошо, допустим я программист вступивший в работу. Я имею модель той же бабочки и ее "эталонную" анимацию. Нужно создать 100 таких бабочек одну за одной, для каждой известны только ее начальное и конечное положения. Разумеется с исходной анимацией они не совпадают.

Ваши (или наши) действия?
0
8Observer8
1842 / 1168 / 154
Регистрация: 05.10.2013
Сообщений: 3,815
Записей в блоге: 55
16.09.2015, 16:51 #8
Цитата Сообщение от Igor3D Посмотреть сообщение
Нужно создать 100 таких бабочек одну за одной, для каждой известны только ее начальное и конечное положения. Разумеется с исходной анимацией они не совпадают.
Я не понимаю, что за "начальное и конечное положения"?

Для бабочки предлагаю такие анимации для начала записать:
  • Fly.anim - бабочка в полёте машет крыльями
  • Idle.anim - бабочки сидит, плавно открывая и закрывая крылья, шевелит усиками
  • Eat.anim - бабочка ест пыльцу

Бабочки машут крыльями одинаково. Можно для разнообразия сделать 10 бабочек, которые немного по-разному себя ведут. Из скрипта в их можно сделать по 100 штук в цикле из нескольких префабов. Для каждого вида бабочки свой префаб.
0
Igor3D
940 / 554 / 65
Регистрация: 01.10.2012
Сообщений: 2,695
17.09.2015, 10:08  [ТС] #9
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Я не понимаю, что за "начальное и конечное положения"?
Пример

Дано: есть комната, в ней сидят 3 бабочки: одна на полу, другая на стене, третья на потолке. На столе ваза с 3 цветками. Требуется: по команде извне все 3 снимаются с места, и. покружившись, садятся каждая на свой цветок.

Для одной из бабочек заготовлена анимация, ее можно просто включить. Но что делать для остальных двух?
0
snake32
1494 / 1058 / 153
Регистрация: 26.02.2009
Сообщений: 3,943
Записей в блоге: 5
17.09.2015, 10:27 #10
Igor3D, я не понимаю зачем двигать крыльями через физ движёк? Достаточно тупой анимации. С точки зрения физ.движка бабочка будет сферой. То есть разные представления одного объекта для разных движков: для физики - сфера для графики красивый анимированный мэш с текстурами.

Цитата Сообщение от 8Observer8 Посмотреть сообщение
Я не понимаю, что за "начальное и конечное положения"?
В рандомном месте( вне видимого экрана ) появляется бабочка( имеет начальное положение ). В момент генерации этой бабочки становится известно к какому цветку она полетит( конечное положение ).
Igor3Dу нужно сгенерить траекторию. Но не скучную прямую. Так как существует много бабочек одновременно то возможно они в каких-то местах траектории пересекутся. Нужно изменить прямую так чтобы бабочки не пролетали сквозь друг друга, но достигли конечной цели - цветка.
Ну-ка! Скриптик для Юнити в студию! Там же всё так просто и быстро!
0
8Observer8
1842 / 1168 / 154
Регистрация: 05.10.2013
Сообщений: 3,815
Записей в блоге: 55
17.09.2015, 10:54 #11
Как раз основное время уйдёт на написание алгоритма генерации траекторий. Если бы у меня был такой алгоритм, который генерировал бы массив точек для каждой бабочки - Waypoints, то на Unity не составило труда сделать приложение. Нужно было бы снять галочку "Use Gravity". И написать скрипт, который бы при достижении Waypoint менял бы вектор скорости GetComponent<Rigidbody>().velocity на вектор, который бы указывал на следующий Waypoint.
0
snake32
1494 / 1058 / 153
Регистрация: 26.02.2009
Сообщений: 3,943
Записей в блоге: 5
17.09.2015, 11:03 #12
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Если бы у меня был такой алгоритм
Так у Igor3Dа тоже нет такого алгоритма. Собственно в этом и вопрос темы. Осталось дело за малым - хотя бы словесно описать этот алгоритм.
0
Igor3D
940 / 554 / 65
Регистрация: 01.10.2012
Сообщений: 2,695
17.09.2015, 11:29  [ТС] #13
Цитата Сообщение от snake32 Посмотреть сообщение
Так у Igor3Dа тоже нет такого алгоритма. Собственно в этом и вопрос темы.
ДА, совершенно верно.

Цитата Сообщение от snake32 Посмотреть сообщение
В рандомном месте( вне видимого экрана ) появляется бабочка( имеет начальное положение ). В момент генерации этой бабочки становится известно к какому цветку она полетит( конечное положение ).
Да, да, именно так

Цитата Сообщение от snake32 Посмотреть сообщение
Igor3D, я не понимаю зачем двигать крыльями через физ движёк? Достаточно тупой анимации. С точки зрения физ.движка бабочка будет сферой. То есть разные представления одного объекта для разных движков: для физики - сфера для графики красивый анимированный мэш с текстурами.
Согласен, для бабочки это удачное решение. Но в общем случае конверсия из анимации в силы нужна (см ниже)

Цитата Сообщение от snake32 Посмотреть сообщение
Igor3Dу нужно сгенерить траекторию. Но не скучную прямую. Так как существует много бабочек одновременно то возможно они в каких-то местах траектории пересекутся. Нужно изменить прямую так чтобы бабочки не пролетали сквозь друг друга, но достигли конечной цели - цветка.
Не пролетали сквозь друг друга - это еще цветочки. Они могут пересекать др объекты в сцене (те же стены). Да, Bullet это отработает, но вероятный рез-т = бабочка тычется и тычется в сцену (как ночные мотыльки).

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

Цитата Сообщение от snake32 Посмотреть сообщение
Ну-ка! Скриптик для Юнити в студию! Там же всё так просто и быстро!
Присоединяюсь к запросу
0
8Observer8
1842 / 1168 / 154
Регистрация: 05.10.2013
Сообщений: 3,815
Записей в блоге: 55
17.09.2015, 13:27 #14
Цитата Сообщение от Igor3D Посмотреть сообщение
Присоединяюсь к запросу
Почему этот алгоритм я должен писать? Я говорил, как вы можете съэкономить время и облегчить работу, что на Unity лучше делать, потому что все техничекие детали можно на него возложить: настройка анимации хлопаться крыльями, физика столкновений и т.д., а 3D модель найти в интернете (или сделать самому), импортировать в Unity и можно прямо в нём записать анимации махания крыльями с помощью Mecanim. Действительно, можно сферического коллайдера вполне хватит. А алгоритм генерации WayPoint'ов пишите, ищите или заказывайте сами. Алгоритм должен выплёвывать массивы Waypoint'ов для каждой бабочки перед каждый запуском.

Я вместо бабочки сделал кубик (который потом можно заменить на модель), а WayPoint'ы расставил вручную очень неровно, поэтому так движется отрывисто и неровно. Можно сделать много WayPoint'ов, тогда движения будут плавными.

https://lh3.googleusercontent.com/7G...6tI=w1342-h503

В скрипт получился очень простой:

Fly.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using UnityEngine;
using System.Collections;
 
public class Fly : MonoBehaviour
{
    public Transform[] wayPoints;
 
    public float speed = 3f;
 
    private int current = 0;
    
    void FixedUpdate ()
    {
        if (wayPoints.Length == 0)
        {
            return;
        }
 
        Vector3 pos = Vector3.MoveTowards(transform.position, wayPoints[current].position, speed);
        GetComponent<Rigidbody>().MovePosition(pos);
 
        if (wayPoints[current].position == transform.position)
        {
            current = (current + 1) % wayPoints.Length;
        }
    }
}
0
Миниатюры
Анимация и физический движок  
Вложения
Тип файла: rar Butterflies_v1.0.0 (Source).rar (933.9 Кб, 5 просмотров)
Тип файла: rar Butterflies_v1.0.0 (Win_x86).rar (8.10 Мб, 5 просмотров)
Igor3D
940 / 554 / 65
Регистрация: 01.10.2012
Сообщений: 2,695
17.09.2015, 13:44  [ТС] #15
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Я говорил, как вы можете съэкономить время и облегчить работу, что на Unity лучше делать, потому что все техничекие детали можно на него возложить: настройка анимации хлопаться крыльями, физика столкновений и т.д., а 3D модель найти в интернете (или сделать самому), импортировать в Unity и можно прямо в нём записать анимации махания крыльями с помощью Mecanim.
Спасибо что потратили на меня время, но вопрос/тема именно алгоритм "множественной анимации" (а не связанные с ней вещи)

Не по теме:


Да, Ваня, Unity Вас никак не изменило

0
17.09.2015, 13:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2015, 13:44
Привет! Вот еще темы с ответами:

C++ 3D игровой движок - Графика и игры
Добрый день. Подскажите пожалуйста трёхмерный игровой движок, который можно подключить к Visual Studio (что бы движок являлся набором...

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

Игровой движок - Графика и игры
Доброго времени суток. Планирую писать игровой движок(только не надо говорить что это не реально)). Движок планируется уровня Cry Engine 3,...

2d движок на с++ ПОМОГИТЕ - Графика и игры
Помогите пожалуйста программисты,появилось желание сделать 2D игру создав при этом движок ,но что должно входить в движок именно для 2D я...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.