Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

3D IMPORT : *.RAW (BIENTOT *.3DS)


Information sur la source

Catégorie :OpenGL Niveau : Initié Date de création : 01/03/2002 Date de mise à jour : 01/03/2002 09:12:47 Vu / téléchargé: 4 751 / 282

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
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

  • 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
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!
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de simon22 le 14/02/2005 08:45:35

Je trouve sa sympas !! Mais ne pourrai tu pas le faire sans opengl ?
Se serai encor mieux car tout le monde na pas les bibliothèques sinon c un projet sérieux qui a demander réflexion bravo 10\10
                                      bonne prog simon

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,218 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.