Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

Sistema de Particulas con XNA

Kartones
November 24, 2011

Sistema de Particulas con XNA

@ Universidad Politécnica de Salamanca (May 2007)

Kartones

November 24, 2011
Tweet

More Decks by Kartones

Other Decks in Programming

Transcript

  1. Agenda • Agenda • Evolución de los videojuegos • Un

    sistema de partículas simple • Content pipeline para nuestro sistema • Demos • Fin 
  2. Evolución de los videojuegos Ser unicelular Primer videojuego Formas primitivas

    Arcades Pigmentación Llegan las videoconsolas 2,5 Dimensiones Primeros FPS Salto a las 3D OpenGL/DirectX La invasión XNA: 3D al alcance de todos
  3. Un sistema de partículas simple Conceptos básicos Sprite 2D Dos

    triángulos O uno solo más velocidad, menos versatilidad • Las partículas siempre están orientadas hacia la cámara (como en el Doom 2) :) • PointSprites: Gestionar solamente el centro del sprite (un punto), al pintar se convierte a un polígono tridimensional
  4. Un sistema de partículas simple El motor de partículas •

    Entidad Partícula: Simple, contiene información de posición, masa, velocidad, aceleración, edad… • Sistema de partículas: Contiene una lista de partículas y unas reglas de cómo han de comportarse • Emitter: Forma de crear las partículas • Integrator: “Update()” de las partículas • Motor de partículas: Conjunto de N sistemas de partículas Motor de Partículas Sistema de Partículas Sistema de Partículas Partícula Partícula Partícula Partícula
  5. Content pipeline Conceptos básicos • Se importa el contenido •

    ParticleSystemImporter • Se procesa el contenido • ParticleSystemProcessor • Se escribe el contenido • ParticleSystemWriter • Se lee el contenido • ParticleSystemReader
  6. Content pipeline En detalle • Importación [ContentImporter(".pfx", DisplayName = "Custom

    - Particle System Importer", DefaultProcessor = "ParticleSystemProcessor")] public class ParticleSystemImporter : ContentImporter<ParticleSystemImported> { public override ParticleSystemImported Import(string filename, ContentImporterContext context) {} } • Procesado [ContentProcessor(DisplayName = "Custom - Particle System Processor")] public class ParticleSystemProcessor : ContentProcessor<ParticleSystemImported, ParticleSystemProcessed> { public override ParticleSystemProcessed Process(ParticleSystemImported input, ContentProcessorContext context) {} }
  7. Content pipeline En detalle • Escritura [ContentTypeWriter] public class ParticleSystemWriter

    : ContentTypeWriter<ParticleSystemProcessed> { protected override void Write(ContentWriter output, ParticleSystemProcessed value) {} public override string GetRuntimeType(Microsoft.Xna.Framework.TargetPlatform targetPlatform) {} public override string GetRuntimeReader(Microsoft.Xna.Framework.TargetPlatform targetPlatform) } • Lectura public class ParticleSystemReader : ContentTypeReader<ParticleSystem> { protected override ParticleSystem Read(ContentReader input, ParticleSystem existingInstance) {} }