Lecteur de fichier ms3d ascii

Soyez le premier à donner votre avis sur cette source.

Vue 7 914 fois - Téléchargée 712 fois

Description

Salut, je vous donne ce code sur lequel j'ai travaillé il y a quelque temps, il permet de lire les fichiers 3d de milkshape 3d au format Ascii.
Actuellement il y a un gros bug sur les animations, toutefois l'exemple fournis dans le zip fonctionne presque correctement.

Source / Exemple :


zip zip zip...

Conclusion :


Les fleches permettent de controler l'animation frame par frame.

L'animation dans les fichiers ms3d, ms3d ascii utilise un systeme d'os (bone) contrairement au fichier 3ds qui utilise un systeme de keyframe.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
340
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
25 août 2007

Messages postés
340
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
25 août 2007

bon g modifié la partie rendu et optimisé un peu tous ca
et aussi viré le timer pour tester le fps sans timer car tu bloque le rendu a 50 ms
donc tes fps veulent rien dire (c corrigé pour la prochaire release)
pour le pb des triangles manquants en wireframe g trouvé aussi lol
tu connais pas :
If RFillaire = False Then
PDevice.SetRenderState D3DRS_FILLMODE, D3DFILL_SOLID 'rendu solide
Else
PDevice.SetRenderState D3DRS_FILLMODE, D3DFILL_WIREFRAME 'rendu fils de fer
End If

et non pas
PDevice.DrawPrimitiveUP D3DPT_LINELIST, 1, Model3d(i).Vertices(0), Len(Model3d(i).Vertices(0))
le 1 peut etre remplacé par Model3d(i).nbtris ce qui permet en un appel de faire le rendu de N triangles au lieu de faire N appels de 1 triangle (en gros c plus rapide a l'execution)

et evite aussi au maximum les appels a settexture et setmaterial dans des boucles imbriquées

en gros il faut le faire avant puis balancer le buffer de points en liste (trianglelist)
comme suit :
si pas de texture alors
PDevice.SetTexture 0, Nothing
sinon
PDevice.SetTexture 0, texture
fin si

si material alors
PDevice.SetMaterial Pcouleur
sinon
PDevice.SetMaterial Nothing
fin si

'puis balancer les triangles
For i = 0 To Ms3dFile.NbrMesh - 1
'On dit qu'aucune texture ne sera affichée
PDevice.DrawPrimitiveUP D3DPT_TRIANGLELIST, Model3d(i).nbtris, Model3d(i).Vertices(0), Len(Model3d(i).Vertices(0))
Next i
Messages postés
589
Date d'inscription
lundi 25 août 2003
Statut
Membre
Dernière intervention
18 juillet 2010
1
Les animations en binaire c'est le même principe, je me rapelle avoir eu un resultat similaire à celui de cette source (avant tes apports), mais j'ai bugger le code :s

Amuse toi bien.
Messages postés
340
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
25 août 2007

hum je me demande si je devrais pas passer au format binaire des ms3d plus tot parceque le format ascii ... ca ** du *** :op
Messages postés
340
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
25 août 2007

ben l'interet de pouvoir charger des ms3d animés c'est qu'on peut creer un format3d perso qui supporte soit les frames soit les bones (donc faire de l'import ou de l'export de mesh vers d'autres formats)
donc si tu utilise un moteur basé sur les keyframes comme quake 2 tu peut alors le modeler et l'animer sous ms3d, puis l'exporter vers ton format 3d perso pour un jeu ou autre...
ou alors faire un editeur d'animations plus sympas que celui de ms3d comme copier/coller des keyframes pour organiser les animations ou encore avoir les animations dans des fichiers externes au model etc ...

donc oui je pense que je vais la modifier (si j'ai le temps lol)
Afficher les 23 commentaires

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.