我已经在处理3中使用默认渲染器创建了一个音频可视化器,现在我想在音频可视化器(在默认渲染器中创建)中实现一个独立的旋转3D立方体(使用P3D)。这是3D多维数据集的代码:
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对象而无需将可视化工具的size()更改为P3D。
您可以使用该createGraphics()
函数创建渲染器,并且可以将其传递P3D
到该渲染器中以进行3D绘制。
但是,如果草图使用默认渲染器,则无法执行此操作。您必须在主渲染器中使用P2D
或P3D
在主渲染器中使用P3D
,才能在任何createGraphics()
渲染器中使用。从参考:
考虑与size()中指定的主渲染器相关联的createGraphics()渲染器,这一点很重要。例如,只有在size()中定义了其中之一时,才可以将P2D或P3D与createGraphics()一起使用。与Processing 1.0不同,P2D和P3D使用OpenGL进行绘制,并且在使用OpenGL渲染器时,必须使主图形表面基于OpenGL。如果在size()中将P2D或P3D用作渲染器,则任何选项都可以与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);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句