Простой?
Если действительно простой — реализуйте.
А так, идея без реализации стоят ровно столько-же, сколько разговоры за барной стойкой. Это уже избитая тут тема.
Во первых я не в команде разработчиков, что бы реализовывать свои идеи в проекте к которому у меня нет доступа, во вторых если вы действительно сомневаетесь, я, дабы не разводить здесь флуд, могу вам в личку наипсать простейший алгоритм определение позиции генерации пены
Опишете ли вы его мне словесно тут или в личке, это так и останется пустословством. Если у вас есть алгоритм генерации пены, то вы знаете требования для его работы, и т.о. вы можете сами его реализовать, смоделировав условия. Даже если ваша симуляция будет медленнее чем на видео, она покажет что ваш алгоритм работает или не работает. И вовсе необязательно для этого быть в команде разработчиков NVidia.
А вот с аквариумами как раз может и красиво, но совершенно не реалистично. Физика воды есть, а вот физика стекла крайне убога, да еще и нет влияния воды на стекло (есть только стекла на воду). Это если докапываться, конечно. А так, да, красиво.
Гидродинамика сглаженный частиц — очень мощный аппарат, позволяющий моделировать механическое поведение не только воды, но и почвы, кровеных сосудов, процессы роста растений, плазмотронов, металлов, обрабатываемых фрезами и др.
Извиняюсь за ссылку на ВК, но вот тут можно посмотреть на результаты моделирования этим методом ССЫЛКА Сразу скажу, ресурс не мой.
Чем больше унифицированных ядер в видео-карте — тем реалистичнее будут вода / дым / трассировка лучей / глобальное освещение / прочие красивые штуки. Именно эти вычисления прекрасно распараллеливаются.
Мне кажется физику воды все же не так просто распараллелить, так как частицы с одного края могут зависеть от частиц с другого края.
Это если в одном сосуде и физика «честная».
Для игр конечно можно упрощенную модель сделать (с более вязкой водой).
Намокание объектов — это уже не к физике симуляции воды. Достаточно мокрую текстуру (со всеми слоями, шейдерами) наложить в тех местах, где жидкость соприкасалась с объектом. Если жидкости попало много, то она и так стекает согласно этой демке.
В принципе, вывод достаточно прост: хочешь красивую воду — пиши воксельный движок. А одна из основных их проблем – производительность. Даже учитывая уменьшение количества вокселей за счет увеличения их размера.
Кстати, в варианте с маяком вспомнился последний биошок, но там море было до горизонта и оно съело бы всю мощность современного железа. Хотя, возможно, за счет отсечения невидимых планов и загрубления рассчетов при удалении получилось бы ничего.
Ошибаетесь, это кажется самый популярный кроссплатформенный физический движок, потом идёт Havok. На видеокартах от NVIDIA просто есть аппаратная поддержка.
Частично он прав. Полноценный PhysX с аппартным ускорением работает только на картах NVIDIA, причем даже заблокирована возможность просчитывать физику на карте Нвидиа, а графику на карте другого производителя. Раньше выпускались патчи для дров, позволяющие активизировать PhysX в системах с видеокартами от АМД, но давно уже новых версий патчей не появляется. www.nvidia.ru/object/physx_faq_ru.html
То, что показано в демке явно будет только в системах с аппаратным ускорением, там где его не будет, все будет выглядеть гораздо проще. Что касается консолей, то судя по новостям у PlayStation4 вполне может быть и полноценная аппаратная поддержка PhysX, не смотря на железо на AMD. Т.к. в принципе с технической стороны препятствий нет никаких заставить PhysX аппаратно ускорятся на железе от AMD. Вопросы тут только финансовые.
Жалко что они демки сами не выкладывают, я бы с аквариумом поигрался.
Кстати, вот тут тоже риалтайм на 1 GPU в 2010 году (кажется еще и в 3D) www.youtube.com/watch?v=1JrM4ujLY_A&hd=1
В документе по ссылке не увидел ничего принципиально нового. А вот адекватно плавающие объекты было бы интересно увидеть. А сам алгоритм достаточно простой и 1300 раз реализованный, с небольшими модификациями, да вот хотя-бы http://wonderfl.net/c/pKTB.
Тут смысл не в том, что разработан новый алгоритм, которого нигде не было и ничего подобного мы даже близко не видели. Видели и лучше, но не в играх. NVIDIA в данном случае показывает новые возможности своего физического движка для игр. Таким образом разработчики игр получают в руки готовый инструмент для создания подобной воды в своих играх.
Адекватно плавающие объекты требуют просчета гидростатического давления. В показанных иллюстрациях его, похоже, нет.
Ниже я обратил внимание на то, что при расстреле аквариума струя вытекающей воды не меняется с изменением уровня воды в аквариуме.
Вблизи моделировать маленькими, вдали — большими. Этакий LOD для физики. Такие сцены надо или показывать издали, чтобы шло на большем числе компов и выглядело пафоснее, или рендерить заранее.
Шариков-то в демках на финальных визуализациях не видно. Они показываются скорее для демонстрации того, для каких объемов воды рассчитывается взаимодействие с другими единичными объемами и твердыми телами, а в итоге окончательное местоположение в тот или иной момент времени. Окончательно же каждый единичный объем в виде шарика не отрисовывается-то.
Хватит-не хватит. Прежде чем об этом говорить, надо понять сколько этой памяти нужно. Так же моделирование и визуализация в играх должна быть качественной и подробной близкой к игроку, а чем дальше от него, тем проще они могут быть. Памяти же на видеокартах сейчас довольно много.
Да и это просто очередное развитие физического движка для игр и призвано оно не сделать какие-то точные лабораторные расчеты, а показать более реалистичную воду в играх по сравнению с той, которую мы видим сейчас. Хотя сейчас PhysX и в текущем виде мало где где используется полностью. К слову, в Крайзисе 3 PhysX вообще не используется.
Использовать тот же подход, что и при разбиении объектов на вокселы: крупные массы воды, не контактирующие с другими объектами (в т.ч. атмосферой) моделировать крупными субъединицами, мелкие порции воды, контактирующие с другими телами и/или отрывающиеся от основных масс — более мелкими субъединицами. Но при моделировании больших объемов все равно нужно будет на каком-то этапе переходить от частиц к геометрии+ текстурам (начиная с той дальности, где зритель разницы не заметит)
Это выглядит «неплохо», но на воду похоже лишь отчасти. Сразу же бросается в глаза:
1) отсутствие поверхностного натяжения (в некоторых сценах вода разлетается не на брызги, а на «сопли»
2) отсутствие смачивания поверхностей
3) Отсутствие гидростатического давления (дальность полета и сила струи из разбитого аквариума не зависит от высоты столба оставшейся в аквариуме жидкости).
Да и вязкость явно не соответствует воде. Сильно больше.
До развития воды в играх до уровня «несоответствия по сравнению с реальностью не бросаются в глаза» еще очень далеко. Но печально не это, а то, что в современных играх даже близко к демке ничего не встречается. Все очень и очень убого.
В Half-Life 2, вода на первый взгляд выглядела красиво, и объекты в ней плавали тоже очень реалистично, но вот брызги все портили, и вид на океан с высоты, когда было видно что волны рисуются квадратными полигонами. В каком-то томб райдере было реализовано намокание, но вот не помню только самой Лары ) или же всех объектов. Так в целом и получается, что где-то красиво выглядит, где-то красиво переливается, а все вместе так и нет (
Насколько я понял, глянув статью по ссылке, это одна из модификаций SPH. Знаю ребят, которые смазочный слой в подшипниках скольжения этим методом пытаются моделировать.
Помню, начитался про воду, побежал за диском от 1С — а вода выглядит как говно. Потом только узнал, что такое пиксельные шейдеры и почему Geforce 2MX 400 не держит их :)
Новый 3D алгоритм симуляции воды