Voila un p'tit code qui sert a importer le type de format *.RAW, 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. 6 fichiers RAW 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 :
Global NmbRawObjet As Integer
Private Type VerticeV
X As Single
Y As Single
Z As Single
End Type
Private Type FaceV
Vertice(3) As VerticeV
End Type
Private Type RAWObjetV
NmbFace As Integer
Face() As FaceV
Nom As String
Ochar As Integer
End Type
Public RAWObjet() As RAWObjetV
Private Sub GetObjet()
On Error Resume Next
n = Split(F, vbCrLf & vbNewLine)
NmbRawObjet = UBound(n) + 1
ReDim Preserve RAWObjet(NmbRawObjet)
For I = 0 To UBound(n)
T = 1: Q = 0
If I = 0 Then T = 3: Q = 3
J = InStr(T, F, n(I))
K = InStr(2, n(I), vbCrLf)
RAWObjet(I + 1).Nom = Mid(n(I), T, K - T)
RAWObjet(I + 1).Ochar = J + Q
Next
End Sub
Private Sub GetVertex()
T = 4
For I = 1 To NmbRawObjet
With RAWObjet(I)
If NmbRawObjet <= 1 Or I = NmbRawObjet Then
Fin = Len(F)
Else
Fin = RAWObjet(I + 1).Ochar + -.Ochar - Len(.Nom) - 2
End If
S = Mid(F, .Ochar + 2 + Len(.Nom), Fin)
V = Split(S, vbCrLf)
.NmbFace = UBound(V)
For J = 0 To .NmbFace
ReDim Preserve .Face(J)
With .Face(J)
U = Split(V(J), " ")
n = 0
For K = 0 To UBound(U)
n = n + 1
W = Split(U(K), " ")
With .Vertice(n)
.X = Val(W(0)) * T
.Y = Val(W(1)) * T
.Z = -Val(W(2)) * T
End With
Next
End With
Next
End With
Next
End Sub
Sub LoadRAW(Fichier As String)
'Loading "CHARGEMENT DE " & Fichier
Open Fichier For Input As 1
F = CStr(Input$(LOF(1), #1))
Close
'Loading "OBJET"
GetObjet
'Loading "VERTICES"
GetVertex
'Loading "FIN", False
End Sub
Conclusion :
Petit code de l'importation! Tout est dans le zip!
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.