Advertisement

Responsive Advertisement

Resolución de Bug "Efecto Túnel"

Estado anterior del bug

FIG 1. Diagnóstico: Filtración por túnel

Estado corregido

FIG 2. Resolución: Integridad de colisión

Informe Técnico: Resolución de Bug "Efecto Túnel"

Proyecto: Simulación de Motor de Partículas 2D (Proyecto-Q)

Módulo: src/simulation/engine.rs

1. Diagnóstico del Problema

Se identificó una vulnerabilidad física en el comportamiento de materiales con alta dispersión (específicamente Water). Los líquidos lograban evadir colisiones de tipo RigidBody, atravesando contenedores de grosor inferior a 10 píxeles.

Causa Raíz: La lógica de dispersión lateral procesaba los desplazamientos como eventos independientes en lugar de una trayectoria continua. Al fallar en d=1, el bucle seguía evaluando d=n, permitiendo la teletransportación del píxel.

Fragmento de Código Crítico (Depreciado)

for d in 1..=dispersion {
    if horiz { break; }
    try_move!(d * (current_inertia as i32), 0, horiz, ...);
    // El bucle continuaba incluso si la posición anterior estaba bloqueada.
}

2. Implementación de la Solución

Se ha implementado una validación de Bloqueo de Ruta Continuo. Este cambio asegura que el desplazamiento sea atómico y dependiente del éxito del paso inmediato anterior, respetando la física de densidades definida en assets/materials.json.

Refactorización del Motor

for d in 1..=dispersion {
    if horiz { break; }
    try_move!(d * (current_inertia as i32), 0, horiz, ...);
    
    // VALIDACIÓN CRÍTICA:
    // Si el movimiento actual falla, se aborta la búsqueda lateral.
    if !horiz { break; } 
}

3. Análisis de Impacto

  • Densidad Dinámica: Se mantiene el flujo si src_density > dst_density, pero se bloquea ante cualquier material sólido o de mayor densidad.
  • Control de Powder: Se aplicó la misma lógica a materiales granulares para colisiones diagonales.
  • Estabilidad: Eliminación total de filtraciones accidentales en contenedores estáticos.

4. Anexo: Observación de Colisión en RigidBodies

Durante las pruebas de validación de la solución anterior, se ha detectado un comportamiento anómalo en la colisión de ciertos RigidBodies. Este error de colisión está siendo documentado para su resolución en el próximo ciclo de actualización junto con la implementación del sistema de keymaps.

Error de colisión detectado

FIG 3. Evidencia del error de colisión detectado post-parche.

[Link a Documentación de Solución en curso]
Resultado: Simulación de fluidos coherente y colisiones físicamente validadas en Proyecto-Q.

Publicar un comentario

0 Comentarios