Комбінуємо 2D і 3D об’єкти в Processing

Іноді поверх вашої тривимірної композиції вам може знадобитися вивести двомірний обєкт У цьому прикладі ми розглянемо, як це робиться Це зручно, коли потрібно написати текст або зробити інтерфейс поверх всіх обєктів

Як це робиться

Перше, що потрібно зробити, встановити вікно OpenGL дозволом 640 x 480 пікселів Ви знаєте це по попереднім прикладам Також потрібно оголосити речову пеменную n Ми використовуємо цю змінну для обчислення шуму Перлина та анімації розміру кубів на нашому 3D-просторі Ця частина скетчу виглядає так:

import processingopengl* float n

void setup()

{

size( 640, 480, OPENGL ) n = 00f

}

Наступне – це композиція з кубів Значення змінної n збільшується на 001 в кожному кадрі, тому для кожного куди значення шуму буде відрізнятися Наберіть цей код у функції draw () і подивіться, що вийде

hint( ENABLE_DEPTH_TEST ) n += 001

background( 255 ) lights()

noStroke()

fill( 255, 128, 0 )

pushMatrix()

for ( int i = 0 i &lt 17 i++ ) { for ( int j = 0 j &lt 13 j++ ) {

pushMatrix()

fill( i * 15, 0, j * 19 )

translate( i * 40, j * 40 )

rotateY( radians( i * 10 + frameCount ) ) rotateZ( radians( i * 10 + frameCount ) ) box( noise( i, j, n ) * 40 )

popMatrix()

}

}

popMatrix()

В останньому фрагменті коду у функції draw () ми намалюємо кілька прямокутників Прямокутники намальовані на одній координаті z Перший буде перетинати куби, а другий буде намальований поверх всіх обєктів, затуляючи їх собою

noLights() fill( 0 )

stroke( 0 )

rect( 320, 40, 200, 200 )

hint( DISABLE_DEPTH_TEST )

fill( 255 )

rect( 320, 240, 200, 200 )

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

Функція hint () може бути використана для реалізації різних трюків в поточному рендерер Найчастіше вона використовується для включення і відключення властивостей певного рендерера Я ввів параметр ENABLE_DEPTH_TEST на початку функції draw () і в результаті при виведенні на екран композиції з кубів і чорного квадрата включений буфер z Параметр DISABLE_ DEPTH_TEST вимикає буфер z, Що робить можливим намалювати поверх всіх обєктів білий квадрат

Джерело: Ян Вантомм, Processing 2: креативне програмування, переклад з англійської Олександри Мішутіної, Published by Packt Publishing Ltd, 2012, BIRMINGHAM – MUMBAI

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*