Bonjour à tous,
Je continue à developer un logiciel de CAO / FAO commencé en 2011
Il est codé avec VB.NET, avec quelques parties en C#
Pour l'affichage en 3D et aussi en 2D, j'utilise Open GL avec la DLL OpenTK version 1.0.278.44921
Je me dis que ça doit être obsolète...
Surtout que j'utilise une méthode assez ancienne (qui devait correspondre au début d'Open GL), à savoir qu'à chaque affichage j'envoie toutes les données![]()
Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 GL.Begin(BeginMode.Triangles) For j = 0 To STL_ListeT.Count - 1 STL_ListeT_Current = STL_ListeT.Item(j) STL_ListeColor3_Current = STL_ListeColor3.Item(j) n = STL_ListeT_Current.Count \ 12 For i = 0 To n - 1 GL.Color3(STL_ListeColor3_Current.Item(i)) k = 12 * i GL.Normal3(STL_ListeT_Current.Item(k), STL_ListeT_Current.Item(k + 1), STL_ListeT_Current.Item(k + 2)) GL.Vertex3(STL_ListeT_Current.Item(k + 3) + dtx3D, STL_ListeT_Current(k + 4) + dty3D, STL_ListeT_Current.Item(k + 5) + dtz3D) GL.Vertex3(STL_ListeT_Current.Item(k + 6) + dtx3D, STL_ListeT_Current.Item(k + 7) + dty3D, STL_ListeT_Current.Item(k + 8) + dtz3D) GL.Vertex3(STL_ListeT_Current.Item(k + 9) + dtx3D, STL_ListeT_Current.Item(k + 10) + dty3D, STL_ListeT_Current.Item(k + 11) + dtz3D) Next Next GL.End()
Curieusement ça reste assez rapide, ça ne commence à perdre en fluidité que lorsque la pièce compte plus de 200.000 triangles et ça devient pénible voir inutilisable au delà de 1.000.000 de triangles
Une fois l'objet affiché, avec la souris :
- je ne fait que bouger le point de vue (ou l'éclairage)
- parfois je modifie, j'ajoute ou je retire juste quelques éléments
Il serait plus pertinent, lors des mouvements de pièces à la souris au lieu de tout renvoyer à chaque fois, de pouvoir réutiliser les données dans la carte graphique et de changer seulement la position de la caméra et de l'éclairage.
Ca serait bien, si c'est possible, de pouvoir modifier, supprimer ou ajouter des elements en laissant des autres dans la carte graphique. Mais si j'arrive déjà à ne pas renvoyer toutes les données à chaque affichage ça sera très bien.
J'utilise les objets suivants avec Open GL :
- Lines
- LineStrip
- LineLoop
- Quads
- QuadStrip
- Triangles
- TriangleStrip
- TriangleFan
Si besoin je peux me passer des Quads, des TriangleStrip et TriangleFan pour n'utiliser que des triangles.
En revanche, j'ai besoin d'afficher des lignes, ça serait une grosse galère de créer des cylindres de petit diamètre à la place.
J'utilise aussi la transparence, ce façon modérée mais nécessaire (une surface plane au dessus de la pièce, pour visualiser un plan de coupe ou un niveau)
J'ai des fenêtres comportant plusieurs zones OpenGL que mon programme affiche en même temps (typiquement : vue en 3D, vue de dessus en 2D, et vue en coupe en 2D), ça aussi c'est nécessaire
EDIT : j'ai aussi besoin de pouvoir afficher les triangles 'à l'envers', avec une couleur dédiée, dans un mode d'affichage de mon programme (pour vérifier la présence de surfaces orientées dans le mauvais sens)
Enfin, si on pouvait afficher quelques textes de façon simple ça serait super mais c'est un détail.
Ne m'étant pas intéressé au sujet depuis des années, je ne sais pas trop ce qu'il en est...
Vous me conseillez quoi ?
Je ne cherche pas la toute dernière version ; simplement une méthode plus optimale, on va dire un compromis moins obsolète
Comme dit au début, c'est un logiciel fait en .NET, le logiciel doit tourner sous Windows 7 et suivants.
Un compatibilité avec Windows XP serait un plus mais je peux m'en passer (NB : il y a souvent des ordinateurs anciens associés aux machines d'usinage, car la mécanique n'évolue pas aussi vite que l'informatique)
A bientôt
Partager