Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

313
Vistas
Cómo lidiar con la intersección de caras de proyección en perspectiva

Estoy haciendo un motor 3D de proyección en perspectiva en javascript, enlace a continuación, y me encontré con este problema que quiero parchear. Cuando las caras se cruzan, una como un todo se representa encima de la otra.

Aquí hay una descripción general de cómo funciona mi sistema actualmente: cómo funciona actualmente es que obtiene todos los puntos requeridos (usando un montón de matrices de rotación y traslaciones) y una lista de todas las caras (referenciadas usando un índice a la lista de puntos (como [[2,5,4],[3,1,6,4],[2,1,3]) necesarios para la representación, luego obtiene una lista de las caras, cada una con los puntos específicos reemplazados por los puntos reales en lugar de un índice para los puntos en la lista (como [[[1,2,3],[2,1,5],[2,1,3]],[[2,1,4] ,[-2,-4,1],[0,2,6],[2,1,3]],[[1,2,3],[-2,-4,1],[2, 1,4]]]) de tal manera que se pueda cortar en una cierta Z de tal manera que no se puedan ver las cosas detrás de ellos. Luego se corta el Z usando vectores y encontrando sus intersecciones con el plano Z, cortando las partes del caras en la parte posterior del plano mientras conservan la forma exacta de las mismas en la parte frontal del plano. Luego, las caras se ordenan para renderizar, usando clasificación rápida y obteniendo la distancia promedio de la cámara para cada punto en la cara. Luego ellos se prestan a este orden.

Mi problema es que cuando dos caras se cruzan entre sí, una simplemente aparece encima de la otra, en lugar de tener la cara cortada de alguna manera para que en realidad pueda renderizarse correctamente, así:

Representación del error.

¿Este problema ya tiene nombre? Si es así, ¿qué es?

Lo que me pregunto es si es factible cortar las caras en caras más pequeñas y luego ordenarlas correctamente, de modo que las caras se crucen entre sí correctamente.

Si es así, ¿de qué manera puedo manejar esto, ya sea cambiando el formato de los datos una vez más, haciendo un ciclo for para obtener sus intersecciones, y qué puedo buscar para comprender mejor mi problema aquí y obtener una buena comprensión de las ideas de cómo solucionarlo?

Si no es así, ¿qué otro tipo de representación sería apropiado para solucionar este problema? ¿Qué recursos puedo buscar para probar y hacer un tipo de motor?

Aquí está el enlace a mi motor, modificado de tal manera que hay muchos objetos que muestran el problema:

https://3d-10-2.kittycraft0.repl.co/

(WASDEQ para moverse, teclas de flecha para mirar alrededor, c/z para acercar/alejar)

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda