| Q&A |
MICROSOFT
3D XAML & WPF (Windows Presentation Foundation)
Mitsuru FURUTA - Microsoft FRANCE
mai 2007 |
| |
 |
"WPF
amène la 3D dans l’interface de nos applications
dans le but de créer de nouvelles ergonomies.
On peut par exemple imaginer la 3D pour animer des transitions
ou bien même pour simuler un comportement naturel
tel qu’un bloc-notes dont on ferait tourner les
pages.
Sous Vista avec le thème Aero activé,
l’ensemble du bureau s’affiche via la technologie
WPF (applications .Net ou natives)."
<
Le mode Aero de Windows Vista utilise WPF |
|
| |
|
| Q1 |
Quel
est le rôle de de WPF ? |
| A1 |
WPF
(Windows Presentation Foundation) est la nouvelle API de programmation
d’interface Windows. J’entends par là, toutes
les interfaces de type client riche allant du simple tracé,
aux formulaires applicatifs. Le but de WPF est d’apporter
une expérience utilisateur plus riche via des possibilités
graphiques avancées, la gestion des médias, du
son et des documents. Techniquement, ce moteur repose sur DirectX
pour accéder physiquement à l’écran.
Les impacts directs en sont des capacités d’affichage
vectorielles indépendantes de la résolution de
l’écran, une accélération matérielle
de l’affichage (tracés, gradients, transparence
alpha, 3D, etc) et donc une meilleure utilisation du processeur
graphique libérant ainsi le processeur central.
WPF apporte également la possibilité de définir
ses interfaces de manière externalisée sous forme
de texte à travers le format XAML. Ce schéma xml
particulier mappe les fonctions de l’API binaire rendant
ainsi leur définition portable et indépendante
de .Net. |
| |
|
| Q2 |
Grâce
à WPF, des éléments 3D peuvent-ils être
plus facilement intégrés dans des applications
.Net? |
| A2 |
Oui,
tout à fait. WPF supporte la 3D et des éléments
entiers peuvent être convertis en objects WPF (via xaml)
par de nombreux designers/convertisseurs de modèles 3D.
Ces objets ainsi définis en xaml sont tout simplement
ajoutés à une application WPF qui va les manipulés
comme s’ils avaient été écrits par
code.
J’ajouterai cependant un bémol car WPF n’est
pas fait pour manipuler des modèles très complexes,
donc n’imaginez pas importer dans vos applications WPF
des polygones à 1 millions de triangles. |
| |
|
| Q3 |
Est-ce
que WPF est uniquement présent sur plateforme Vista? |
| A3 |
Non,
WPF est une des briques de la version 3.0 de .Net. Cette version
est native et obligatoire dans Vista mais s’installe également
sous Windows XP SP2 et Windows Server 2003 SP1.
Les applications sont 100% compatibles quelque soit la plateforme
qui porte le framework 3.0. Dans le cas d’exécution
simultanée de plusieurs applications WPF (directX en
fait), les ressources seront beaucoup mieux gérées
sous Windows Vista. Les versions antérieures de Windows
ont une implémentation de DirectX qui n’est pas
optimisée pour manipuler de multiples fenêtre simultanément. |
| |
|
| Q4 |
Quel
est le rôle de 3D XAML ? Existe t-il des passerelles avec
d'autres formats tels que Dassault 3D XML, X3D, Collada (qui
sont des formats 3D sous syntaxe XML) ? |
| A4 |
3D
XAML n’est pas un format ! C’est du XAML !
De même que l’ensemble du schéma XAML est
à la limite entre xml et objets, les tags 3D du schéma
xaml ne font que référencer des objets de Direct3D.
Nous pouvons donc considérer « 3D XAML »
comme un sous-ensemble de XAML dédié à
la définition des modèles et des scènes
3D.
On peut trouver sur le web un bon nombre de convertisseurs (http://blogs.msdn.com/mswanson/articles/WPFToolsAndControls.aspx)
et même des plugins directement intégrés
pour les outils de design majeurs.
Ces différents outils générent en général
un fichier de ressources XAML qu’il suffit ensuite t’attacher
au projet. |
| |
|
| Q5 |
Le
déploiement d'applications WPF est-il possible sur le
web ou sur équipements embarqués (UMPC, Smartphones...)? |
| A5 |
Je
vais majoritairement dire non. Les applications WPF ne s’exécutent
que sur les OS cités dans la question 3, accompagnés
du framework .Net 3.0. Il existe cependant une possibilité
qui consiste à développer des applications navigationnelles
(xbap) qui facilitent l’intégration dans un navigateur
(navigation en séquence, historique). Le référencement
de l’application se fait bien via une URL mais la technologie
sous jacente est ClickOnce qui va assuré le déploiement
transparent de l’application sur le poste client. On ne
peut donc pas vraiment parler d’application Web…
Le framework 3.0 de .Net n’existant pas sur les équipements
embarqués, il n’est pas possible d’y faire
tourner des applications WPF. |
| |
|
| Q6 |
Quel
est le lien entre DirectX et WPF ? Est-ce que WPF peut être
utilisé par des applications ludiques (jeux) ? |
| A6 |
WPF
utilise la technologie DirectX pour s’afficher à
l’écran.
La principale différence se fait au niveau de la philosophie
de développement.
DirectX est une API de bas niveau (bien que passant par COM).
Son but est d’offrir au développeur à accès
complet à toutes les possibilités de la carte
graphique. Ainsi une application DirectX peut interroger le
hardware sur ses capacités et impacter l’exécution.
Le développeur construit ainsi frame par frame son interface
graphique.
A l’opposé, WPF offre une abstraction quasi complète
du hardware. Le but est de fournir au développeur d’applications
windows GDI, les mêmes principes de programmation.
Ainsi
WPF apporte :
Un
modèle de composants.
Une classe Application qui masque la boucle principale des messages
et la connexion à la fenêtre windows sous-jacente.
Des contrôles de haut niveaux (boutons, listes, panels,
treeview, etc) qui respectent le thème de windows.
Tous les principes d’interface windows (focus, tabulation,
capture de la souris, etc).
L’abstraction complète de l’affichage frame
par frame.
Quant
à la question des jeux, à moins que le jeu ne
soit vraiment très simple, on arrive très vite
aux limites de WPF en matière de nombre de triangles
et également de synchronisation des informations de WPF
avec DirectX. En effet, tous les systèmes automatiques
de WPF pour l’abstraction du hardware ont un coût.
Ce coût limite donc WPF à l’usage de scènes
3D relativement simples mais qui bénéficieront
de fonctionnalités avancées (binding sur tous
les éléments, moteur d’animations, « Click »
de souris sur les éléments 3D !!). |
| |
|
| Q7 |
La
3D est de plus en plus présente chez Microsoft : l'interface
Aero de Windows Vista, XNA game studio... La 3D constitue-t-elle
un nouvel axe de développement pour Microsoft? |
| A7 |
On
peut voir ça comme ça. WPF amène la 3D
dans l’interface de nos applications dans le but de créer
de nouvelles ergonomies. On peut par exemple imaginer la 3D
pour animer des transitions ou bien même pour simuler
un comportement naturel tel qu’un bloc-notes dont on ferait
tourner les pages.
Sous Vista avec le thème Aero activé, l’ensemble
du bureau s’affiche via la technologie WPF (applications
.Net ou natives). Les API DesktopWindowManagement permettent
d’interagir avec ce nouveau bureau mais n’offre
pour le moment que peu de fonctionnalités. On peut imaginer
que cela s’améliore dans l’avenir.
De
manière plus générale (hors WPF), l’essor
des technologies 3D est toujours d’actualité chez
Microsoft. Le framework XNA cible un unique développement
pour une exécution soit sur Windows soit sur XBOX tout
en s’appuyant sur la puissance, la flexibilité
et la facilité de développement de .Net.
DirectX
10 apporte quand à lui une révolution en matière
de qualité de rendu en tirant les bénéfices
du nouveau format des drivers graphiques de Windows Vista.
Voici
une description détaillée de DirectX 10 en français
pour les spécialistes :
http://www.microsoft.com/france/msdn/directx/modele-de-driver.mspx.
http://www.microsoft.com/france/msdn/directx/directx10-point-de-vue-du-developpeur.mspx |
| |
|
| Q8 |
Des
animations 3D WPF peuvent être lues par Internet Explorer.
Quels nouveaux usages visez-vous ? |
| A8 |
Toujours
le même principe, nous pouvons en effet intégrer
des applications WPF dans Internet Explorer mais ce n’est
pas une technologie web. Le poste client requiert le framework
.Net 3.0.
Nous sommes cependant en train de développer une technologie
rendant portable les technologies .Net et WPF. Pour être
plus exact, cette technologie ne sera pas compatible avec WPF
mais avec un sous-ensemble de Xaml.
Toutes les informations ici : http://silverlight.net/ |
| |
|
| |
|