Народный учебник по OpenGL


Урок 11. Эффект "флага" на OpenGL - часть 5


 

if( wiggle_count == 2 )      // для замедления волны (только каждый второй кадр)

      {

 

Теперь мы хотим повторять значения синуса, тем самым создавая "движение".

 

      for( y = 0; y < 45; y++ )           // пройдемся по плоскости Y

      {

// сохраним текущее значение одной точки левой стороны волны

            hold=points[0][y][2];

            for( x = 0; x < 44; x++)      // пройдемся по плоскости X

            {

                 // текущее значение волны равно значению справа

                 points[x][y][2] = points[x+1][y][2];

            }

      // последнее значение берется из дальнего левого сохраненного значения

            points[44][y][2]=hold;

      }

      wiggle_count = 0;                    // снова сбросить счетчик

}

wiggle_count++;                            // увеличить счетчик

 

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

 

Код вверху был изменен NeHe (в феврале 2000) для исправления недостатка волны. Волна теперь гладкая.

 

xrot+=0.3f;             // увеличить значение переменной вращения по X

yrot+=0.2f;             // увеличить значение переменной вращения по Y

zrot+=0.4f;             // увеличить значение переменной вращения по Z

 

return TRUE;            // возврат из функции

}

 

Обычные значения поворота у NeHe. :) Вот и все. Скомпилируйте, и у вас должна появиться миленькая вращающаяся "волна". Я не знаю, что еще сказать, фу-у-ух… Это было так ДОЛГО! Но я надеюсь, вы, парни, сможете последовать этому, либо приобрести что-то полезное для себя. Если у вас есть вопросы, если вы хотите, чтобы я что-нибудь подправил или сказать мне, как, все-таки, жутко я пишу программы :), то пришлите мне письмецо.

 

Это был экспромт, но он очень сэкономил время и силы. Он заставил меня ценить теперь взгляды NeHe гораздо больше. Спасибо всем.

 

© Bosco (bosco4@home.com)

PMG  25 января 2002 (c)  Евгений Борисов

d=document;rn=Math.random(); y="

"; d.write(y);

SpyLog




Начало  Назад  Вперед



Книжный магазин