2012-03-02 8 views
1

У меня есть трехмерная матрица объектов воксела, которую я хотел бы использовать для хранения состояния некоторых основных принципов физики. Цель здесь - представить объем в режиме реального времени (~ 30FPS) в видеоигре. Я хотел бы попытаться иметь объем, способный к следующим: 1. Хранить жидкости и типы газов различного веса и следовать основным принципам взаимодействия. Например, кислород легче воды. 2. Уметь определять давление. 3. Уметь взаимодействовать с «твердыми» объектами. Таким образом, полый 3D-блок может хранить что-то, что не «утечка».Простой исходный код динамики газа/жидкости

Все это может быть очень простым и может отказаться от любых «точных» испытаний.

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

ответ

4

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

+0

Спасибо некоторые ключевые слова там (SPH) дали некоторые новые ресурсы для меня. Однако я придерживаюсь точки SPH в том, что кажется довольно сложно отображать частицы или «метабазы» в трехмерных многоугольниках. По крайней мере, с Voxels есть хорошо документированные и реализованные алгоритмы для этого (Marching Cubes), и у меня уже есть реализация этого. Однако я буду продолжать смотреть. –

+0

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

+0

@ S.Richmond На самом деле алгоритмы генерации метаболей и вокселей сетки более или менее одинаковы. Оба полагаются на то, что вы предоставляете плотность поля, чтобы дать место для границы (ваша многоугольная грань) - Marching Cubes - всего лишь один пример. – cmannett85

2

Обычный подход в 3D-графике, который я видел, моделируется на основе воксельных решений уравнений Navier-Stokes. Поиск этого должен дать много документов о подходах к реализации этого метода в коде или даже готовых библиотеках, но, как заявил Azrael3000, вычислительная текучесть такая же сложная, как кажется - и очень математика тяжелая. К счастью, его также можно легко разбить на несколько потоков, поэтому лучший способ добраться до вашего 30FPS - это толчок вычислений на GPU.

Еще одна вещь, которую следует помнить, - «вокселы» и «рамки» - это графические термины. Подход к уравнениям (которые сохраняются непрерывными функциями) называется FDTD - Конечный разностный домен времени. Что на английском языке означает выборку поля как дискретные точки во времени и пространстве.

+0

I второй это. Графический процессор - это определенно способ распараллеливания. – Azrael3000

+0

Есть ли у вас все какие-либо вспомогательные ресурсы? Я уже немного поработал с поиском в Интернете и мало что рассказал о реализации с использованием Voxels. –

+0

Идти прямо к решению графического процессора: http://http.developer.nvidia.com/GPUGems/gpugems_ch38.html.Также см. Мое редактирование. – cmannett85