Télécharger le zip
C'est super ce que vous (ou tu!!!) avez fait.10/10
ben Ciberrique m'as filé ca base est j'ai cherché et codé :pmerci ScSami :pcomme ca maintenant on a un vrai loader de 3ds en vb :p
J'ai t'ai envoyer un message sur ce qu'est de mon avis. Ensuite ScSami je confirme les dire de shadowmoy toutes l'ouverture du fichier 3d et de moi sauf ce qui concerne le mapping donc texture et materiaux...Continue comme sa shadowmoy, la final est proche.
J'ai oublier un truc, shadowmoy si tu veux un jour participer a un jeu en vb, contacte moi.
BravoBon boulotAfyn - Navedac
Bon, je voulais juste dire qu'il y avait encore quelques "bugs" qui sont un peu chiants...Par exemple, je ne peux pas choisir, à l'ouverture, DirexctX sinon ça plante directe (x!).Au passage entre le mode DirecteX et Soft, y'a quelques probs de réinitialisations.De plus, systématiquement, j'ai des probs avec "0,4"...L'accès au clavier est peut-être à revoir... J'ai entre autre de gros probs de caméra, toujours entre le mode normal et directX...Sinon, pour les textures BRAVO, franchement, rien à dire.J'attends la Finale avec une immense impatience.
superbe !
je mettrais bientot une mise a jour qui corrige des bugs et optimise le code ...parce que la c'est plutot foutoire dnas la lecture du fichier et dans le rendu...et j'ajouteri le support des materials :p
super.bonne continuation10/10
bon g corrigé le bug des vertices en trop mais (oui y a un mais) les models dont le poit d'origine ne se trouve pas au point 0,0,0 (x,y,z) auront 1 a 3 vertices en trop en mode filliaire.je m'explique : ces 3 vertices correspondent a la ligne entre le point 0 du monde et le point 0 de l'objet 3d je corrigerais ca en recalant l'objet 3d sur l'axe 0,0,0le hic c'est que ca necessite de recalculer les coordonnées de tous les vertex :o/ donc je me demande si ca va pas ramer je vous dit quoi des que c'est codé ;p
shadowmoy, pour recentrer l'objet tu n'as qu'as recaler les vertex au meme endroit que je corrige les normal.J'espere que sa t'aidera un peu.
j'ai viré cette partie de ton code et restructuré le code sous forme de structure (c pour le prochain update sur le site) g recodé la partie afficahge et rotation (x,y,z) entierement via des matrices enfin tu verras dans le prochain updateg aussi modifié la facon de lire les noms de materials et meshs dans le 3ds (ah optimisation quand tu nous tiens :op)me reste a regler pas mal de truc pour la version 1.3.5 ...enfin prochain update bientot ... (c promis je me depeche ;op)
et oui y avait encore un fix a faire pour ne pas avoir a corriger les normals héhé :op
Je le pensais mais je ne suis pas expert en 3ds ....J'attend ton update pour pouvoir continuer le miens.
ben moi non plus j'analyse les fichiers 3ds avec un editeur hexa pour trouver les chunks pas referencés lolle pire c que ca marche :p
Ptdr, moi sa ira, les chunk je l'ai est presque tous.
C'est quoi un Chunk ???Dit Ciberrique, si tu les a presque tous, pourquoi tu ne nous les fait pas partagé ???Sinon, quelqu'un pourrait-il m'expliquer (en gros) comment, via une image de textures (donc, avec plusieurs textures dessus) on peut texturer un obj 3D ??? C'est quoi le concept ???C'est à dire, comment on découpe (aplatit) un obj3D pour lui assigner sa texture ???[faites simple svp]
Un chunk c'est comme une partie du fichier, si tu prend mon projet du viewer 3ds ou celui ci (il me semble) tu as un treeview avec les hierarchies, les hierarchies sont les chunk, cependant le treeview ne les contients pas tous.Pk je les partages pas parceque il le sont deja ...www.wotsit.org pour ceux qui ne connaisse pas.En ce qui concerne le texturing je sais qu'il faut donné des coordonées tu et tv pour chaque vertex ensuite apliqué la texture correspondant à l'objet par rapport a son mapping de materiaux mais je connais âs trop, shadowmoy a plus de connaissance.J'espere t'avoir un peu eclairer.a+
Oui, merci :-)
pour les coordonnées 2d c tout simple :un point en 3d à 3 coordonnées x,y,z on lui ajoute deux coordonnées u et v qui correspondent a ces coordonnées x et y sur un plan 2d mais ! ses coordonnées sont comprise entre 0.0000 et 1.000 pourquoi ? tout simplement car ca permet d'utiliser des texture de taille differentes (ex: 128* 128 ou 256*256 ou 512 *512 ,etc...)on a donc truc.tu*256=coordonnée X du point sur l'imagetruc.tv*256=coordonnée Y du point sur l'imageensuite on sait qu'il faut 3 points pour faire un triangledonc si les trois point du triangle on des coordonnées u et v on pourras le texturer en gros prendre une partie triangulaire sur l'image 2d et la mettre sur l'objet 3dj'espere que c'est pas trop compliqué expliqué comme ca ? :op
bon la prochaine version sera plus "simple"g encore optimisé le code et viré la partie softwarequi ne sert a rien car si l'exe plante au demarage si dx n'est pas installé ben pas de programme donc pas de rendu software donc ca degagedonc le tout est maintenant sous dx8g encore modifié le module de lecture et refait des modifs dans le rendu sous dx et g modifié le systeme des cameras :pupdate sur le site bientot...
bon la prochaine version sera plus "simple"g encore optimisé le code et viré la partie softwarequi ne sert a rien car si l'exe plante au demarage si dx n'est pas installé ben pas de programme donc pas de rendu software donc ca degagedonc le tout est maintenant sous dx8g encore modifié le module de lecture et refait des modifs dans le rendu sous dx et g modifié le systeme des cameras :p
COOL, MERCI.Tes explications sur les coordonnées U/V, CLAIR, CONCIS, bref PARFAIT !!! :-)))Là au moins j'ai birn compris.En ce qui concerne l'update... je suis vraiment IMPATIENT de voir ça :-)))Je suis surtout impatient de voir la nouvelle gestion de la caméra...Ceci dit, j'ai quelques idées à te suggèrer pour de futures versions (et j'espère sincérement qu'il y en aura...) :- Ouverture des DXF (voir des MAX !!! ;-)- 4 Femêtres (au fait, super la fenêtre de la texture...)- Faire un OCX (Contrôle ActiveX) pour pouvoir éventuellement intégrer une fenêtre de vision dans un projet... Ce qui nous permettrait de nous concentrer sur l'éditeur plus que sur le rendu en cas de conception de "softs" 3D.@+++++++++++
héhé pour l'ocx c'est prevu des que j'aurait fixé la lecture complete des 3ds doc voila la version plus simple qui seras encore optimisée tres bientot :op
shadowmoy, j'aimerais savoir jusqu'ou tu comptes allé dans la lecture des 3ds, car suivant ou tu vas je pense que l'on pourrait relier nos forces ....
ben je compte lire le maximum d'infos et pouvoir aficher les lumiere, materials etc.. etc.. sous dx et une fois que tous seras ok je transformerai le module en classe pour en faire un objet et ensuite un ocx voila :)
tu fais ce que tu veux du code. Cependant oublie pas qu'il y a des animations dans les 3ds, est cette partie m'interresse.
hum t'as des fichiers 3ds avec animation a me mailer ?pasque moi je doit pas en avoir enfin pas sur et chercher parmis tous mes 3ds pas trop le temps :p
bon en gros on a la vue 3d sous 3dsmax mais (eh oui y a un mais)reste a fixer l'angle de vue pour avoir la bonne vue en 0,0,0 car la on a une vue "inversée" enfin plutot retournée sur certains axes je bosse dessus ainsi que un complement de la lecture des materials et de l'affectation par index des materials au objets (ou face) reste a savoir ou lire ses infos...
Je peux me procurer des 3ds avec des animations.
mise a jour des cameras pour ceux que ca interesse :p
limite y commence a y avoir un peu trop de commentaire lol :p
prochaine etapes : ajouter les lumiere pour le shading et finir la lecture des materials pour les utiliser sous dx directement
C'est mieux mais y'a encore des ptits problèmes au niveau des caméra...Quand tu fais une translation, ça tourne !!!Pi y'en a marre de cette erreur au démarrage... faut enlevé cette vilaine virgule pour les valeurs par défaut (de rotation entre autre) et mette un foutu point "." !!!Sinon, c'est TOP. J'attends vraiment la suite avec une grande impatience...
comment ca ca tourne ? si tu parle du fait que l'objet semble "tourner c normal car la vue actuelle correspond à une vue perspective de l'objet donc quand tu effectue une translation de l'objet ta camera semble rester fixe et l'objet semble tourner un petit peu mais je te rassure c'est tout ce qu'il y a de plus normal, c'est pareil sous 3dsmax et gmax voila :p pour l'erreur de "," moi ca buggait pas mais je vais corriger ca :)
Ok.Merci :-)
Pensez à lire la partie "Historique de cette source" pour saoir les dernieres modif que j'ai fait dessus :op
y a encore qq fichiers 3ds que j'arrive pas a lire correctement mais ca viendra ...
apparament ca vient du fait qu'il y ai des cameras et des lights dans la scene 3ds et ca fait planter la lecture grrr
pour les animation je vais commencer à bosser dessus mais ca risque d'etre bien hard je pense donc je vous promet rien à ce niveau la ... mais on va essayer :op
Ben on est patient ;-)))Mais bon, franchement, les animes, on s'en fout un peu... Le principale c'est que le prog fonctionne bien.Moi je suis pour une sensible amélioration de l'interface utilisateur avant de passer aux animes... mais ce n'est que mon humble avis...LA FINALE, LA FINALE, LA FINALE, LA FINALE... sinon on fait la grève de la faim.
tu entends koi par amelioration de l'interface ?on sait jamais vous pourriez me donner des idées :psinon je vais peut etre essayer d'ajouter les axes origines pour chaque ojbect si je trouve comment les faire sous d3d ;opsinon ben pour les anims y a du taf :o/
Salut shadowmoy,Tres bonne source et euh... est ce que ce code peut fonctionner en dx9 ?Merci pour ce code ;) 10/10BILALoch
Ah oui. J'oubliais : comment calcule t on les coordonnées u et v d'un objet 3D (oui ca peut servir des que l'on veut selectionner un objet ;) meme avec des fichiers *.X) parce que je n'ai pas tres bien compris sur la source ?Merci d'avanceBILALoch
on ne les calcul pas en fait chaque point au depart a une coordonnée U et V egale a zero ensuite on peut s'amuser a faire un pseudo calcul pour les mettre en forme sur un plan 2d mais cela necessite toujours de devoir les modifier a la main via un utilitaire de mapping 2d comme l'outils "unwrap uvw" sous 3dsmax je pense justement ajouter qq outils comme ca pour pouvoir modifier les coordonées uv d'un modele n'en ayant pas mais ca vas me prendre un peut de temps..en fait je pense a des fichiers *.uv un peut comme mes fichiers *.mat qui seront externes et se charge a l'ouverture.ensuite des que seras ok j'ajouterais certainement une interface plugins pour pouvoir exporter et pourquoi pas importer des modeles sous d'autres formats simples comme les fichiers *.obj, *.ase , et pourquoi pas *.x :opca seras pas tres difficile ca ;op une fois bien sur que le module 3ds seras transformé en classe héhé
je pense que tu veut parler plutot de selectionner un face de l'objet 3d, dans ce cas tu n'as pas besoin des coordonnées uv qui ne servent qu'au mapping de la texture 2d sur l'objet 3d...
Y'a toujours ce problème de "0,1" au lieu de "0.1" !!!Note, faudrait redim automatiquement la fenetre à l'ouverture dans le form_load...
Oui c'est exactement ca. Je souhaite selectionner une face ou le mesh mais je sais pas trop comment faire.
chaque face est referencée par 3 points et chaque point a des coordonnées xyzdonc si tu selectionne Face(10)tu recuperes :Face(10).point1.xFace(10).point1.yFace(10).point1.zFace(10).point2.xFace(10).point2.yFace(10).point2.zFace(10).point3.xFace(10).point3.yFace(10).point3.zensuite il te suffit de creer une face temporairedont les points auronts ces coordonnées et tu auras une selection dans la partie 3d par contre pour pouvoir selectionner une face en cliquant directement sur l'objet dans la fenetre de rendu je sais pas encore fo que j'y reflechisse...ScSami> essaye la new version et dit moi si le bug de virgule est toujours present..
Ok, merci ShadowMoy. Si tu as des nouvelles, dis le moi...BILALoch
Impec !!
euh perso j'ai un message d'erreur (je suis sous direct X 9.0c XP SP2) ...J'ai droit à un "Erreur Automation" ...Quelqu'un pourrait m aider s il vous plait ?D'après VB c'est la ligne Set PDevice = PDirect3D.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, Form1.Picture1.hwnd, CheckHardwareTL(), PStructParameter)