processing / processing/processing4

Depth sorting not working for lines in PDF or SVG export

Abierto
#802 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

bug core
Lenguaje dominante
Java
Estrellas
494
Forks
183
Merge medio
4 h 39 min
PR fusionados (30 d)
3

Descripción

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

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza ejecutando el sketch proporcionado de Processing 4.3 en Ubuntu 22.04 y compara la salida de pantalla, PDF y SVG con ENABLE_DEPTH_SORT habilitado. Traza cómo se envían y se ordenan por profundidad las líneas en las rutas de exportación PDF y SVG, y luego verifica que las líneas superpuestas sigan su orden de profundidad mientras el comportamiento existente de la esfera permanece sin cambios.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java
Área
computer-graphics
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.