3d import : *.raw (bientot *.3ds)

Description

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!

Codes Sources

A voir également

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.