Мне нужно сделать симуляцию с камнем, брошенным через стеклянное окно. Как я могу это сделать?
Я имею в виду, я думал о создании 3D-модели камня и стекла в 3D Studio Max 2012, разбил стекло и экспортировал обе модели в XNA 4.0 как .x модели. Затем в XNA сделаю анимацию - напишу свой физический движок. Возможно ли так? Можно ли разрушить стекло в XNA после удара или я должен сделать это в 3DS Max? Под «разрушением стекла» я имею в виду отсоединение некоторых ранее разбитых стеклянных бит друг от друга, потому что в зависимости от начальной скорости и веса камня, а также от сопротивления (твердости?) Стекла (все определяется пользователем), биты будут отсоединяться от друг друга по-разному.
Создайте необработанную панель и разбитую панель. Когда вы столкнетесь с коллизией, выключите необработанную версию и начните использовать разбитую панель.
Если вы бросаете один камень (несколько одинакового размера) в окно, то вы можете проделать длинный путь с вашей 3d-моделью разбитой панели (смоделируйте осколки на месте и затем запустите простую физическую симуляцию на каждом из осколки, чтобы имитировать их падение / полет). Если камера не находится слишком близко (или в замедленном режиме), вам не нужно делать столкновения между деталями - только с окружающей геометрией (плоскостью земли?). Не забывайте распылять некоторые эффекты частиц на облако мелких стеклянных частиц, которые сопровождают разрушение.
Если вы делаете разбитую панель с предположением, что камень ударяет по центру, то вы можете масштабировать фигуры на основе фактической позиции удара, чтобы получить довольно хорошо выглядящий разрыв для большинства попаданий.
источник
Если вы скачаете Библиотеку Bullet Physics, у нее есть образец, включающий разбивающееся стекло, и вам понадобится что-то вроде пули в любой игре с разбивающимся стеклом.
Изменить: Пуля будет отличной демонстрацией для моделирования вашего собственного двигателя после.
источник
Большое спасибо за ваши ответы и бесценную помощь. Мне наконец удалось построить проект. Я испробовал все ваши предложения и в конце концов выбрал свой путь для этого моделирования.
Для физического движка я использовал bulledsharp (оболочку для маркеров физики для c #), но важно использовать самый последний, скомпилированный вами с использованием источника bulletsharp из sourceforge svn, а также из свежих источников физики bullet. Не тот предварительно скомпилированный .dll, доступный для загрузки с веб-сайтов. Предварительно скомпилированная версия была слишком старой для меня и не включала в себя некоторые доработанные функции. Я также узнал, что для простых симуляций, когда вам не нужна продвинутая графика, лучше использовать более старый 3dsmax, то есть 2011 (не самый последний 2012), для разработки модели и т. Д. Главным образом, потому что есть больше плагинов и экспортеров. Более того, очень полезно проверить учебники во всех доступных фреймворках (sharpdx, xna, xna4, slimdx, c ++ и другие).
Наконец, мой подход состоял в том, чтобы построить стеклянную стену, используя действительно маленькие кусочки куба. Конечно, чтобы запустить симуляцию, у вас должна быть действительно мощная машина. Если у вас есть что-то менее мощное, вы можете использовать большие кубы. Важно сделать все кубики, созданные со спящим островным государством. Теперь каждый кусок имеет свое представление в двухмерном массиве с плавающей точкой. Число там указывает, какова сила соединения между двумя кубами. Когда камень брошен и обнаружено столкновение, сила вычисляется для каждого куба в стене (включая массу и скорость камня, массу и размер куба и расстояние от центра столкновения) и вычитается из массива в круге. образец Те кубы, которые после вычитания имеют нулевую или меньшую прочность соединения, становятся активными. Это заставляет детенышей двигаться.
Это оно. Спасибо за вашу помощь.
источник