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

Хороший юрист в Новокузнецке онлайн, бесплатно проконсультироваться.

Урок 19. Машина моделирования частиц с использованием полосок из треугольников - часть 12



      glTexCoord2d(1,1); glVertex3f(x+0.5f,y+0.5f,z); // Верхняя правая

     

glTexCoord2d(0,1); glVertex3f(x-0.5f,y+0.5f,z); // Верхняя левая

     

glTexCoord2d(1,0); glVertex3f(x+0.5f,y-0.5f,z); // Нижняя правая

     

glTexCoord2d(0,0); glVertex3f(x-0.5f,y-0.5f,z); // Нижняя левая


Наконец мы сообщаем OpenGL, что мы завершили вывод нашей полоски из треугольников.


      glEnd(); // Завершение построения полоски треугольников


Теперь мы можем переместить частицу. Математически это может выглядеть несколько странно, но довольно просто. Сначала мы берем текущую позицию x частицы. Затем мы добавляем значение смещения частицы по x, деленной на slowdown/1000. Поэтому, если наша частица была в центре экрана на оси X (0), наша переменная смещения (xi) для оси X равна +10 (смещение вправо от нас) и slowdown было равно 1, мы сместимся направо на 10/(1*1000), или на 0.01f. Если мы увеличим slowdown на 2, мы сместимся только на 0.005f. Буду надеяться, что это поможет Вам понять, как работает замедление (slowdown).


Это также объясняет, почему умножение начальных значений на 10.0f заставляет пиксели перемещаться намного быстрее, создавая эффект взрыва.


Мы используем ту же самую формулу для осей y и z, для того чтобы переместить частицу по экрану.


      // Передвижение по оси X на скорость по X

      particle[loop].x+=particle[loop].xi/(slowdown*1000);

     

// Передвижение по оси Y на скорость по Y

      particle[loop].y+=particle[loop].yi/(slowdown*1000);

     

// Передвижение по оси Z на скорость по Z

      particle[loop].z+=particle[loop].zi/(slowdown*1000);


После того, как мы вычислили перемещение частицы, следующее, что мы должны сделать, это учесть гравитацию или сопротивление. В первой строке ниже, мы делаем это, при помощи добавления нашего сопротивления (xg) к скорости перемещения (xi).


Предположим, что скорость перемещения равна 10, а сопротивление равно 1. Первый раз, когда частица выводиться на экран, сопротивление воздействует на нее. Во второй раз, когда она выводится, сопротивление будет действовать, и скорость перемещения понизится от 10 до 9. Это заставит частицу немного замедлится. В третий раз, когда частица выводиться, сопротивление действует снова, и скорость перемещения понизится до 8. Если бы частица горела больше чем 10 перерисовок, то она будет в итоге перемещаться в противоположном направлении, потому что скорость перемещения станет отрицательным значением.




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



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