Russian Qt Forum

Программирование => Алгоритмы => Тема начата: Igors от Апрель 11, 2011, 14:28



Название: Ветер и препятствия (Cold Wind Blows)
Отправлено: Igors от Апрель 11, 2011, 14:28
Добрый день

Нужно придумать хорошее упрощенное решение для довольно сложной вещи.

Есть сцена в которой 3D объекты состоящие из треугольников. Есть специальный эффект "ветер" (wind) который реализован в виде объекта-сервера. Каждый объект в сцене который подвергается действию ветра (клиент) может запросить силу ветра в заданной точке, wind возвращает вектор (x, y, z) который имеет величину и направление. Что дальше с этим вектором делать - уже дело клиента. Вектор может быть разным в разных точках (турбулентность и все такое).

Все хорошо, но есть "маленькая" фича которую хотелось бы иметь: препятствия. Всем известно что "за стеной ветер не дует", но как это реализовать? Строить BSP, бросать лучи и.т.п - все это весьма сложно да и медленно т.к. запросов может быть много.

Идеи?

Спасибо


Название: Re: Ветер и препятствия (Cold Wind Blows)
Отправлено: m_ax от Апрель 11, 2011, 15:32
Добрый день

Нужно придумать хорошее упрощенное решение для довольно сложной вещи.

Есть сцена в которой 3D объекты состоящие из треугольников. Есть специальный эффект "ветер" (wind) который реализован в виде объекта-сервера. Каждый объект в сцене который подвергается действию ветра (клиент) может запросить силу ветра в заданной точке, wind возвращает вектор (x, y, z) который имеет величину и направление. Что дальше с этим вектором делать - уже дело клиента. Вектор может быть разным в разных точках (турбулентность и все такое).
Здесь имхо противоречие, ибо на векторное поле будет также влиять само расспределение (ri) объектов и их скоростей vi.
Поэтому,
Цитировать
Что дальше с этим вектором делать - уже дело клиента. Вектор может быть разным в разных точках
дело не только конкретного клиента.
Объект по хорошему, должен делать то, (зная векторное поле в данной точке), что положено по законам вашей "физики". И это должен решать не сам конкретный объект, а тот, кто знает в данный момент времени всю информацию о поле, и о всех объектах: их координаты и скорости.

Гамильтониан, короче, должен всё знать и всем управлять)) Или функция Лагранжа)


Название: Re: Ветер и препятствия (Cold Wind Blows)
Отправлено: m_ax от Апрель 11, 2011, 15:43
Да, если рассматривать такую ситуацию, при которой объекты в первом приближении не влияют на поле, то задача просто сводится к нахождению этого векторного поля.
Тогда зачем упоминать вообще об объектах?
Задача: найти поле сил?


Название: Re: Ветер и препятствия (Cold Wind Blows)
Отправлено: Igors от Апрель 11, 2011, 15:48
Гамильтониан, короче, должен всё знать и всем управлять)) Или функция Лагранжа)
Ну вот чувствуется "кладка научного работника" которому надо не задачу решить, а наоборот, все запутать, приплести Гамильтониан, Якобиан и.т.п.  :)

Здесь имхо противоречие, ибо на векторное поле будет также влиять само расспределение (ri) объектов и их скоростей vi.
А мы рассматриваем фиксированный/дискретный  момент времени и предполагаем что шаг анимации достаточно мал. На следующем шаге расклад конечно изменится, т.к. положение объектов могло измениться (да и параметры ветра тоже), так то будет уже др. расчет.

дело не только конкретного клиента.
Объект по хорошему, должен делать то, (зная векторное поле в данной точке), что положено по законам вашей "физики". И это должен решать не сам конкретный объект, а тот, кто знает в данный момент времени всю информацию о поле, и о всех объектах: их координаты и скорости.
Пусть Вас это не волнует, там есть кому этим заниматься.  Задача уметь находить силу ветра в точке с учетом фиксированных (на данном шаге) препятствий. Так что не "растекайтесь мыслью по древу"  :)


Название: Re: Ветер и препятствия (Cold Wind Blows)
Отправлено: m_ax от Апрель 11, 2011, 16:00
Цитировать
А мы рассматриваем фиксированный/дискретный  момент времени и предполагаем что шаг анимации достаточно мал. На следующем шаге расклад конечно изменится, т.к. положение объектов могло измениться (да и параметры ветра тоже), так то будет уже др. расчет.
Это я понял. Я это к тому, что весь процес детерменирован, и распределение объектов, их скоростей и самого поля, зависит от всего этого от предыдущих моментов. Причинно-следственная связь.
А когда сам объект решает что ему делать - это имхо каша получится.

Цитировать
Пусть Вас это не волнует, там есть кому этим заниматься.  Задача уметь находить силу ветра в точке с учетом фиксированных (на данном шаге) препятствий. Так что не "растекайтесь мыслью по древу"
 
Ну так и вопрос нужно формулировать тогда было так: Найти поле сил, при заданных граничных условиях.


Название: Re: Ветер и препятствия (Cold Wind Blows)
Отправлено: m_ax от Апрель 12, 2011, 13:33
Кстати, не напишите потом, как Вы её решали эту boundary value problem с ветром?
Не представляю как её можно просто решить, а если Вы говорите и турбулентности там всякие и т.д. то становится особено очень интересно)
 


Название: Re: Ветер и препятствия (Cold Wind Blows)
Отправлено: Igors от Апрель 12, 2011, 16:48
Кстати, не напишите потом, как Вы её решали эту boundary value problem с ветром?
Не представляю как её можно просто решить, а если Вы говорите и турбулентности там всякие и т.д. то становится особено очень интересно)
Не надо полагать что речь идет о честной модели турбулентности  :) Это делается просто: к основному вектору (т.е. заданному параметрами) добавляется "розовый" (т.е. коррелированный) шум.

По самой задаче "ветер" - ну как минимум одно решение есть, которому тоже много лет, просто обычно это используется для др. целей. И всем оно хорошо кроме одного - требует UI и задания пользователем настроек.

В общем речь идет об упрощенных, эвристических решениях, не диссертацию пишем  :)