Главная » Processing » Использование текстур в Processing

0

До сих пор для окрашивания наших 3D объектов мы использовали ровные цвета. Однако для оформления ваших фигур вы можете использовать изображения. Эти изображения называются текстурами и служат для усиления выразительности ваших композиций.

Приступим

Создайте два изображения размером 640 x 640 каждое и добавьте их в папку data вашего скетча. Если вы забыли, как это сделать, загляните в пример Работаем с изобрениями в Главе 2, Текст, кривые и фигуры в 2D.

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

Как и прежде, сначала импортируем библиотеку OpenGL и объявляем два объекта класса

PImage для изображений.

import processing.opengl.*; PImage texture1;

PImage texture2;

В функции setup() установим размер окна и загрузим изображения с вашего жесткого диска.

void setup()

{

size( 640, 480, OPENGL );

noStroke();

texture1 = loadImage("stones.jpg"); texture2 = loadImage("lines.jpg");

}

В функции draw() нарисуем два квадрата. Добавим к ним текстуры с помощью функции texture(). Мы совместим текстуру с вершинами по-разному для каждого квадрата. Первая будет нанесена с помощью режима текстур IMAGE. Далее следует код для рисования квадрата:

background( 255 );

textureMode( IMAGE ); pushMatrix();

translate( width/4, height/2, 0 ); rotateY( radians( frameCount ) ); beginShape();

vertex( -100, -100, 0, 0 );

vertex( 100, -100, 640, 0 );

vertex( 100, 100, 640, 640 );

 

texture( texture1 );

vertex( -100,  100, 0, 640 );

endShape( CLOSE ); popMatrix();

Для второго квадрата применим режим текстур NORMAL. Изображение текстуры бет совмещено с вершинами фигуры по-другому. Обратите внимание, что третий и четвертый параметры функции vertex() различны.

textureMode( NORMAL ); pushMatrix(); translate( width*.75, height/2, 0 ); rotateY( radians( -frameCount ) ); beginShape();

vertex( -100, -100, 0, 0 );

vertex( 100, -100, 1, 0 );

vertex( 100, 100, 1, 1 );

vertex( -100, 100, 0, 1 );

 

texture( texture2 );

endShape( CLOSE ); popMatrix();

Теперь вы можете запустить скетч; он будет выглядеть примерно так, как на этом скриншоте, за исключением использованных изображений.

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

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

f  Функция texture() указывает Processing, какое изображение будет применятя для создания текстуры фигуры.

f Функция textureMode() определяет, каким образом Processing создаст текстуру вашей трехмерной фигуры. Входными параметрами являются IMAGE или NORMAL. По умолчанию установлен параметр IMAGE, в этом случае для размещения изоажения должны указываться размеры изображения. В режиме текстур NORMAL вместо размеров изображения можно указывать числа от 0 до 1.

f Функция vertex() в данном случае имеет два дополнительных параметра. Первые два параметра это координаты точки, следующие два использутся для размещения текстуры. В режиме текстур IMAGE строка vertex( 100, -100, 640, 0 ) означает вершину в точке (100, -100), а сама вершина придется на точку (640, 0) изображения, что соответствует правому верхнему углу. В режиме текстур NORMAL этой точке изображения будет соответствовать величина (1, 0).

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

По теме:

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