Вода и другие жидкости наиболее сложны для симуляции в играх и анимации. Причина кроется не только в физических свойствах жидкости из-за действия гравитации, но и во влиянии сторонних факторов, таких как ветер и препятствия. С ними большинство моделей жидкости справляются уже не так хорошо – по крайней мере, в реальном времени. Разработчикам OsmoEngine удалось на один шаг приблизиться к реализму симуляции жидкости и волн. В версии 0.64 прогресс хорошо заметен, результаты можно назвать фотореалистичными.
Видеоролик выше просчитывался на системе с процессором Intel Core i7-4820K и видеокартой NVIDIA GeForce GTX 980 Ti в реальном времени. К сожалению, доступной информации о OsmoEngine не так много. Мы не знаем, является ли движок полностью собственной разработкой или он представляет собой расширение, например, Unreal Engine 4. Также не совсем понятно, можно ли с помощью OsmoEngine просчитывать только воду и жидкости, или движок может взять на себя другие задачи. Скорее всего, движок ориентирован именно на воду, и его можно интегрировать в другие игровые движки.
Мы постараемся узнать подробности о движке и технических демонстрациях. Здесь уместно упомянуть и NVIDIA, которая достигла лучших результатов в симуляции жидкостей и воды – пусть даже в играх пока используются не все технологии.
Для симуляции жидкости NVIDIA использовала технологию, схожую с технологией освещения VXGI. Пространство разделяется на 3D-сетку. Получающиеся 3D-кубики или воксели характеризуются разными метаданными, они могут заполняться жидкостью, если по расчетам она должна находиться в данной точке пространства. Свойства вокселей могут быть совершенно различными, например, указывать проницаемость света, а также направление и цвет лучей света, излучаемых вокселем.
Для симуляции жидкостей используются похожие свойства, в том числе направление действия гравитации и вязкость жидкостей. Описывается и взаимодействие с другими вокселями. NVIDIA рассказала о новых технологиях вместе с анонсом архитектуры Maxwell, на видео вы можете посмотреть демонстрацию с 2:50.