processing / processing/processing4

Depth sorting not working for lines in PDF or SVG export

Offen
#802 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug core
Vorherrschende Sprache
Java
Sterne
494
Forks
183
Ø Merge
4 Std. 39 Min.
Gemergte PRs (30 T.)
3

Beschreibung

Created by: PBernalPolo

Description

Rendering lines or spheres on the screen works fine. When we render spheres to PDF or SVG, they are depth sorted properly. However, lines are not depth sorted; they are drawn in the order of declaration.

Expected Behavior

Lines should also be drawn according to their depth ordering (at least with hint(ENABLE_DEPTH_SORT) enabled).

Current Behavior

Lines are currently drawn according to their declaration order (even with hint(ENABLE_DEPTH_SORT) enabled).

Steps to Reproduce

Comment/uncomment each line that appears in draw().

import processing.pdf.*;
import processing.svg.*;


void setup()
{
  size( 500 , 500 , P3D );
  hint( ENABLE_DEPTH_SORT );
}


void draw()
{
  // Choose one:
  //drawToScreen();
  drawToPDF();
  //drawToSVG();
}


void drawToPDF()
{
  // Here we generate the PDF document.
  beginRaw( PDF , "output.pdf" );
  drawMyStuff();
  endRaw();
  exit();
}


void drawToSVG()
{
  // Here we generate the SVG image.
  beginRaw( SVG , "output.svg" );
  drawMyStuff();
  endRaw();
  exit();
}


void drawToScreen()
{
  // Here we just draw to the screen.
  drawMyStuff();
}


void drawMyStuff()
{
  background(255);
  lights();
  strokeWeight( 50 );
  
  // First we draw the line that should be shown on top (black).
  stroke( 0 , 0 , 0 );
  line( 250 , 50 , 100 , 250 , 450 , 100 );
  
  // Then the line that should be shown behind (red).
  stroke( 255 , 0 , 0 );
  line( 50 , 250 , -100 , 450 , 250 , -100 );
  
  stroke( 0 , 0 , 0 );
  strokeWeight( 1 );
  
  // First, draw a green sphere that should appear on top.
  pushMatrix();
  fill( 0 , 255 , 0 );
  translate( width*4/10 , height*4/10 , 50 );
  sphere( 70 );
  popMatrix();
  
  // Then draw a blue sphere that should appear behind.
  pushMatrix();
  fill( 0 , 0 , 255 );
  translate( width*3/10 , height*3/10 , -50 );
  sphere( 70 );
  popMatrix();
}

Your Environment

  • Processing version: 4.3
  • Operating System and OS version: ubuntu 22.04

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, den bereitgestellten Processing 4.3-Sketch auf Ubuntu 22.04 auszuführen und die Bildschirm-, PDF- und SVG-Ausgabe bei aktiviertem ENABLE_DEPTH_SORT zu vergleichen. Verfolge, wie Linien in den PDF- und SVG-Exportpfaden übergeben und nach Tiefe sortiert werden, und überprüfe anschließend, dass sich überlappende Linien entsprechend ihrer Tiefenreihenfolge verhalten, während das bestehende Kugelverhalten unverändert bleibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
computer-graphics
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.