Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Flat rendering on PGraphics3D of PShapes created from PGraphics2D #833

Open
onimatrix opened this issue Apr 16, 2024 · 0 comments
Open

Flat rendering on PGraphics3D of PShapes created from PGraphics2D #833

onimatrix opened this issue Apr 16, 2024 · 0 comments

Comments

@onimatrix
Copy link

onimatrix commented Apr 16, 2024

Calling createShape() directly will use the Applet renderer.
If this renderer is set to be of type P2D, the resulting shape seems to ignore any z value set to it's vertices.
I'm guessing that this shape contains some optimizations aimed at 2D rendering.

There should be a warning when using this kind of "flat" PShape on a P3D renderer.
Maybe even a different PShape class to make it foolproof.
Also, it would be great if 3D PShapes could be created without needing to reference a PGraphics3D that is in the "draw state".

Here's a piece of code to replicate the issue:

PGraphics g3D;
PShape shape;

void setup()
{
  size(800, 600, P2D);
  g3D = createGraphics(width, height, P3D);
  
  //g3D.beginDraw(); // uncomment to fix flatness
    shape = createShape(); // change to g3D.createShape(); to fix flatness
  //g3D.endDraw(); // uncomment to fix flatness

  shape.beginShape(LINE_STRIP);
    shape.vertex(0, 0, 0);
    shape.vertex(200, 0, 0);
    shape.vertex(200, 0, 200);
  shape.endShape(CLOSE);
}

void draw()
{
  g3D.beginDraw();
    g3D.background(255);
    g3D.translate(width / 2, height / 3, 0);
    g3D.rotateY(((frameCount % 400) / 400.0f) * TWO_PI);
    g3D.shape(shape);
  g3D.endDraw();
  
  image(g3D, 0, 0, width, height);
}
  • Processing version: 4.2
  • Operating System and OS version: Windows 10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant