Главная » Processing » Простые объекты в 3D Processing

0

В предыдущей главе мы научились рисовать простые фигуры в 2D. В Processing также имеются функции простых фигур в 3D, по умолчанию это прямоугольный параллелепипед и сфера. В этом примере мы порисуем их.

Как это делается

В этом примере я не буду приводить код из функции setup(). Сейчас вы уже знаете, как ее применять. Импортируйте библиотеку OpenGL так, как вы делали это в примере Треерное пространство и создайте окно разрешением 640 x 480 пикселей. Не забудьте добавить параметр OPENGL к функции size().

Следующий код добавьте в функцию draw(). Функции pushMatrix(), popMatrix() и translate() мы оставим из предыдущего примера. Для вращения наших фигур мы добавим функцию rotateY(). Фигуры будут выведены на экран с помощью функций box() и sphere(). Функция sphereDetail() будет изменять форму сферы.

background( 255 ); lights();

float angleY = radians( frameCount );

pushMatrix();

translate( width * 0.3, height* 0.3 ); rotateY( angleY );

fill( 0, 255, 255 );

box( 100 ); popMatrix();

pushMatrix();

translate( width * 0.5, height* 0.5 ); rotateY( angleY );

fill( 0, 255, 0 );

box( 100, 40, 50 );

popMatrix();

pushMatrix();

translate( width * 0.7, height * 0.3 ); rotateY( angleY );

fill( 255, 0, 0 );

sphereDetail( 30 );

sphere( 75 ); popMatrix();

pushMatrix();

translate( width * 0.3, height * 0.7 ); rotateY( angleY );

fill( 255, 255, 0 );

sphereDetail( 6 );

sphere( 75 ); popMatrix();

pushMatrix();

translate( width * 0.7, height * 0.7 ); rotateY( angleY );

fill( 255, 0, 255 );

sphereDetail( 4, 20 );

sphere( 75 ); popMatrix();

После составления кода для функции draw() запустите скетч. Результат должен выглядеть так, как на этом скриншоте:

Как это работает

Функция box() используется как с одним, так и с тремя параметрами. Если вы примените ее с одним параметром, у вас получится куб. Использование этой функции с тремя параметрами позволяет устанавливать различные значения ширины, глубины и высоты получившегося параллелепипеда.

У функции sphere() есть только один параметр: радиус сферы. ВЫ можете регулировать отображение сферы, используя функцию sphereDetail() перед функцией sphere(). Разрешение сферы, установленное по умолчанию равно 30. При уменьшении этого знения ваша сфера будет менее детализирована; при увеличении – наоборот. Используя эту функцию с двумя параметрами, вы можете установить разрешение сферы по горизонтали и по вертикали. Подставляя небольшое значение в первый параметр и большое во второй, вы будете получать совершенно различные сферы.

Дополнительно

В начале функции draw() мы объявили переменную angleY. Эта переменная используется для вращения каждого 3D-объекта вокруг оси Y. В каждом кадре объекты будут повернуты на один градус. Для этого мы применили встроенную переменную frameCount так как значение этой переменной увеличивается на 1 с каждым кадром. Мы конвертируем эту величину в радианы, так как для измерения углов в Processing нужны именно они.

Источник: Ян Вантомм, Processing 2: креативное программирование, перевод с английского Александры Мишутиной, Published by Packt Publishing Ltd., 2012, BIRMINGHAM – MUMBAI.

По теме:

  • Комментарии