Voila un p'tit code qui sert a importer le type de format *.OFF, Objet File Format, le rendu se fait en opengl est n'est pas optimisé a fond, mais permet au neophyte (sous la condition de la curiosité) d'apprendre quelques petites bases OpenGL. Le code d'importation est tres petit comme vous pourrais le voir. Utilisation : Pour faire tourner plus ou moins vite l'objet : fleche gauche ou droite, pour s'approcher ou s'éloigner du centre: fleche haut et bas, zoom paramétrable, 3D plein, 3D Fil de fer, activer/desactier la grille et la rotation automatique. Pour apprécier le rendu, j'ai intégré une petite lumiére symbolisée par la boule, vous pouvez paramétrer dans le code DrawGL cette lumiére. 8 fichiers OFF sont fournis. Vous pouvez retrouver l'esemble des formats que j'ai importé dans le code "3D Import : Tout : *.ASC, *.ASE, *.OBJ, *.OFF, *.RAW.
Source / Exemple :
Private Type CoordV
X As Integer
Y As Integer
Z As Integer
End Type
Private Type FaceV
FChar As Variant
A As Integer
B As Integer
C As Integer
End Type
Private Type OFFObjetV
NmbVertex As Integer
NmbFace As Integer
Vertex() As CoordV
Face() As FaceV
End Type
Global OFFObjet As OFFObjetV
Private Sub GetVertex()
U = Split(F, vbCrLf)
If U(0) <> "OFF" Then MsgBox "Format de fichier OFF invalide!": Exit Sub
V = Split(U(1), " ")
T = 4
With OFFObjet
.NmbVertex = V(0)
.NmbFace = V(1)
For I = 2 To UBound(U) - 1
V = Split(U(I), " ")
If UBound(V) = 2 Then
ReDim Preserve .Vertex(n)
With .Vertex(n)
.X = Val(V(0)) * T
.Y = Val(V(1)) * T
.Z = -Val(V(2)) * T
End With
n = n + 1
Else
M = M + 1
ReDim Preserve .Face(M)
With .Face(M)
.A = Val(V(3))
.B = Val(V(2))
.C = Val(V(1))
End With
End If
Next
End With
End Sub
Sub LoadOFF(Fichier As String)
'Loading "CHARGEMENT DE " & Fichier
Open Fichier For Input As 1
F = CStr(Input$(LOF(1), #1))
Close
'Loading "VERTICES"
GetVertex
'Loading "FIN", False
End Sub
Conclusion :
Un code tout petit! Tout est dans le zip! (Allez plus qu'un ;))
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.