Как я могу имитировать разбитое стекло?

Мне нужно сделать симуляцию с камнем, брошенным через стеклянное окно. Как я могу это сделать?

Я имею в виду, я думал о создании 3D-модели камня и стекла в 3D Studio Max 2012, разбил стекло и экспортировал как в XNA 4.0, так и в формате .x. Затем в XNA сделайте анимацию - создайте свой собственный физический движок. Возможно ли так? Можно ли разрушить стекло в XNA после удара или я должен сделать это в 3DS Max? «Разрушая стекло», я имею в виду отсоединить некоторые ранее разбитые стеклянные биты друг от друга, потому что в зависимости от скорости запуска и веса камня и сопротивления (твердости?) Стекла (все определяемые пользователем) биты будут отключены от друг друга по-разному.

10 голосов | спросил toomek308 23 +04002011-10-23T03:23:12+04:00312011bEurope/MoscowSun, 23 Oct 2011 03:23:12 +0400 2011, 03:23:12

5 ответов


5

Разрушение Вороного - это один из подходов, который создает довольно реалистичное разрушение, например. закаленное стекло, обладающее замечательной способностью разрушаться на небольшие, обычно выпуклые фрагменты из-за структурных изменений стекла во время изготовления. Кроме того, учитывая, что у вас есть стеклянное стекло, вам понадобится только 2D Voronoi, а не 3D.

ответил Arcane Engineer 23 +04002011-10-23T16:19:08+04:00312011bEurope/MoscowSun, 23 Oct 2011 16:19:08 +0400 2011, 16:19:08
3

Автоматическое создание разбитых кусков из первоначально цельной сетки довольно сложно, я бы подумал. Если вам просто интересно симулировать динамику осколков, когда они летают по воздуху, сталкиваются и т. Д., То я бы начал с предварительно разбитой сетки, используя прерывистые ограничения или что-то, чтобы сдержать кусочки, пока они не потянутся кроме достаточной силы.

ответил Nathan Reed 23 +04002011-10-23T08:45:40+04:00312011bEurope/MoscowSun, 23 Oct 2011 08:45:40 +0400 2011, 08:45:40
3

Сделайте неразрезанную панель и разбитую панель. Когда вы получите столкновение, отключите неиспользуемую версию и начните использовать разбитую панель.

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

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

ответил M Jellyfish 24 +04002011-10-24T06:20:57+04:00312011bEurope/MoscowMon, 24 Oct 2011 06:20:57 +0400 2011, 06:20:57
2

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

Edit: Bullet станет отличной демонстрацией для моделирования вашего собственного движка после.

ответил Matt Jensen 23 +04002011-10-23T04:35:05+04:00312011bEurope/MoscowSun, 23 Oct 2011 04:35:05 +0400 2011, 04:35:05
1

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

Я использовал bulledsharp (флеш-физический обертку для c #) для физического движка, но важно использовать самую последнюю, скомпилированную самостоятельно с источником bulletsharp из sourceforge svn, а также с самими источниками свежей пули. Не тот, который был предварительно скомпилирован .dll, доступный для загрузки с веб-сайтов. Версия, предварительно скомпилированная, была слишком старой для меня и не включала в себя некоторые важные функции, разработанные далее. То, что я также узнал, заключается в том, что для простого моделирования, когда вам не нужна расширенная графика, лучше использовать более старый 3dsmax, то есть 2011 (не последний 2012), разработать модель и т. Д. В основном потому, что есть больше плагинов и экспортеров. Более того, полезно изучить руководства во всех доступных фреймворках (sharpdx, xna, xna4, slimdx, c ++ и др.).

Наконец, мой подход состоял в том, чтобы построить стеклянную стену, используя действительно маленькие кубики. Конечно, чтобы запустить симуляцию, у вас должна быть действительно мощная машина. Если у вас есть что-то менее мощное, вы можете использовать большие кубики. Важно сделать все кубы, созданные спящим островным состоянием. Теперь каждая часть имеет свое представление в двух массивных массивах поплавков. Число указывает на то, что является прочностью соединения между двумя кубами. Когда камень бросается и обнаруживается столкновение, сила вычисляется для каждого куба в стене (включая массу камня, скорость, массу и размер куба и расстояние от центра столкновения) и вычитается из массива по кругу подобный рисунок. Те кубы, которые после вычитания имеют нулевую или меньшую силу соединения, становятся активными. Это заставляет медвежат двигаться.

Это он. Благодарим за помощь.

ответил toomek308 23 FriEurope/Moscow2011-12-23T18:06:37+04:00Europe/Moscow12bEurope/MoscowFri, 23 Dec 2011 18:06:37 +0400 2011, 18:06:37

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132