Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
3 / 3 / 0
Регистрация: 18.01.2024
Сообщений: 168

Как реализовать дрожание нагретого воздуха в пустыне?

25.06.2025, 22:13. Показов 7200. Ответов 73

Студворк — интернет-сервис помощи студентам
Всем привет!
Все, наверное, знают такое явление как дрожание воздуха вдалеке в жаркое время. Во многих играх вижу такой эффект.
Пытался найти готовый актив в юнити стор, но не знаю как это явление называется на инглише. Пытаюсь написать в поиске trembling of air (дрожание воздуха), heat convection (конвекция тепла) и прочее, что придет в голову. Но ничего не находит, видимо это явление в инглише имеет какое-то особое название.

Возможно кто-то знает, как это реализовать в юнити, подскажет гайд или готовый актив в ассет стор.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.06.2025, 22:13
Ответы с готовыми решениями:

Дрожание персонажа
Здравствуйте! Решил написать 2D платформер на Unity3D, но столкнулся со следующей проблемой...

Дрожание объекта (Андроид)
Здравствуйте проблема такая что, мяч работает на пк нормально! А когда билдишь на андроид, то мяч...

Дрожание камеры при вращении персонажа
Здравствуйте! Написал простейший скрипт для поворота камеры в Unity: public float...

73
3 / 3 / 0
Регистрация: 18.01.2024
Сообщений: 168
29.06.2025, 21:01  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Royal_X Посмотреть сообщение
Но это если реально не хочешь ждать и готов тратить деньги. Потому что, если ты не спешишь, то возможно кто-то когда-нибудь что-то и написал бы. Даже мне интересна твоя задача, но я ничего не обещаю, поскольку никогда не делал такое.
Ну, у меня как бы не горит здесь и сейчас. До завершения проекта еще далеко, а такие эффекты в любой момент добавить можно.
0
1980 / 836 / 115
Регистрация: 01.10.2012
Сообщений: 5,207
Записей в блоге: 2
30.06.2025, 02:11
1. Ограничить эффект - задача типовая, стандартное решение - простой объект, напр куб или цилиндр, шейдер считает длину луча/отрезка проходящего через такой объект. Их называют всяко, напр gizmo shape

2. Не уверен что отказываться от пост-эффектов - мудрое решение. Как сделать это одним проходом/рендером не видно, и это явно сложнее чем сама задача. А понадобится еще пост эффект - опять корячиться? Это не метод/подход. Кто такие birp, urp и др - не знаю, и учить чужую матчасть не хочу, мне не нужно. Требуется кадр отрендеренный в текстуру, как в примере шейдера для годот. Как это делается в юнитях - нужно спросить знатоков, может это делается без всякого urp

3. Часто слышал что шейдеры "рисуют" и (безуспешно) пытался объяснить что это неверно, шейдеры "шейдят". Разница в том что шейдер получает "свой" (суб)пиксель и обязан считать именно его (а не тот что хочет). Все данные (геометрия, материал и др) привязаны именно к этой точке/самплу, о других коду шейдера неизвестно ничего. Огромное число прекрасных идей разбилось именно об это ограничение. И, насколько мне известно, оно есть везде
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6334 / 3066 / 1054
Регистрация: 01.06.2021
Сообщений: 11,730
30.06.2025, 11:41
alexsecl, я смог сделать то же самое, что делает тот платный ассет, использовав шейдер, который нашел в инете. Имею в виду, искажение по радиусу. Причем, в режиме BiRP.

Игра во вложении. Можешь оценить.

Как будет выглядеть эффект зависит от текстуры, скорости, силы эффекта, радиуса, настроек тайлинга и т.д. Имею в виду, если что-то немного не нравится, то это все настраивается.
Вложения
Тип файла: 7z HeatHaze.7z (21.74 Мб, 3 просмотров)
0
3 / 3 / 0
Регистрация: 18.01.2024
Сообщений: 168
30.06.2025, 12:17  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
я смог сделать то же самое, что делает тот платный ассет. Имею в виду, искажение по радиусу.
Т.е. искажение есть когда смотришь в любую сторону? В том числе и вверх/вниз? Если например вдалеке стоит очень высокая гора, она вся будет искажаться?
Если да, то есть ли возможность ограничить искажения только линией горизонта (настраивать высоту)?
Например, вот реальное видео:



Видно по горе на горизонте, что тепловая конвекция только у земли воздух колеблет:



В том платном активе нет такого, там искажение по сфере идет, солнце, облака - все будет колебаться. У вас так же?


PS: демку позже загрузили, ща гляну
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6334 / 3066 / 1054
Регистрация: 01.06.2021
Сообщений: 11,730
30.06.2025, 12:30
Цитата Сообщение от alexsecl Посмотреть сообщение
В том платном активе нет такого, там искажение по сфере идет
ну вот в моем примере тоже так же. Я же выложил игру, можете сами смотреть
Цитата Сообщение от alexsecl Посмотреть сообщение
Т.е. искажение есть когда смотришь в любую сторону? В том числе и вверх/вниз?
да, в любую, т.е. по сфере
Цитата Сообщение от alexsecl Посмотреть сообщение
Если да, то есть ли возможность ограничить искажения только линией горизонта (настраивать высоту)?
нет, для этого нужно что-то другое придумать

Добавлено через 9 минут
alexsecl, принцип в том, что шейдер используется в материале сферы. Именно это было реализовано в том платном ассете. Т.е. тут можно настроить параметры эффекта, а также размеры сферы. Но не думаю, что можно кардинально что-то поменять, например, добавить какие-то ограничения по высоте.
0
3 / 3 / 0
Регистрация: 18.01.2024
Сообщений: 168
30.06.2025, 12:42  [ТС]
Royal_X, Посмотрел демку, ваш эффект больше похож на эффект из игр, которые мы обсуждали The Long Drive и Gas Station Simulator. Видны паразитные искажения на ближнем кубе, который по идее не должно колыхать. Почему такое происходит?



В платном ассете такого нет, там ближние объекты вообще не получают никаких искажений.

А если в вашем проекте сделать карту побольше (1000х1000) радиус эффекта тоже побольше сделать (на растоянии 200-300 от персонажа), ближние объекты тоже на краях будут колебаться?
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6334 / 3066 / 1054
Регистрация: 01.06.2021
Сообщений: 11,730
30.06.2025, 12:59
alexsecl, да, на краях какие-то артефакты даже у ближних объектов, тем не менее, на самих ближних объектах искажений нет, как и должно быть

Добавлено через 13 минут
alexsecl, вроде получилось исправить. Проверь теперь игру во вложении.
Вложения
Тип файла: 7z HeatHaze2.7z (21.74 Мб, 8 просмотров)
0
3 / 3 / 0
Регистрация: 18.01.2024
Сообщений: 168
30.06.2025, 13:21  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
вроде получилось исправить. Проверь теперь игру во вложении.
Да, получше стало. Правда, какие-то мелкие мурашеи все равно бегают по краям, но почти незаметные.
А можете сцену более масштабной сделать? По аналогии демки платного актива. Сделать плоскость-землю больше (1000х1000), поставить большие кубы вдалеке (имитация гор на горизонте) и радиус действия эффекта мерцания отодвинуть от игрока на 200-300 метров.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6334 / 3066 / 1054
Регистрация: 01.06.2021
Сообщений: 11,730
30.06.2025, 13:59
Цитата Сообщение от alexsecl Посмотреть сообщение
А можете сцену более масштабной сделать? По аналогии демки платного актива. Сделать плоскость-землю больше (1000х1000), поставить большие кубы вдалеке (имитация гор на горизонте) и радиус действия эффекта мерцания отодвинуть от игрока на 200-300 метров.
я выложил всё на гитхаб: https://github.com/RoyalXXX/heat_haze_unity_birp , можешь сам сделать. Там уже полностью настроенная сцена со всеми ассетами.
0
3 / 3 / 0
Регистрация: 18.01.2024
Сообщений: 168
30.06.2025, 15:05  [ТС]
Royal_X, Ответил в личку.
И я вот что еще подумал, когда тестировал ваш эффект. Там используется сфера для отрисовки искажений. А если взять не сферу, а куб... Сделать его высотой метр, к примеру. Опустить чуть ниже камеры и отключить его поворот вместе с камерой (только перемещение с персонажем), чтобы он был всегда параллелен земле. Теоретически же тогда не будет искажаться объекты выше этого куба (солнце, облака, вершины гор и т.д), не?
0
1980 / 836 / 115
Регистрация: 01.10.2012
Сообщений: 5,207
Записей в блоге: 2
30.06.2025, 15:36
Цитата Сообщение от Royal_X Посмотреть сообщение
принцип в том, что шейдер используется в материале сферы.
Принцип тот же что у всех предыдущих, реализация аккуратнее
GrabPass { "_GrabTexture" }
Это то о чем я думаю? Заметим что FPS он сожрет заметно, хотя и не смертельно
Цитата Сообщение от Royal_X Посмотреть сообщение
Но не думаю, что можно кардинально что-то поменять, например, добавить какие-то ограничения по высоте.
Это "дело техники". Главное что Вы показали - есть текстура кадра.
0
3 / 3 / 0
Регистрация: 18.01.2024
Сообщений: 168
30.06.2025, 15:40  [ТС]
Royal_X, В вашем примере сфера с вывернутыми внутрь нормалями? Т.е. сфера создана не в unity, а в стороннем графическом редакторе? просто если в юнити создать сферу/куб и применить к ним ваш шейдер, то изнутри его не видно, только снаружи..
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6334 / 3066 / 1054
Регистрация: 01.06.2021
Сообщений: 11,730
30.06.2025, 15:56
Цитата Сообщение от alexsecl Посмотреть сообщение
Т.е. сфера создана не в unity, а в стороннем графическом редакторе?
да, нормали должны быть инвертированы, сфера создана не в Unity, но в Unity можно менять ее размеры. Вообще-то, через код есть способы инвертировать нормали в Unity, но проще делать это в 3d редакторе, я использовал Blender

Добавлено через 3 минуты
Цитата Сообщение от alexsecl Посмотреть сообщение
А если взять не сферу, а куб...
ну я бы все равно взял бы сферу, но с усеченными полюсами. Уж лучше куба будет. Сейчас сфера является дочерним объектом камеры, поэтому она вращается вместе с камерой (головой) персонажа. Если сделать усеченную сферу дочерним объектом персонажа, то вращаться не будет, а будет просто передвигаться вместе с ней.
0
3 / 3 / 0
Регистрация: 18.01.2024
Сообщений: 168
30.06.2025, 16:38  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
ну я бы все равно взял бы сферу, но с усеченными полюсами. Уж лучше куба будет. Сейчас сфера является дочерним объектом камеры, поэтому она вращается вместе с камерой (головой) персонажа. Если сделать усеченную сферу дочерним объектом персонажа, то вращаться не будет, а будет просто передвигаться вместе с ней.
Ну да, смысл тот же. Я взял цилиндр и в блендере удалил у него основания, оставив только боковую часть и инвертировал нормали вовнутрь.
В принципе получилось уже похоже на что-то реальное)

Heat Haze Test Video

Единственно, что нужно этот объект с эффектом совсем убрать из дочерних персонажа, т.к. видно, что по горизонтали поворачивается вместе с персонажем и искажения плывут. Ставить отдельно от персонажа и применить что-то типа follow to, чтобы он просто перемещался без поворотов куда либо.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6334 / 3066 / 1054
Регистрация: 01.06.2021
Сообщений: 11,730
30.06.2025, 16:51
Цитата Сообщение от alexsecl Посмотреть сообщение
что нужно этот объект с эффектом совсем убрать из дочерних персонажа, т.к. видно, что по горизонтали поворачивается вместе с персонажем
и еще будет при прыжке дичь

но этот объект можно легко убрать из дочерних, по сути, объект не должен менять свою y координату в пространстве. А вот x и z берутся с позиции персонажа.

Добавлено через 9 минут
alexsecl, прикрепи это к объекту с эффектом. В инспекторе выбери персонажа.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using UnityEngine;
 
public class FolowCharacter : MonoBehaviour
{
    public Transform target;
    private float originalY;
 
    void Start()
    {
        originalY = transform.position.y;
    }
 
    void LateUpdate()
    {
        if (target != null)
        {
            transform.position = new Vector3(
                target.position.x,
                originalY,
                target.position.z
            );
        }
    }
}
0
3 / 3 / 0
Регистрация: 18.01.2024
Сообщений: 168
30.06.2025, 16:54  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
и еще будет при прыжке дичь
Если радиус цилиндра большой, то при прыжках вообще ничего не заметно, только что проверил.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6334 / 3066 / 1054
Регистрация: 01.06.2021
Сообщений: 11,730
30.06.2025, 16:56
alexsecl, ну как хочешь. Выше я тебе написал код, который поможет убрать объект с эффектом из дочерних. Тебе всего лишь нужно будет правильно разместить объект с эффектом по высоте, а вот x, z он будет брать у персонажа. Таким образом, не будет ни проблемы с прыжком, ни с горизонтальным вращением.
0
3 / 3 / 0
Регистрация: 18.01.2024
Сообщений: 168
30.06.2025, 18:00  [ТС]
Royal_X, Не увидел код (позже добавил). Сейчас попробую его вставить.

Добавлено через 1 час 0 минут
Royal_X, В общем, все работает. При невысоких запросах к визуалу, вполне можно использовать.
Есть две особенности при этом методе.
Первая: если использовать не сферу, а боковину цилиндра как у меня, видна резкая граница "есть колебание/нет колебания). Если там на горизонте много объектов, то эта граница хорошо видна.
И второе: Например, персонаж идет по пустыне, вокруг него тепловое колебание воздуха, как и должно быть. Но вот он начинает подходить к другому биому, где не должно быть такого колебания, но оно все равно будет, пока он не выйдет с биома пустыни и пока не сработает скрипт отключения шейдера.
В общем, при некоторых плюсах, есть минусы.

Сейчас общаюсь с человеком на кворке, который, якобы, сможет сделать локальное искажение. Т.е. можно назначить на любой объект (костер, факел) или обозначить зону на террейне, где должен проявляться этот эффект. Просит 200 зеленых за работу.. Пока размышляю, стоит ли оно того. Может быть и стоило, если бы я уже видел готовый результат, но его нету и будет ли он соответствовать ожиданиям/обещаниям, пока не ясно)
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6334 / 3066 / 1054
Регистрация: 01.06.2021
Сообщений: 11,730
30.06.2025, 18:19
Цитата Сообщение от alexsecl Посмотреть сообщение
Пока размышляю, стоит ли оно того.
Зависит еще как он это сделает. Например, в моей голове тоже есть несколько идей по созданию эффекта только для выбранных объектов, но все они будут жестко тормозить игру. Например, есть идея с системой частиц.
Цитата Сообщение от alexsecl Посмотреть сообщение
Просит 200 зеленых за работу..
я в рыночных ценах вообще не разбираюсь, поэтому не могу сказать, это много или мало для такой задачи. Но не советую платить, пока он вам не передаст проект или код шейдера и т.д. Т.е. даже если покажет демо-игру, все равно не платите. На форуме в разделе фриланса полно историй, как кидали людей.

Добавлено через 4 минуты
Цитата Сообщение от alexsecl Посмотреть сообщение
Первая: если использовать не сферу, а боковину цилиндра как у меня, видна резкая граница "есть колебание/нет колебания). Если там на горизонте много объектов, то эта граница хорошо видна.
И второе: Например, персонаж идет по пустыне, вокруг него тепловое колебание воздуха, как и должно быть. Но вот он начинает подходить к другому биому, где не должно быть такого колебания, но оно все равно будет, пока он не выйдет с биома пустыни и пока не сработает скрипт отключения шейдера.
1 проблему, полагаю, что можно исправить, так сказать, чтобы края были не резкие, а с постепенных затуханием эффекта.
2 проблема уже посложнее, поскольку требует пересмотра всего подхода.
0
3 / 3 / 0
Регистрация: 18.01.2024
Сообщений: 168
30.06.2025, 18:24  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
1 проблему, полагаю, что можно исправить, так сказать, чтобы края были не резкие, а с постепенных затуханием эффекта.
Это как?

Цитата Сообщение от Royal_X Посмотреть сообщение
2 проблема уже посложнее, поскольку требует пересмотра всего подхода.
Да, это даже я понимаю, что тут уже будет непросто.
Самое простое, что можно сделать, это пустыню чем-то оградить. Поставить вокруг нее заградительные холмы, горы, каньон. В общем, то, что не даст смотреть вдаль за пределы пустыни. Тогда в-принципе будет нормально.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.06.2025, 18:24

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

Машина врезается в воздух
Сделал машину через Boxy car wizard (Easy Suspension), но при относительно большой скорости...

Пыль в воздухе при свете. Свет от лампы
1.Здравствуйте! Как сделать пыль в воздухе там, куда светит лампа? Сделал во так: . Но здесь видно...

Персонаж импортировался в воздухе и оси в управлении инвертированы
Импортировал персонажа их блендера, он по воздуху ходит, управление полностью инвертировано, хотя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru