2016-04-07 2 views
1

Я создал аудио визуализатор с использованием средства рендеринга по умолчанию в Обработке 3, теперь я хочу реализовать независимый вращающийся 3D-куб (который использует P3D) в аудио-визуализаторе (который был создан в рендеринг по умолчанию). Вот код для 3D-куба:Размещение объекта P3D в средстве рендеринга по умолчанию

import processing.opengl.*; 

float y = 0.1; 
float x = 0.1; 
float z = 0.1; 

void setup() 
{ 
    size(800,600,P3D); 
    smooth(); 
} 

void draw() 
{ 
    translate(400,300,0); 
    rotateX(x); 
    rotateY(y); 
    rotateZ(z); 
    background(255); 
    fill(255,228,225); 
    box(200); 
    x += random(.1); 
    y += random(.1); 
    z += random(.1); 
} 

Вот отрывок из визуализатора, который относится к 3D-куба:

void setup() 
{ 
    size(800, 600); 
    //fullScreen(2); 
    minim = new Minim(this); 
    player = minim.loadFile("/Users/samuel/Desktop/GT.mp3"); 
    meta = player.getMetaData(); 
    beat = new BeatDetect(); 
    player.loop(); 
    fft = new FFT(player.bufferSize(), player.sampleRate()); 
    fft.logAverages(60, 7); 
    noStroke(); 
    w = width/fft.avgSize(); 
    player.play(); 
    background(0); 
    smooth(); 
} 

В конечном счете, я просто интересно, если я могу интегрировать 3D-объект без изменение размера() визуализатора на P3D.

ответ

0

Вы можете использовать функцию createGraphics() создать визуализатор, и вы можете передать P3D в этот рендерер, чтобы рисовать в 3D.

Однако вы не можете этого сделать, если ваш эскиз использует средство визуализации по умолчанию. Вы должны использовать либо P2D, либо P3D в вашем основном рендерере, чтобы использовать P3D в любых createGraphics() визуализаторах. От the reference:

Важно, чтобы рендеринг использовался с createGraphics() в отношении основного средства визуализации, указанного в size(). Например, можно использовать P2D или P3D с createGraphics(), когда один из них определен в size(). В отличие от обработки 1.0, P2D и P3D используют OpenGL для рисования, а при использовании рендеринга OpenGL необходимо, чтобы основная поверхность рисования была основана на OpenGL. Если P2D или P3D используются в качестве рендерера в size(), то любой из параметров можно использовать с createGraphics(). Если используемый по умолчанию рендерер используется в size(), то с помощью createGraphics() можно использовать только по умолчанию или PDF.

Вот небольшой пример, который использует P2D визуализатор в качестве основного средства визуализации и P3D как суб-визуализатора:

PGraphics pg; 

void setup() { 
    size(200, 200, P2D); 
    pg = createGraphics(100, 100, P3D); 
} 

void draw() { 
    pg.beginDraw(); 
    pg.background(0); 
    pg.noStroke(); 
    pg.translate(pg.width*0.5, pg.height*0.5); 
    pg.lights(); 
    pg.sphere(25); 
    pg.endDraw(); 

    background(0, 0, 255); 
    image(pg, 50, 50); 
} 
Смежные вопросы