Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UN PEU DE 3D AVEC XAML ET BLENDER


Information sur la source

Catégorie :WPF Source .NET ( DotNet ) Classé sous : xaml, 3d, viewport3d, blender, mesh Niveau : Débutant Date de création : 13/02/2007 Date de mise à jour : 04/04/2008 00:10:02 Vu / téléchargé: 8 770 / 525

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Voila, j'avais envie de m'amuser un peu.
J'ai fait un petit mesh en 3D avec Blender. Rien de bien compliqué, pour ceux qui connaissent, j'ai ajouté le fameux mesh représentant la tête de singe à ma scène 3D.
J'ai ensuite exporté ma scène au format raw.
Le format raw permet d'exporter les faces de la scène 3D, séparées par des \n.
Chaque face est composée de points, qui sont des triplets de valeurs décimales. Un triplet représentant bien sûr des coordonnées en X, Y, et Z.

La fenêtre XAML est composée d'un viewport 3D, dans lequel on met un mesh. Vous noterez au passage une petite animation sur la rotation du mesh (dans le code XAML).

Le programme lit donc le fichier raw de la scène, en récupère les faces, puis les points de chaque faces, pour les mettre dans notre mesh.
Blender permet de faire des polygones avec plus de 3 côtés, ce que ne permet pas DirectX. J'ai donc un petit algo qui tranforme un polygone à 4 côtés (type caré, rectangle, parrallèlogramme, ...) en deux triangles. Par contre, les polygones avec plus de 4 côtés ne sont pas gérés.
De plus, seule la géométrie de l'objet est gérée. Le matériau de celui-ci est mis en dur dans le XAML.

 

Conclusion

Vous aurez besoin du framework .net 3 (donc Windows XP et supérieur) pour exécuter ce code.
Développé avec Visual C# Express.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de glom le 20/02/2007 17:25:44

Très fort, je suis impressionné !
Moi j'arrive même pas à charger une combobox en xaml, et regarde ce que tu arrives à faire.
A quand la calculatrice en moins de 2mn36 en xaml (private blague) ?

signaler à un administrateur
Commentaire de yoannd le 21/02/2007 02:32:01

hé hé hé !
Trop fort ! J'ai lu ton commentaire avant de voir le fameux pseudo de ma petite britney cuissiette préférée (oui, vous avez bien lu ^^), et je me suis souvenu de ce fameux jour de défi... Vous pourrez pas comprendre, les gens, c'est de la private joke tout ça... mais que de souvenir, nan de diou...

signaler à un administrateur
Commentaire de Teladryl le 15/12/2008 19:02:17

Bonjour,

"Blender permet de faire des polygones avec plus de 3 côtés, ce que ne permet pas DirectX."

Alors Blender utilise OpenGL. Si tu compare Blender à DirectX alors tu compare une voiture avec un piston...

"un petit algo qui tranforme un polygone à 4 côtés (type caré, rectangle, parrallèlogramme, ...) en deux triangles. Par contre, les polygones avec plus de 4 côtés ne sont pas gérés."

Un quad (polygone a 4 coté) est toujours 'séparer' en 2 triangles, pour la simple et bonne raison => le prossesseur graphique actuelle est incapable de faire des calculs sur autre chose que des Triangles. Donc DirectX ou OpenGL, les deux fonctionne pareil au final, sauf que OpenGL transforme sans que tu le sache le quad en 2 triangle.

Voila :)

signaler à un administrateur
Commentaire de yoannd le 16/12/2008 10:26:21

"Alors Blender utilise OpenGL. Si tu compare Blender à DirectX alors tu compare une voiture avec un piston..."
--> Ma phrase n'était pas tout à fait exacte, je suis d'accord, mais je pense qu'elle était assez claire : avec Blender, on peut faire des carrés (peu importe qu'ils soient découpés en triangles ou non lors de l'affichage) et on ne peut pas injecter directement ces carrés dans une appli utilisant DirectX. C'est pour justifier le fait qu'on ait un algorithme de découpage des carrés. Mais je pense que tout le monde avait compris ça...
Pour ceux que ça interesse, les instructions OpenGL pour dessiner des carrés : http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=05
... Ce genre d'instruction n'existe pas en DirectX.



"Un quad (polygone a 4 coté) est toujours 'séparer' en 2 triangles, pour la simple et bonne raison => le prossesseur graphique actuelle est incapable de faire des calculs sur autre chose que des Triangles. Donc DirectX ou OpenGL, les deux fonctionne pareil au final, sauf que OpenGL transforme sans que tu le sache le quad en 2 triangle."
--> Heuuu... ouais... big news... Je vois pas pourquoi tu apportes cette précision qui est déjà présente dans l'article. Encore une fois, je justifie mon algorithme de découpage des carrés par le fait que celui-ci n'est pas déjà implémenté dans DirectX (alors qu'il l'est dans OpenGL). On ne parle pas ici du rendu effectué par la carte graphique, mais bien de ce que prend en entrée la librairie graphique (carrés ou pas carrés). Et pour la phrase que tu cite, elle était là pour signaler qu'un carré à découper en triangles, c'est facile, mais dès que tu touches à un peu plus de faces, c'est déjà bien plus délicat.

signaler à un administrateur
Commentaire de Teladryl le 16/12/2008 13:05:33

Ton problème viens de la conception de ton modèle 3D alors. Pour une optimisation maximal, moins tu as de Quad mieux c'est.

signaler à un administrateur
Commentaire de yoannd le 16/12/2008 13:59:11

Non, le problème vient de la fonction qui exporte en raw dans Blender... et encore, cet outil est fait pour exporter des faces triangulaires et/ou carrées parce que OpenGL les comprend... ils se sont pas trop occupés de savoir si Directx pouvait avaler des carrés ou pas, ce que je comprend.
De plus, le modèle 3D, ce n'est pas moi qui l'ai fait, c'est celui qui est fourni en exemple dans Blender (l'équivalent de la teapot dans OpenGL).

signaler à un administrateur
Commentaire de zainal le 16/02/2009 16:47:36 8/10

Merci pour cette source. Je suis en plein apprentissage de XAML et WPF et je voulais voir un programme de ce genre.

"Ton problème viens de la conception de ton modèle 3D alors. Pour une optimisation maximale, moins tu as de Quad mieux c'est."
Sauf que du point de vue du designer 3D les quads c'est le pied parce que ça te permet d'avoir un lissage impeccable (contrairement aux triangles). Donc voila pourquoi la tête de singe est en quads.

signaler à un administrateur
Commentaire de Teladryl le 16/02/2009 21:09:07

http://www.developpez.net/forums/d631389/technologies-divers/developpement-2d-3d-jeux/3d-triangle-quadrangle/

A vous de voir :)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Udapte de la fenêtre Viewport3D [ par sondos01 ] Bonjour, Je travaille sur WPF pour Importer une image 3D . Cependant, j'effectue des changement sur differentes parties de l'objet 3D. J'utilise un Th WPF - Update de Viewport3D [ par sondos01 ] Bonjour, Je travaille sur WPF pour Importer une image 3D . Cependant, j'effectue des changement sur differentes parties de l'objet 3D. J'utilise un Th Imposer des contraintes en 3D [ par sondos01 ] Bonjour à tous,   Je travail sur une application 3D  en WPF/XAML ( VS 2005 .Net 3.0). J'ai un Model3DGroup qui regroupe <spa Problème pour trace une ligne en WPF [ par sondos01 ] <td colspan="3" class="txt4t" style="padding-top: 4px; Creer un Cylindre 3D en WPF [ par sondos01 ] Bonjour, Je cherche à tracer en C# un cylindre en 3D pour l'utiliser en WPF . Aurez vous des tutoriels intéressant la dessus.Merci , SondosNB: VS 2005 Image et TabItem ??? [ par gglamicose ] Bonjour a tous !! Voila, je suis en train de faire une petite application en xaml, et je me disais que ce serrait sympa d'ajouter une image a coté du XAML Modifier ResourceDictionary dans le code csharp [ par mfabio1902 ] Bonjour,je débute XAML et je dois modifier en cliquant sur un bouton la couleur de fond (dégradé) de toutes mes fenetres.Toutes mes fenetres ont comme [Xaml]WPF ItemsSources et ItemTemplate without ListBox [ par Theridion1 ] Bonjour,Pour illustrer mon soucis je part sur le Sample suivant :http://msdn.microsoft.com/en-us/library/system.windows.documents.tablecell.aspx &lt;! Demande d'info concernant une creation de jeu 3d... [ par PEGASUS400 ] Bonjour a tous, Nous sommes un petit groupe de jeunes etudiants en informatique et nous voulons creer une entreprise de developpement de jeux 2d/3d ma ARCHITESCTE 3D SYLVER 2008 [ par marvilan ] Bonjour,Je souhaite faire avec Architecte3D Silver 2008 une clôture de façade mur en pierre de 9m50 de longeur (une ligne droite) et inclure  2 portai


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,624 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.