2016-04-07 1 views
1

J'ai créé un visualiseur audio en utilisant le rendu par défaut dans le traitement 3, maintenant je veux implémenter un cube 3D tournant indépendant (qui utilise P3D) dans le visualiseur audio (qui a été créé dans le rendu par défaut). Voici le code pour le cube 3D:Placement d'un objet P3D dans le rendu par défaut

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); 
} 

Voici un extrait du Visualiseur qui se rapporte au cube 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(); 
} 

En fin de compte, je suis juste curieux de savoir si je peux intégrer un objet 3D sans changer la taille() du visualiseur en P3D.

Répondre

0

Vous pouvez utiliser la fonction createGraphics() pour créer un moteur de rendu, et vous pouvez passer P3D dans ce générateur de permettre le dessin en 3D. Toutefois, vous ne pouvez pas le faire si votre esquisse utilise le rendu par défaut.

Vous devez utiliser P2D ou P3D dans votre moteur de rendu principal pour pouvoir utiliser P3D dans tous les moteurs de rendu createGraphics(). De the reference:

Il est important de considérer le moteur de rendu utilisé avec CreateGraphics() par rapport à la principale spécifiée dans la taille renderer(). Par exemple, il est seulement possible d'utiliser P2D ou P3D avec createGraphics() lorsque l'un d'entre eux est défini en taille(). Contrairement à Processing 1.0, P2D et P3D utilisent OpenGL pour le dessin, et lors de l'utilisation d'un moteur de rendu OpenGL, il est nécessaire que la surface de dessin principale soit basée sur OpenGL. Si P2D ou P3D sont utilisés comme moteur de rendu dans size(), alors l'une des options peut être utilisée avec createGraphics(). Si le rendu par défaut est utilisé dans size(), seul le fichier par défaut ou PDF peut être utilisé avec createGraphics().

Voici un petit exemple qui utilise un P2D comme le principal moteur de rendu et P3D renderer comme un sous-renderer:

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); 
}