2

OPENGL または P3D ライブラリを使用して、Processing.org で SVG ファイルを 3D で表示しようとしています。ここ(および他の場所: 12、および望ましくないライブラリ ハック) に記載されている問題は、これらのレンダラーが複雑な形状 (穴や複雑な切れ目があるもの) をサポートしないことです。

グラフィック用の SVG に代わるもの、または使用できる別のライブラリはありますか?

以下は、画像ファイルとコード サンプルです。この最初の画像はデフォルトのレンダラーを使用しています:

デフォルトのレンダラーで

この画像は OPENGL 3D ライブラリを使用しています。SVG ファイルの再現に苦労していることがわかります。

OPENGL 3d レンダラーを使用

以下の画像とコードを含むこのスケッチの zip を投稿しました。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);
}
4

2 に答える 2

3

OPENGL レンダラーで正常に動作する Geomerative ライブラリを使用できます。すぐそこにあります:http: //www.ricardmarxer.com/geomerative/

これは、OPENGL で正常に動作する Geomerative で動作するように調整された、提供された例です。

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();
}
于 2012-07-17T21:21:04.203 に答える