Animation 使用哪个处理库来创建同时运行的渲染
我最近正在研究processing(),并希望找出是否有一个库可以帮助我创建两个不同的窗口来渲染同一场景的两个视图。还有什么方法可以直接从一个窗口切换到另一个窗口。我不知道是否存在这样的库进行处理,但是您可以使用以下基于 然后,可以在每个窗口中基于公共数据源和方法创建图形。 我不是专家,但我希望这能帮助你开始你的项目 请注意,GUI库(如)也支持创建多个窗口 编辑:注释相关代码:Animation 使用哪个处理库来创建同时运行的渲染,animation,processing,Animation,Processing,我最近正在研究processing(),并希望找出是否有一个库可以帮助我创建两个不同的窗口来渲染同一场景的两个视图。还有什么方法可以直接从一个窗口切换到另一个窗口。我不知道是否存在这样的库进行处理,但是您可以使用以下基于 然后,可以在每个窗口中基于公共数据源和方法创建图形。 我不是专家,但我希望这能帮助你开始你的项目 请注意,GUI库(如)也支持创建多个窗口 编辑:注释相关代码: //...// int x=50; void draw () { rect(width/2,0,x,x); s.re
//...//
int x=50;
void draw () {
rect(width/2,0,x,x);
s.rect(s.width/2,0,x+10,x+10);
}
//...//
下面是一个简单的例子:
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.*;
ImagePanel view2;
PImage viewport2 = new PImage(400,400,RGB);
void setup(){
size(800,400,P3D);
noStroke();
frame.setSize(400,400);
frame.setTitle("view 1");
view2 = new ImagePanel((BufferedImage)viewport2.getNative());
JFrame v2 = new JFrame("view 2");
v2.setSize(400,400);
v2.add(view2);
v2.show();
}
void draw(){
background(0);
lights();
//view1
pushMatrix();
translate(200,200,0);
rotateX(45);
rotateY(map(mouseX,0,height,-PI,PI));
renderScene();
popMatrix();
//view2
pushMatrix();
translate(600,200,0);
rotateY(45);
rotateX(map(mouseX,0,height,-PI,PI));
renderScene();
popMatrix();
viewport2 = get(400,0,400,400);//fetch a screenshot from the invisible side (right side);
view2.setImage((BufferedImage)viewport2.getNative());
}
void renderScene(){
pushMatrix();
box(100);//and other elements here
popMatrix();
}
public class ImagePanel extends JPanel{
private BufferedImage image;
public ImagePanel(BufferedImage img) {
setImage(img);
}
public void setImage(BufferedImage img){
image = img;
this.repaint();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, null);
}
}
有三件事要看:
camera()
和perspective()
功能李>
Frame.setSize()
调整它的大小,并扩展一个JPanel,以便可以在图形对象中绘制getNative()
方法,该方法返回BuffereImage表示形式。可以将其绘制到java.awt.Graphics实例中。我告诉自定义JPanel组件重新绘制以更新像素这种方法有点老套,但您使用的是相同的草图和相同的变量,而不是两个PApplet实例。哦,谢谢。但是我有一个关于公共变量的疑问,我想要一种可以在两个draw函数中访问的变量。但当我尝试这样做时,所发生的是两个渲染都发生在同一个窗口中,并且具有可视结果。您可以在一个绘制方法中管理两个窗口(请参见编辑后的答案)。这不是最有效的方法,但到目前为止,我还不太清楚。实际的Java程序员可以为您提供更详细的解决方案。
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.*;
ImagePanel view2;
PImage viewport2 = new PImage(400,400,RGB);
void setup(){
size(800,400,P3D);
noStroke();
frame.setSize(400,400);
frame.setTitle("view 1");
view2 = new ImagePanel((BufferedImage)viewport2.getNative());
JFrame v2 = new JFrame("view 2");
v2.setSize(400,400);
v2.add(view2);
v2.show();
}
void draw(){
background(0);
lights();
//view1
pushMatrix();
translate(200,200,0);
rotateX(45);
rotateY(map(mouseX,0,height,-PI,PI));
renderScene();
popMatrix();
//view2
pushMatrix();
translate(600,200,0);
rotateY(45);
rotateX(map(mouseX,0,height,-PI,PI));
renderScene();
popMatrix();
viewport2 = get(400,0,400,400);//fetch a screenshot from the invisible side (right side);
view2.setImage((BufferedImage)viewport2.getNative());
}
void renderScene(){
pushMatrix();
box(100);//and other elements here
popMatrix();
}
public class ImagePanel extends JPanel{
private BufferedImage image;
public ImagePanel(BufferedImage img) {
setImage(img);
}
public void setImage(BufferedImage img){
image = img;
this.repaint();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, null);
}
}