Processing 处理,使用音频波形内部的纹理
我一直试图使纹理(img)仅在波形处于活动状态时可见。但到目前为止,我的尝试失败了。我不太明白vertex的用法Processing 处理,使用音频波形内部的纹理,processing,vertex,Processing,Vertex,我一直试图使纹理(img)仅在波形处于活动状态时可见。但到目前为止,我的尝试失败了。我不太明白vertex的用法 PImage img; import ddf.minim.*; Minim minim; AudioPlayer song; void setup() { size(800, 600,P2D); minim = new Minim(this); song = minim.loadFile("song.mp3"); song.play(); img = load
PImage img;
import ddf.minim.*;
Minim minim;
AudioPlayer song;
void setup()
{
size(800, 600,P2D);
minim = new Minim(this);
song = minim.loadFile("song.mp3");
song.play();
img = loadImage("img.jpg");
}
void draw()
{
background(0);
stroke(255);
for (int i = 0; i < song.bufferSize() - 1; i++)
{
beginShape();
texture(img);
vertex(0,height/2);
vertex(i, height-100 - song.right.get(i)*50);
vertex(i+1, height-100 - song.right.get(i+1)*50);
vertex(width,height/2);
vertex(0,height/2);
vertex(0,height/2+100);
endShape();
}
}
PImage-img;
进口ddf.微量。*;
极小极小;
音频播放器歌曲;
无效设置()
{
尺寸(800600,P2D);
最小值=新的最小值(本);
song=mini.loadFile(“song.mp3”);
歌曲。游戏();
img=loadImage(“img.jpg”);
}
作废提款()
{
背景(0);
中风(255);
for(int i=0;i
您就快到了:
- 您正在传递渲染形状的顶点位置的x、y值
- 您没有传递纹理贴图u、v坐标
顶点(x,y);
使用顶点(x,y,u,v);
):
PImage-img;
进口ddf.微量。*;
极小极小;
音频播放器歌曲;
无效设置()
{
尺寸(800600,P2D);
仰泳();
最小值=新的最小值(本);
song=mini.loadFile(“song.mp3”);
歌曲。游戏();
img=loadImage(“img.jpg”);
}
作废提款()
{
背景(0);
中风(255);
for(int i=0;i
未经测试,但注释应有助于发现差异
下面是一个将vertex()与纹理()结合使用的超级基本示例:
PImage-img;
无效设置(){
尺寸(100100,P2D);
//制作纹理
img=createImage(50,50,RGB);
对于(int i=0;i
请注意移动鼠标时纹理是如何扭曲的,因为它控制顶点1的纹理坐标。顶点(x,y,u,v)与顶点(x,y)非常相似,但除了顶点在屏幕上渲染的坐标外,还可以控制纹理采样位置的坐标
如参考文献所述,默认情况下
textureMode()
为图像,这意味着u、v坐标位于图像坐标中(从0,0到纹理图像宽度、高度)。还有另一种可用模式:u、v采样坐标归一化(介于0.0和1.0之间)更接近您在3D应用程序功能中可能发现的情况非常感谢您的详细解释,在我删除笔划后,效果很好:)我想用视频放置纹理,并将麦克风作为音频输入,为了能够观看视频,您必须讲话:)
PImage img;
import ddf.minim.*;
Minim minim;
AudioPlayer song;
void setup()
{
size(800, 600,P2D);
noStroke();
minim = new Minim(this);
song = minim.loadFile("song.mp3");
song.play();
img = loadImage("img.jpg");
}
void draw()
{
background(0);
stroke(255);
for (int i = 0; i < song.bufferSize() - 1; i++)
{
beginShape();
texture(img);
vertex(0,height/2, //vertex 0,x,y
0,height/2); //vertex 0,u,v
vertex(i, height-100 - song.right.get(i)*50, //vertex 1,x,y
i, height-100 - song.right.get(i)*50); //vertex 1,u,v
vertex(i+1, height-100 - song.right.get(i+1)*50, //vertex 2,x,y
i+1, height-100 - song.right.get(i+1)*50); //vertex 2,u,v
vertex(width,height/2, //vertex 3,x,y
width,height/2); //vertex 3,u,v
vertex(0,height/2, //vertex 4,x,y
0,height/2); //vertex 4,u,v
vertex(0,height/2+100, //vertex 5,x,y
0,height/2+100); //vertex 5,u,v
endShape();
}
}
PImage img;
void setup(){
size(100,100,P2D);
//make a texture
img = createImage(50,50,RGB);
for(int i = 0 ; i < img.pixels.length; i++) {
int x = i % img.width;
int y = i / img.height;
if(x % 4 == 0 && y % 4 == 0){
img.pixels[i] = color(255);
}else{
img.pixels[i] = color(0);
}
}
img.updatePixels();
}
void draw(){
background(0);
//sampling different u,v coordinates (vertex 1 is mapped to mouse) for same x,y
beginShape();
texture(img);
vertex(0,0,0,0);
vertex(50,0,mouseX,mouseY);
vertex(50,50,50,50);
vertex(0,50,0,50);
endShape();
text("u:"+mouseX+"v:"+mouseY,5,height);
translate(50,0);
//mapping u,v to x,y coordinates
beginShape();
texture(img);
vertex(0,0,0,0);
vertex(50,0,50,0);
vertex(50,50,50,50);
vertex(0,50,0,50);
endShape();
}