See Sharp
Is it really just a matter of point of view ?

Playing around with DirectX

September 10, 2009 14:48 by salfab

Une fonctionnalité que je voulais implémenter dans StopMo.Net était la possibilité d’effectuer des expositions multiples sur la même image afin de créer un effet de flou dans le but de rendre les mouvements plus réalistes.

Si en WPF il est très facile d’afficher à l’écran de multiples images superposées à l’aide de multiples éléments Images empilés dans une Grid, il n’est pas aussi trivial d’exporter le résultat obtenu sous forme d’un fichier sur disque.

Une option séduisante et simplissime de résoudre le problème avec WPF uniquement serait d’utiliser une VisualBrush ayant comme source un empilage d’objets Image, pour peindre ensuite une surface et la sauver dans un fichier. malheureusement, l’image ainsi produite serait alors déjà traitée par WPF, altérant l’image, modifiant sa taille et sa résolution, voire même de lisser l’image.

Le but étant ici de conserver une image ayant le moins de distorsion possible, cette option n’est pas envisageable. Deux options plus pures étaient alors possibles.

La première étant d’utiliser GDI+, la seconde d’utiliser Direct2D en conjonction avec l’API WIC de Microsoft, utilisée en arrière plan par WPF pour la gestion de rendu d’images.

Microsoft ayant sorti très récemment un wrapper (Windows7 API Code Pack) pour DirectX 10/11, Direct2D et le Windows 7 SDK. Ce wrapper inclut également (pour l’instant partiellement) WIC. Direct2D est la solution Microsoft pour la gestion d’affichage en deux dimensions visant à remplacer GDI+, et supportant l’accélération matérielle. J’ai donc choisi d’utiliser Direct2D, histoire également de découvrir cette nouvelle technologie.

Ce qu’il est important de savoir est que pour l’instant, le fameux CodePack n’implémente encore pas toutes les fonctionnalités de DirectX.

Direct3D 11.0, Direct3D 10.1/10.0, DXGI 1.0/1.1, Direct2D 1.0, DirectWrite, Windows Imaging Component (WIC) APIs. (DirectWrite and WIC have partial support)

Elles le seront cependant probablement dans le futur. Mes essais préliminaires m’ont donc mené à écrire quelques fonctionnalités manquantes notamment pour la création d’objets WICBitmap.

Un grand merci d’ailleurs à Florian pour son aide et sa patience lors des longues discussions que nous avons eu sur le sujet, et pour son Hack consistant à récupérer par réflexion les objets WIC utilisés en arrière plan par les classes WPF. Ceci afin d’éviter de devoir réécrire de nombreuses fonctionnalités encore manquantes dans le CodePack.

Le résultat est qu’il m’est à présent possible de superposer avec un niveau de transparence arbitraire plusieurs images, créant ainsi une superposition qui visera à donner une impression de mouvement sur une animation Stop Motion.


Nouveau projet - StopMo.Net

September 9, 2009 09:09 by salfab

Plusieurs mois, presqu'une année sans grande activité sur ce blog.

Quelques ébauches de billets tout de même, issus de problèmes techniques en WPF et WCF principalement auxquels j'ai été confronté, à développer pour qu'ils soient publiables...

Un total donc de 11 billets non publiés.

Cette fois-ci, rien de très technique, mais une nouvelle catégorie de post : Stop Motion. En effet, après avoir commencé à mes débuts en WPF à faire un programme d'animation Stop Motion (vous savez, ces films d'animation image par image), j'ai décidé de reprendre le projet après plus d'une année d'inactivité : mon niveau en WPF ayant considérablement changé et fort d'une expérience grandissante en WPF, j'ai décidé de tout jeter et de recommencer From Scratch en utilisant un joli design pattern MVVM, une meilleure découpe, une plus grande modularité, etc. du coup, me revoici sur les rails pour refaire un soft d'animation qui, je l'espère, me permettra rapidement de recommencer à faire des films d'animation (puisqu'à la base c'est quand même ça le but !)

Par la même j'ouvre également une nouvelle catégorie appelée Stop Motion sur ce blog, où je me permettrai de poster des billets en rapport avec mon hobby qu'est l'animation image par image, éventuellement mes progrès tant au niveau du développement du logiciel que des futures animations que je réaliserai.

Le logiciel en question s'appelle StopMo.Net, est écrit en C#/WPF, et utilise les SDK canon pour la communication avec un appareil photo digital : La première étape étant de supporter mon appareil Powershot (CDSDK) , puis dans un second temps, d'investir dans un appareil photo EOS DSLR et d'utiliser un autre SDK prévu à cet effet.

Canon ne supporte officiellement plus les SDK pour canon powershot, donc à terme, le support de choix pour StopMo.Net sera très probablement les appareils Canon EOS, mais il est pensé pour pouvoir ajouter de façon dynamique des providers d'image de différentes sources (Scanners, Webcam, Cameras DV, Appareils numériques d'autres marques, ... )

La date d'anniversaire de coup d'envoi du projet est donc définie : 09.09.09 : Quelle jolie date de naissance n'est-ce pas ?