@s2sk

Как создается единая физическая-графическая модель?

Всем привет.

Научился работать с DirectX C++, рисовать там 3D модельки все такое. Примерно понял как все устроенно. Теперь стал интерисовать вопрос - как прикрутить к этому всему физику (не интересует уже готовое, хочу сам разобраться как работает)? Езда на автомобили, анимации, колизия объектов. И как правильно загружается колизия объектов в движок? Получается что так же грузятся вершины? Ну, а если колизия не совпадает с обликом объекта?

И небольшой оффтоп:

Не помню как называется технология которая создает динамические анимации (юзается в GTA4, GTA5 и еще пару игр), только дело в том что и "еще пару игр". А почему так мало игр ее использует? Ведь это придает игре реализм. Неужели это так сложно в реализации? И почему крупные компании не могут реализовать свою такую технологию, а покупают ее у других?
  • Вопрос задан
  • 570 просмотров
Решения вопроса 2
@MarkusD Куратор тега C++
все время мелю чепуху :)
И почему крупные компании не могут реализовать свою такую технологию, а покупают ее у других?

Ответ будет таков
5a2b8fc21c685856187802.jpeg

Если компания крута, она, как мыслящий организм, прекрасно поймет, на что время тратить разумно, а на что - нет.

А почему так мало игр ее использует?

Скажем прямо, с "еще парой игр" ты слегка промахнулся, ведь Morpheme и Euphoria от Natural Motion используется далеко не в паре просто игр. Полный список игр не раскрывается и не может быть раскрыт по простым причинам своей масштабности. Это очень распространенный и очень мощный инструмент.

Теперь стал интерисовать вопрос - как прикрутить к этому всему физику.

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

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

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

Более подробно можно узнать в соответствующих источниках. Нужна секция: "Game engine development".
Часть этих книг есть в русском переводе.
Ответ написан
Комментировать
profesor08
@profesor08
Вот у тебя есть фигура выкрученная-закрутень, ее модель очень сложная, много вершин (миллионы, почему нет). По понятным причинам просчитывать коллизии для всех ее вершин, в реальном времени - очень затратное дело. Чтоб решить эту проблему, ты берешь куб размером с основную фигуру. И проверяешь коллизии для него. Если коллизия произошла, ты можешь как-то обработать этот момент уже для самой фигуры, проиграть какую-то анимацию.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Griboks
@Griboks
Физический движок вообще никак не связан с графическим. Две разные программы. Даже сами объекты взаимодействуют через коллайдеры, а не через меши.
Делается физика по упрощённым научным законам (f=am, x=x0+v0t+at^2/2).
Ответ написан
@AlexSku
не буду отвечать из-за модератора
1) Есть библиотека PhysX у NVidia
2) В Матлабе (Симулинк) есть 3D Анимация (3D-редактор), к которой можно привязать физику (много примеров)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы