Descargar

Sistema de partículas. Aplicación a los gráficos en tiempo real

Enviado por Pablo Turmero


    edu.red

    Sistema de Partículas Un sistema de partículas es un conjunto de pequeños objetos que están en movimiento usando algún algoritmo Modelar fuego, humo, explosiones, lluvia, nieve, estrellas… No es una forma de renderizar, sino de animar los objetos que renderizamos.

    edu.red

    Sistema de Partículas La idea es controlar la creación, movimiento, cambio y eliminación de partículas durante el tiempo. Tenemos un numero n máximo de partículas, cada una se crea en un instante de tiempo t, evoluciona a lo largo del tiempo según valores propios o del conjunto de partículas

    edu.red

    Lluvia CreaciónPara cada partícula Crear en posición (z, (x, y)) aleatoria Generar velocidad (vz, (vx, vy)) SimulaciónPara cada partícula activa z = z – vz Si toca suelo y continua lloviendo z = zmax generar (x, y) (vz, (vx, vy))

    edu.red

    Lluvia RenderizaciónPara cada partícula Dibujar linea (x, y, z) a (x+vx, y+vy, z+vz) FinalizaciónCuando no ha de continuar lloviendo yPara cada partícula desactivada es cierto

    edu.red

    class CRain : CObject3D {public: CRain(); CRain(int numParticles); ~CRain(); void Create(int numParticles); void Destroy(); int GetNumParticles(); void Simulate(float fIncTime); virtual void Render(); virtual void RenderShadow(){}; bool IsActive(); void Active(bool bActivate=true); void SetDimensions(float fX, float fY, float fZ); void GetDimensions(float&fX, float&fY, float&fZ);protected: float m_fDimx, m_fDimy, m_fDimz; bool m_bActivate; int m_nParticles bool m_bCreated; CParticleRain* m_pParticles; };

    edu.red

    Consideraciones El número de partículas no debe ser excesivo para no saturar la CPU Usar arrays de tamaño fijo y controlar el número de partículas “vivas” No solo la posición es objeto de simulación, se puede simular el tamaño, el color… La simulación ha de ser realista pero de bajo coste computacional (SIMD)

    edu.red

    Ejemplo: Demo.zip

    edu.red

    Bibliografía A. Watt, F. Policarpo “3D Games: Real-time Rendering and Software Techonology” Ed. Acm-Press T. Möller, E. Haines “Real-time Rendering” Ed. A K Peters K. Hawkins, D. Astle, A. LaMothe “OpenGL Game Programming” Ed. Prima Tech