begin process at 2012 02 16 04:20:27
  Trouver un code source :
 
dans
 
Accueil > 

Tutoriels

 > 

Tutoriaux

 > GÉNÉRATEUR 3D

GÉNÉRATEUR 3D


 Information sur le tutoriel

Note :
Aucune note

 Description

Ce tutoriel Accompagne le code "Rectangle de petzol"
http://www.vbfrance.com/codes/RETANGLE-PETZOL_49521.aspx

Il présente une façon d'enregistrer les mailles d'un filet de profil tri-D. J'ai choisi un flux xaml car la technologie Net permet de représenter le contenu en perspective, et que je n'ai rien trouvé de plus simple pour afficher ce type de données.
Maintenant que je sais afficher des images de synthèse, je vais pouvoir mettre au point le Tour. Celui-ci, tel un tour de potier, génére des soucoupes, ballons ovalles, et plus généralement tout ce qu'une application mathématique engendre par sa révolution autour d'un axe. Il me manquait de pouvoir adresser individuellement les sommets des triangles pour déformer les enveloppes de base, et surtout un moyen d'afficher le graphique. Avant d'adapter le générateur à la structure définie dans ce tutoriel, Il faut refaire le code au propre et généraliser la manipulation des maquettes dans des listes de gabarits. J'ai aussi besoin de définir une arithmétique pour gonfler, réduire, couper et greffer des filets de mailles. Et puis, j'ai toujours rien compris aux textures (pourquoi 2D ?)


Tutorial


"ABSOLUTE BEGINNER"

Finalité

Le moteur FrameWork3D.Net Affiche un rectangle


Thème:

Viewport3D/ModelVisual3D


Objet

- Traduction du rectangle de Petzold en Basic

- Sauvegarde des mailles du rectangle sur le bureau


Rubriques

.Content

/Model3DGroup/AmbientLight

/Model3DGroup/GeometryModel3D.Geometry/MeshGeometry3D

/Model3DGroup/GeometryModel3D.Material

/Model3DGroup/GeometryModel3D.BackMaterial


Application

Implémentation d'une structure de classes imbriquées en Visual Basic


Développements

Chorégraphiques & Animation vectorielle sur un rythme de Nicolaïev.

(Shaffle step hop step toe)


Lorsque le générateur d'enveloppes est sorti de mon clavier brûlant, j'ai réalisé que je ne savait pas afficher de rectangle ni de fenêtre. Quand l'information est l'objet principal d'une application, il est préférable de se reposer sur la qualité des données au moment de vérifier le bon fonctionnement des manipulations.


Cette étude simple et courte, nous servira d'exemple pour enregistrer des "filets de mailles" au format du "moteur triD" du net qui affiche directement l'image quand on clickque sur l'icône du script. Le fichier généré portera une extension .xalm qui permettra à Windows de le signaler au moteur d'affichage du Net. Nous générerons le fichier d'essai.xalm de flux de type texte sur le bureau par exemple.


Cet essai s'accompagne d'un effort sémantique pour élaborer une structure de mots Français qui feront redondance aux expressions Anglo-Saxonnes pas trop difficiles à oublier. Ceux qui travaillent avec un clavier AZERTY seront obligés de raisonner de droite à gauche car c'est plus facile de frapper "0 < variable" quand la variable est plus grande que zéro.


Comme le moteur 3D de Windows sert Fondamentalement à présenter des fenêtres en perspective, on l'appelle tout simplement Windows Présentation Fondation par ses initiales: WPF. Ses fichiers de codes sont fait pour internet et bien balisés: Le code s'apelle xalm. C'est un code inspiré de Htlm, mais si les fichiers de données sont séparées des codes de traitement, et donc plus facile à lire dans le texte. Ils conservent leur structure hièrarchique à l'intèrieur des balises.



Le rectangle de Petzold est un programme xalm trés simple, et quand on l'aura généré en basic, je parie qu'on pourra faire plus compliqué sans le consulter. Il faudra faire un didacticiel pour les animations, mais c'est pas du niveau "Absolute beginner". Il faudrait préalablement connaitre la structure des objets immobiles que nous étudions ici.


Une application xalm 3D, c'est comme de regarder une scène de spectacle par une brèche de la salle de cinéma: On reconstruit pas toujours le relief.


Beaucoup de code et peu de commentaires: Le résultat c'est qu'il faut le refaire.


Un fichier xaml commence toujours avec une référence qui ressemble à une adresse internet, mais fonctionne localement. C'est un autre aspect de la logique Microsoft. on peut l'encapsuler facilemant dans un objet Basic, et on en profitera pour écrire le titre qu'une seule fois.


Tout d'abord, la Page est soigneusement encapsulée.

Class xaml .

'Une application xalm c'est comme un film


Puis vient le tour de la bordure

Class Application


Class Grand_Angle 'Perspective

La Classe Grand Angle va gérer les effets de perspective.



Class triPot 'Point3D

Le Rectangle de Petzold est un beau quadrilatère Plat dont les quatre coins A,B,C et D ont pour coordonnées: A(0,1,-4), B(0,0,-4), C(0,1,0) et D(0,0,0).

soit un beau rectangle perpendiculaire à l'abscisse

Ce qui donne, en Basic:


Dim A As New triPot(0, 1, -4)

Dim B As New triPot(0, 0, -4)

Dim C As New triPot(0, 1, 0)

Dim D As New triPot(0, 0, 0)



Class Filet 'GeometryModel3D

Class Maille 'GeometryModel3D.Geometry

Comme chaque point d'un objet plat est fatalement lié à deux autres au moins, et comme la surface est le minimum que nous voyons, et comme c'est si simple de développer des algorythmes pour relier chaque nouveau point aux deux précédents pour automatiser la généreration des filets de mailles de points, fatalement, on a construit toute la tri-D autour de ce concept. Il est évident que les paires d'équations planes liées par un paramères généreront les points de l'avenir, mais en attendant, nous construirons des volumes fastidieux en déformant des enveloppes numériques de base.



Class Brin 'GeometryModel3D.Material

Class Corde 'GeometryModel3D.BackMaterial

On aura remarqué le petite fonction texte qui qui va générer d'objet en objet le fichier objet de la démonstration. En poursuivant l'analyse croissante du fichier, on voit que les enveloppes de points sont intégrées dans un canevas dont les couleurs du brin et de la trame sont déterminés par "Cyan" et "red". Le simple fait que ces paramètres mobilisent des bornes laisse entrevoir d'inombrable possibilités de développement de ces éléments auquel je dédie des objets, même si , pour le moment, nous nous contentons de faire transiter nos paramètres: C'est plus facile d'analyser une grande structure vide qu'une petite grosse bien remplie.


Class Sommet

Le Moteur d'affichage va récupérer chacun des trois sommets de chacun des triangles qui enveloppent le volume dans une liste de triolets d'index des triangles. J'explique: Le rectangle est coupé en 2 sur une diagonale pour faire deux triangles de part et d'autre. Petzold redistribue les index 0 1 2 et 1 2 3, qui ont un et deux en commun, ce qui fait deux diagonales 1,2 et 0,3 soit AD et BC, On voit bien que l'ordonnée est la même pour A et C, où B et D.


Dim T1 As New Sommet(0, 1, 2)

Dim T2 As New Sommet(1, 3, 2)


Class Trinode 'MeshGeometry3D

Les points sont regroupés dans les listes de l'objet trinode

Les sommets sont enregistrés dans une liste de la même manière que les points.


Class Spectacle 'Model3DGroup

Class Ambiance 'AmbientLight

Enfin, la trame et la lumière d'ambiance sont réunis comme la scène et l'éclairage d'un spectacle dans un paramètre: "Model3DGroup". Cette encapsulation marque le passage de la modélisation, où profilage, C'est sans doute à ce niveau que l'animation s'interessera à la chorégraphie et aux mouvements des décors alors que les objets précédents règleront le jeu des acteurs, isolations des danseurs, le style individuel, et les mouvements particuliers de chaque objet où personnage.


Class Sequence 'ModelVisual3D

Enfin l'analyse descendante réunira les éléments de la pièce dans un scénario pour faire le film:


Class Ouverture ' ViewPort

La séquence déplace l'action du plateau du tournage dans la salle. Il faut donner beaucoup de lumière au spectacle. Les objets élaborés dans ce didacticiel ne sont qu'une image de la structure du Net qui gère des liste et pas des structures individuelles, mais quand on possède la structure, c'est comme pour les bases de données: le reste n'est que déclarations laborieuses.


NF.



Le programme principal ne devrait pas changer beaucoup,

mais les objets sous-jacents ne sont pas encore compatibles avec mon générateur.


Public Class Form1

Dim Rectangle As New xaml

Dim A As New triPot(0, 1, -4)

Dim B As New triPot(0, 0, -4)

Dim C As New triPot(0, 1, 0)

Dim D As New triPot(0, 0, 0)

Dim T1 As New Sommet(0, 1, 2)

Dim T2 As New Sommet(1, 3, 2)


Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase .Load

With Rectangle.Main.Regard.Salle.Plateau.Piece.Scene.Trame.Canevas

.Points.Add(A)

.Points.Add(B)

.Points.Add(C)

.Points.Add(D)

.Triangles.Add(T1)

.Triangles.Add(T2)

End With


Dim S = My .Computer.FileSystem.SpecialDirectories.Desktop _

& "/Essai.xaml"

Rectangle.Print(S)

End Sub

End Class

Le résultat est pas très beau, mais ça marche. (extension.xaml)

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
WindowTitle="Rectangle"
Title = "Rectangle" >
<Border BorderBrush="Black" BorderThickness="1">
<Viewport3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<Model3DGroup>
<GeometryModel3D>
<GeometryModel3D.Geometry>
<MeshGeometry3D
Positions="0 1 -4, 0 0 -4, 0 1 0, 0 0 0"
TriangleIndices="0 1 2, 1 3 2" />
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Cyan" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
</GeometryModel3D>
<AmbientLight Color="White" />

</Model3DGroup>
</ModelVisual3D.Content>
</ModelVisual3D>
<Viewport3D.Camera>
<PerspectiveCamera Position="-1 0 4"
LookDirection="0 0 -1"
UpDirection="0 1 0"
FieldOfView="45" />

</Viewport3D.Camera>

</Viewport3D>
</Border>
</Page>

 

 Historique

02 mai 2009 15:30:09 :
Le lien avec son code est une information fondamentale.

Commentaires

Aucun commentaire pour le moment.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,265 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales