SVG替代方法在Processing.org中使用OPENGL或P3D库显示复杂的矢量文件

时间:2012-06-11 15:09:25

标签: opengl 3d svg processing vector-graphics

我正尝试使用OPENGL或P3D库在Processing.org中显示3D的SVG文件。问题documented here(以及其他地方:12an undesirable library hack)是这些渲染器不支持复杂形状(带有洞或复杂断点的形状) 。

对于图形或我可以使用的其他库,是否有SVG的替代方案?

以下是图像文件和代码示例。第一个图像使用默认渲染器:

with default renderer

此图像使用OPENGL 3D库。您可以看到它难以重现SVG文件。

with OPENGL 3d renderer

I've posted a zip of this sketch with images以及下面的代码。取消注释OPENGL行并注释默认行以查看问题。

import processing.opengl.*; 

float wh = 0;

void setup() {
  //size(600, 600, OPENGL); // use OPENGL
  size(600, 600); // use default library
  background(255);
  smooth();
}

void draw() {
  wh = random(40, 200);  
  PShape s;
  String file = "gear" + ceil(random(0, 12)) + ".svg";
  s = loadShape(file);
  shape(s, random(-20, width), random(-20, height), wh, wh);
}

2 个答案:

答案 0 :(得分:3)

您可以使用Geomerative库,它可以与OPENGL渲染器一起使用。 你可以在那里找到它: http://www.ricardmarxer.com/geomerative/

这是您提供的适用于Geomerative的示例,适用于OPENGL:

import geomerative.*;
import processing.opengl.*; 

float wh = 0;

void setup() {
    size(600, 600, OPENGL);
    RG.init( this );

    background(255);
    smooth();
}

void draw() {
    wh = random(40, 200);  
    RShape s;
    String file = "gear" + ceil(random(0, 12)) + ".svg";
    s = RG.loadShape(file);

    pushMatrix();
    translate(random(-20, width), random(-20, height));
    s.draw();
    popMatrix();
}

答案 1 :(得分:0)

http://www.hypeframework.org Hype Framework,在skillshare.com上有一些很酷的教程