Конференция "Игры" » Эффект горячего воздуха
 
  • Жидкое стекло © (04.07.07 14:59) [0]
    Здравствуйте. Как сделать эффект горячего воздуха на плоском изображении?
  • @!!ex © (04.07.07 15:55) [1]
    Так же как и в 3D. шейдерами проще всего.
  • @!!ex © (04.07.07 15:58) [2]
    В RenderMonkey есть пример Reflection-Refraction там искажается изображение когда камера под водой.
    Для огня надо юзать тотже эффект.
  • Jkot © (04.07.07 16:41) [3]
    Я такое на GLSL делал поделится?
  • @!!ex © (04.07.07 16:44) [4]
    > [3] Jkot ©   (04.07.07 16:41)

    Делись!
  • Jkot © (04.07.07 17:03) [5]
    VP

    varying vec2 TexCoord;

    void main(void)
    {
     gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
     TexCoord  =gl_MultiTexCoord0.xy;
    }



    FP


    uniform sampler2D BaseTex;
    uniform sampler2D NormalTex;
    uniform sampler2D AlphaTex;
    uniform vec2 Phase;
    uniform float Size;
    uniform float Intensity;

    varying vec2 TexCoord;

    void main(void)
    {
     float Alpha  = texture2D(AlphaTex,TexCoord).r;
     vec4  Color  = texture2D(BaseTex,TexCoord + Alpha * ( normalize ( texture2D(NormalTex,(TexCoord * Size) + Phase ) ).xy*Intensity-Intensity/3)  );
     Color.w      = Alpha;
     gl_FragColor = Color;
    }




    Phase - сдвиг для текстуры преломления, просто изменяеш x,y здесь и создеётся эффект что пар  движется

    Intensity- интенсивность

    Size -Scale для текстуры преломления.

    BaseTex - здесь нужно передать то что по зади спрайта изображающего пар тоесть рендер в текстуру.

    NormalTex - текстура для прелоления R обозначает сдвиг по x G по Y, впринципе подходят Dot текстуры для воды в общем клавное что-бы было похоже на  волны на воде и тайлёное.

    AlphaTex - текстура из которой берётся R компонента как альфа текстура. Альфа должна быть 0 по краям а то будут лаги. уфф... в общем всё =)
  • Sapersky (04.07.07 18:36) [6]
    Что такое "на плоском изображении"? Чистый софтвер?
    Тогда см. FastLIB:
    http://prdownloads.sourceforge.net/skinner/FastLib.zip?download
    Вроде в этом дистрибутиве должен быть пример с bump-mapping; в примере поставить blending mode - none, в lightmap - картинку, в bumpmap - карту рельефа.
  • Жидкое стекло © (05.07.07 00:35) [7]
    >Что такое "на плоском изображении"? Чистый софтвер?

    На плоском - значит не в 3D :) И чистый софтвер не цель, но ключ к пониманию. Интересует именно алгоритмическая часть, чтобы её можно было реализовать на обычных битмапах.

    К сожалению, в [5] я вижу, что задействован какой-то алгоритм искажения, но пока не могу его понять.

    Более всего пока подходит [6]. В пресете Reflective Text вижу задатки искажений. Наклепал плавный рельеф - в общем, похоже. Если других идей/способов не предложат, то остановлюсь на этом.
  • Jkot © (05.07.07 06:06) [8]
    > К сожалению, в [5] я вижу, что задействован какой-то алгоритм искажения, но пока не могу его понять.

    ключ к пониманию вот эта строка:

    Color  = texture2D(BaseTex,TexCoord + Alpha * ( normalize ( texture2D(NormalTex,(TexCoord * Size) + Phase ) ).xy*Intensity-Intensity/3)  );

    Выбрасываем доп. функции.

    texture2D(BaseTex,TexCoord +normalize ( texture2D(NormalTex,(TexCoord)) ).xy*Intensity);

    Получается BaseTex нормальный задний фон TexCoord нормальные координаты а кним добавняется r и g ( как x и y) из текстуры преломления..
  • Sapersky (05.07.07 13:30) [9]
    И [5], и [6] - один и тот же бамп-мэппинг (bump-mapping):
    Dst[x,y] = Src[x + Bump[x,y].x, y + Bump[x,y].y]
    В [5] модифицируются текстурные координаты, а в [6] - непосредственно пиксели картинки.
    Аппаратно реализовать можно и без шейдеров. См. пример BumpUnderwater (или BumpWaves) из DX8 SDK ( http://www.clootie.ru ).
  • Жидкое стекло © (05.07.07 19:42) [10]
    Решил сделать на основе бамп-мэппинга, только вот не могу подобрать эту вот карту рельефа (чтоб получился горячий воздух). Сделал синусоидальную.

    Закачать можно тут:
    http://www.speedyshare.com/419733847.html
    или
    http://www.sharing.ru/dl/061589/hotair.rar.html
    (300 кб, rar)

    Похоже?
  • @!!ex © (05.07.07 20:20) [11]
    ИМХО нет.
    Есть замечание, что слишком дискретный эффект.
  • Жидкое стекло © (05.07.07 20:43) [12]
    Дискретный - всмысле, можно рёбра посчитать?
  • @!!ex © (05.07.07 21:13) [13]
    > [12] Жидкое стекло ©   (05.07.07 20:43)

    У меня возникло ощущение, что не плавный эффект.
  • Jkot © (06.07.07 05:43) [14]
    Я не понял ты мой шейдер юзал?
  • @!!ex © (06.07.07 10:16) [15]
    > [14] Jkot ©   (06.07.07 05:43)

    Врядли. скорее fastlib.
  • Sapersky (06.07.07 16:30) [16]
    На тёмном фоне плохо видно, что там за эффект вообще. Лучше бы машину в профиль поставить (вид сбоку).
    Дискретный - скорее пикселизованный, что ли, или "блочный"... видимо, артефакты jpeg вылезают.

    Попытался состряпать карту рельефа на собственном генераторе текстур:
    http://slil.ru/24600602
    (67 кб, rar)
    Сохранить карту рельефа - переключиться на эффект "Distort" + контекстное меню у картинки.
 
Конференция "Игры" » Эффект горячего воздуха
Есть новые Нет новых   [134431   +10][b:0.001][p:0.001]