我想在我们学院安装一个3D装置,为了这个,我想知道,我是否可以在处理过程中安装两个视距相隔的摄像机,并渲染每一个到两个不同的投影仪,这样我就可以通过极化来混合这些输出,并实现3d效果。
发布于 2013-12-23 05:23:42
通过创建PApplet实例并将其添加到新的JFrame窗口,您可以在处理过程中打开第二个窗口。下面的示例创建一个简单的草图,它打开两个窗口并绘制一个圆圈,在其中一个窗口中稍微向左移动,在第二个窗口中向右移动。这些窗户可以放在不同的投影仪上。
import javax.swing.JFrame;
PFrame f;
void setup () {
size(300,300);
PFrame f = new PFrame();
}
void draw() {
background(0);
ellipse(140,150,100,100);
}
public class Second extends PApplet {
public void setup() {
size(300,300);
}
public void draw() {
background(0);
ellipse(160,150,100,100);
}
}
public class PFrame extends JFrame {
public PFrame() {
setBounds(0,0,300,300);
Second s = new Second();
add(s);
s.init();
show();
}
}发布于 2013-12-24 02:09:26
我有一些想法,从更简单到更复杂:
方法1:简单地使用pushMatrix()/popMatrix()调用将左与右视点隔离开来,可能对透视()投影使用不同的值
这里有一个非常粗略的例子来说明这个想法:
void setup(){
size(200,100,P3D);
noFill();
}
void draw(){
background(255);
stroke(255,0,0);
//view 1
pushMatrix();
camera(70.0, 0.0, 200.0, 50.0, 50.0, 0.0, 0.0, 1.0, 0.0);
drawBox();
popMatrix();
stroke(0,0,255);
//view 2
pushMatrix();
camera(90.0, 0.0, 200.0, 50.0, 50.0, 0.0, 0.0, 1.0, 0.0);
translate(100,0,0);//move everything to the right
drawBox();
popMatrix();
}
void drawBox(){
pushMatrix();
rotateY(map(mouseX,0,width,-PI,PI));
box(50);
popMatrix();
}方法2:您可以将值/数字更新从绘图代码中分离出来,并在同一帧中绘制两次,但可以使用PGraphics实例将其划分为单独的“层”。
如果要分隔窗口,可以在这个答案中看到一个代码示例
https://stackoverflow.com/questions/20737298
复制相似问题