Russian Qt Forum
Май 15, 2024, 12:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ветер и препятствия (Cold Wind Blows)  (Прочитано 4178 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Апрель 11, 2011, 14:28 »

Добрый день

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

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

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

Идеи?

Спасибо
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #1 : Апрель 11, 2011, 15:32 »

Добрый день

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

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

Гамильтониан, короче, должен всё знать и всем управлять)) Или функция Лагранжа)
« Последнее редактирование: Апрель 11, 2011, 15:34 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #2 : Апрель 11, 2011, 15:43 »

Да, если рассматривать такую ситуацию, при которой объекты в первом приближении не влияют на поле, то задача просто сводится к нахождению этого векторного поля.
Тогда зачем упоминать вообще об объектах?
Задача: найти поле сил?
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Апрель 11, 2011, 15:48 »

Гамильтониан, короче, должен всё знать и всем управлять)) Или функция Лагранжа)
Ну вот чувствуется "кладка научного работника" которому надо не задачу решить, а наоборот, все запутать, приплести Гамильтониан, Якобиан и.т.п.  Улыбающийся

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

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

Сообщений: 2094



Просмотр профиля
« Ответ #4 : Апрель 11, 2011, 16:00 »

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

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

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #5 : Апрель 12, 2011, 13:33 »

Кстати, не напишите потом, как Вы её решали эту boundary value problem с ветром?
Не представляю как её можно просто решить, а если Вы говорите и турбулентности там всякие и т.д. то становится особено очень интересно)
 
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Апрель 12, 2011, 16:48 »

Кстати, не напишите потом, как Вы её решали эту boundary value problem с ветром?
Не представляю как её можно просто решить, а если Вы говорите и турбулентности там всякие и т.д. то становится особено очень интересно)
Не надо полагать что речь идет о честной модели турбулентности  Улыбающийся Это делается просто: к основному вектору (т.е. заданному параметрами) добавляется "розовый" (т.е. коррелированный) шум.

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

В общем речь идет об упрощенных, эвристических решениях, не диссертацию пишем  Улыбающийся 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.135 секунд. Запросов: 22.