Processing 使用处理对两台投影仪进行多重渲染(用于基于偏振的3D)

Processing 使用处理对两台投影仪进行多重渲染(用于基于偏振的3D),processing,parallax,projector,anaglyph-3d,Processing,Parallax,Projector,Anaglyph 3d,我想在我们学院安装一个3D装置,为此,我想知道,我是否可以在处理过程中安装两个视距分开的摄像头,并将每个摄像头渲染到两个不同的投影仪上,这样,我可以通过极化来混合这些输出并实现3d效果。您可以通过创建PApplet实例并将其添加到新的JFrame窗口来打开第二个处理窗口。下面的示例创建一个简单的草图,打开两个窗口,并在其中一个窗口中绘制一个稍微向左移动的圆,在第二个窗口中绘制一个稍微向右移动的圆。这些窗口可以放置在不同的投影仪上 import javax.swing.JFrame; PFram

我想在我们学院安装一个3D装置,为此,我想知道,我是否可以在处理过程中安装两个视距分开的摄像头,并将每个摄像头渲染到两个不同的投影仪上,这样,我可以通过极化来混合这些输出并实现3d效果。

您可以通过创建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();
  }
}

从简单到复杂,我有一些想法:

  • 简单地隔离图形命令/坐标空间
  • 使用不同的渲染层
  • 方法1:Simple use/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:可以从图形代码中分离值/编号更新,并在同一帧中绘制两次,但可以使用实例将其划分为单独的“层”


    如果你想分开窗口,你可以在

    中看到一个代码示例。我喜欢你的实现方式,但我需要在两个单独的投影仪上显示它们。你说的两个投影仪是什么意思?(两个不同的投影矩阵、两个窗口或其他)?它是LCD投影仪,或两个单独的显示器。因此,您希望在一个显示器上显示一个窗口,在另一个显示器/LCD投影仪上显示具有相同3d场景不同视图的另一个窗口,对吗?这就是尼古拉斯在上面的回答,我在上个圣诞前夜链接到了上面。你尝过那些吗?