Application Kinect !

by Nicolas Calvi 9. mars 2012 19:29

Ca y est, nous avons réalisé une vidéo de notre application Kinect for Windows à destination d'iDTGV, une publicité interactive qui a d'ailleurs fait l'objet d'une session au Techdays 2012 par votre serviteur.

"Cette vidéo présente notre projet Kinect for Windows de "Publicité interactive". La finalité du concept de publicité interactive avec Kinect est de recréer une expérience positive avec la marque. Pour illustrer ce concept nous avons décidé de réaliser un partenariat avec iDTGV. 

Ce projet a été réalisé avec une équipe pluri-disciplinaire (Designer, Graphiste, Developpeur) et a mis en avant les problématiques de développement des gestuelles avec Kinect d'une part, et de rendu visuel (XNA) d'autre part."

Lien Webcast session au Techdays 2012

Projet CodePlex : Surface 2D Engine

by Nicolas Calvi 18. octobre 2010 14:57

Je vous présente mon deuxième projet CodePlex, un moteur 2D pour XNA 3.1 et Microsoft Surface. Il contient un moteur pour facilement faire des projets XNA sous Microsoft Surface, beaucoup de choses ont été abstraite pour vous simplifier la tâche. Vous avez les sources, c'est libre de droit, j'attend vos retours avec impatience, enjoy :)

Ca se télécharge ici : http://blacksurface2dengine.codeplex.com/

Gestion des contacts Surface sous XNA 3.1

by Nicolas Calvi 11. février 2010 15:47
Aujourd'hui je vous propose une petite librairie pour Surface que j'ai développé. Elle vous permet d'ajouter la gestion des contacts surface dans une application XNA 3.1. Pour télécharger cette librairie c'est par là : XnaTouchManager.rar (7,68 kb).

Cette librairie se compose en deux classes :

XnaTouchManager :

Classe statique qui implémente la gestion des contacts. Pour pouvoir utiliser la classe, il faut apporter deux modifications dans votre application root Surface XNA.
private void InitializeSurfaceInput()
{
  // ...
  // Placer la ligne a la fin de la fonction 

  XnaTouchManager._ContactTarget = contactTarget;
}
protected override void Update(GameTime gameTime)
{
  if (this.m_bIsApplicationActivated || this.m_bIsApplicationPreviewed)
  {
    if (this.m_bIsApplicationActivated)
    {
      XnaTouchManager.Update((float)gameTime.ElapsedGameTime.TotalMilliseconds);
    }

    // ...
    // Reste de la fonction ici
  }
}
Ensuite pour accéder aux fonctions de ce manager il existe des fonctions statiques :

- XnaTouchContact GetContact(int p_iD)
  Cette fonction récupère un contact par son identifiant, elle renvoie NULL si elle ne l'a pas trouvé.

- bool TryGetContact(int p_iD, out XnaTouchContact p_oContact)
  Cette fonction test si un contact existe, si il existe elle renvoie l'instance du contact en paramètre out, le retour de la fonction détermine si le contact a été trouvé.

Et des variables statiques rafraichis a chaque Update :
- ContactsNew : Liste des nouveaux contacts, cela veux dire qu'ils n'étaient pas présents au dernier Update.
- ContactsUpdate : Liste des contacts encore présent, cela veux dire qu'ils étaient présents au dernier Update
- ContactsOld : Liste des anciens contacts, cela veux dire qu'ils étaient présents au dernier Update et que maintenant il n'existe plus.

Cela vous permet donc de gérer facilement la mise à jour de vos conctacts.

Il reste une dernière classe : XnaTouchContact

Elle permet quand vous utilisez les fonctions  GetContact et TryGetContact de vous fournir le contact rechercher et d'où il provient (liste des nouveaux contacts, des mises à jours ou des anciens).

J'espère que cela vous sera utile, je suis aussi preneur de vos retours.

Appliquer un Shader sur le rendu final

by Nicolas Calvi 17. mars 2009 15:57

Article pour un rendu en 2D avec XNA 3.0 

Quand on développe des jeux avec XNA, on voudrais parfois appliquer un Shader sur le rendu final de la scène, à savoir l'image qui est produite après le rendu de chaque objet de notre jeu. Appliquer un Shader sur un objet est chose facile, mais sur le rendu final de la scène en est une autre.

La première question que l'on se pose : Comment récupérer le rendu final sous forme de texture 2D. Pour cela il faut savoir qu'il est possible de détourner le rendu effectué par le SpriteBatch vers une autre source de rendu que le buffer d'affichage. Pour ce la il suffit d'utiliser la fonction SetRenderTarget() sur l'objet GraphicDevice. Cette fonction permet de changer l'endroit ou le rendu est fait.

Une fois cette fonction invoquée, vous pouvez dessiner avec le SpriteBatch et pour récupérer le résultat il suffit d'appeller ResolveBackBuffer() sur l'objet GraphicDevice. Vous allez alors récupérer une Texture2D sur laquelle vous pourrez appliquer le Shader final. Il faudra par contre ne pas oublier de changer le buffer de rendu pour revenir vers le buffer d'affichage.

RenderTarget2D renderTarget;
SpriteBatch spriteBatch;

// Création du SpriteBatch

spriteBatch = new SpriteBatch(this.GraphicsDevice);

// On change le buffer d'écriture pour rendre
// la scéne dans une Texture2D de type RenderTarget2D

this.GraphicsDevice.SetRenderTarget(0, renderTarget);
this.GraphicsDevice.Clear(Color.TransparentWhite);

// On dessine notre scène

spriteBatch.Begin();

// ...

spriteBatch.End();

// On remet le buffer d'écriture sur l'écran

this.GraphicsDevice.SetRenderTarget(0, null);

// On charge notre Shader

Effect effect = this.Content.Load<Effect>("MonShader");

// Démarage de l'affichage, on commence par le BEGIN du spriteBatch
// puis par celui du Shader pour préparer le Device au rendu

spriteBatch.Begin();
effect.Begin();

// On effectue les passes du Shader (en prenant la texture du render target)

foreach ( EffectPass oPass in effect.CurrentTechnique.Passes )
{
    oPass.Begin();
    spriteBatch.Draw(renderTarget.GetTexture(), new Vector2(0.0f, 0.0f), Color.White);
    oPass.End();
}

// Fin du rendu du Shader

effect.End();
spriteBatch.End();

XNA 3.0 et XNE Release

by Nicolas Calvi 25. novembre 2008 12:17

Je n'avais pas encore relayé cette information, mais la nouvelle version d'XNA est disponible. Elle est couplée avec la nouvelle interface Xbox, le XNE (Xbox New Experience) qui permet enfin de compiler et créer des jeux avec le framework 3.5 Compact.

En plus des améliorations apportées par le framework 3.5, XNA 3.0 ajoute le support Zune et des Materials Shaders et une prise en charge plus élaboré des ressources sonores. Il est  bien sûr compatible avec Visual Studio 2008.

Cerise sur le gâteau, Microsoft ouvre enfin la voie aux développeurs indépendants que nous sommes, en permettant de pouvoir vendre nos créations (une fois valider par Microsoft et respectant tous les critères qualité inérant aux XBox Live Arcade) sur le marketplace de la Xbox 360. Jolie initiative qui ouvre d'intéressante perspective.


Autres

MVP

Hardware Interaction Design & Developpement

Posts récents