首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两台投影仪的多次渲染(用于基于偏振的3D)

两台投影仪的多次渲染(用于基于偏振的3D)
EN

Stack Overflow用户
提问于 2013-12-23 05:09:28
回答 2查看 448关注 0票数 2

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-23 05:23:42

通过创建PApplet实例并将其添加到新的JFrame窗口,您可以在处理过程中打开第二个窗口。下面的示例创建一个简单的草图,它打开两个窗口并绘制一个圆圈,在其中一个窗口中稍微向左移动,在第二个窗口中向右移动。这些窗户可以放在不同的投影仪上。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2013-12-24 02:09:26

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

  1. 简单地隔离绘图命令/坐标空间
  2. 使用不同的渲染层

方法1:简单地使用pushMatrix()/popMatrix()调用将左与右视点隔离开来,可能对透视()投影使用不同的值

这里有一个非常粗略的例子来说明这个想法:

代码语言:javascript
复制
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实例将其划分为单独的“层”。

如果要分隔窗口,可以在这个答案中看到一个代码示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20737298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档