
Le Forum de TI-BANK.fr Le forum de la banque de programmes pour calculatrices graphiques Texas Instruments (aide débutants, résolution problèmes...). |
| | | [W.I.P] Make3D pour Nspire CAS | |
| |
| Auteur | Message |
|---|
Mic Administrateur


Age: 25 Classe: Prof de Maths Calculatrice(s): Voyage 200 & TI-Nspire CAS Messages: 11452 Efficacité: 13 Localisation: Orléans Date d'inscription: 07/09/2004
Divers Dernière note en maths: -/20
 | Sujet: Re: [W.I.P] Make3D pour Nspire CAS Mar 3 Mar - 18:37 | |
| |
|  | | Levak Elite


Age: 16 Classe: TermS Calculatrice(s): TI-83+ && TI-Nspire CAS Messages: 822 Efficacité: 9 Date d'inscription: 27/11/2008
Divers Dernière note en maths: 10.5/20 /o\
 | |  | | Mic Administrateur


Age: 25 Classe: Prof de Maths Calculatrice(s): Voyage 200 & TI-Nspire CAS Messages: 11452 Efficacité: 13 Localisation: Orléans Date d'inscription: 07/09/2004
Divers Dernière note en maths: -/20
 | Sujet: Re: [W.I.P] Make3D pour Nspire CAS Mar 3 Mar - 22:47 | |
| lol juste le gif animé ^^ |
|  | | Levak Elite


Age: 16 Classe: TermS Calculatrice(s): TI-83+ && TI-Nspire CAS Messages: 822 Efficacité: 9 Date d'inscription: 27/11/2008
Divers Dernière note en maths: 10.5/20 /o\
 | Sujet: Re: [W.I.P] Make3D pour Nspire CAS Sam 7 Mar - 16:28 | |
| Je suis en train de concocter un script d'export en python pour blender pour enregistrer en fichier texte les matrices de points et de faces d'un modèle 3D. Pour l'instant je n'en suis que aux points, j'ai eu du mal à démarrer, ça ne faisait seulement que 3 jours que je venais de commencer python xD | Spoiler: | | | | Code: | import Blender print "\n\n"
############################################################# # Fonction prise sur le net permettant d'arrondir un resultat # #############################################################
Round = lambda x, n: eval('"%.' + str(int(n)) + 'f" % ' + repr(x))
############################# # On initialise les variables # #############################
lobjet = Blender.Object.GetSelected()[0] lemesh = lobjet.getData () print "Il y a ", len(lemesh.verts), " vertices dans l'objet" debut = "cube := " resultat = "" matrice = [0,0,0,0] mat_x = mat_y = mat_z = mat_h = []
########################################################## # Boucle pour lister tous les verticles et leurs positions # ##########################################################
for vertice in lemesh.verts: mat_x = mat_x + [Round(vertice.co[0], 1)] mat_y = mat_y + [Round(vertice.co[1], 1)] mat_z = mat_z + [Round(vertice.co[2], 1)] mat_h = mat_h + [1]
matrice[0], matrice[1], matrice[2], matrice[3] = mat_x, mat_y, mat_z, mat_h resultat = debut+str(matrice) resultat = resultat.replace("'","") print "\n",resultat
################################## # On stock le tout dans un fichier # ##################################
logfile = open('test.txt', 'w') logfile.write(resultat) logfile.close()
|
|
Qui donne dans la console de blender:
| Spoiler: | | |
Il y a 8 vertices dans l'objet
cube := [[1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0], [1.0, -1.0, -1.0, 1.0, 1. 0, -1.0, -1.0, 1.0], [-1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0], [1, 1, 1, 1, 1, 1, 1, 1]]
|
et enfin le fichier test.txt (nommé pour l'instant comme ça) contenant :
cube := [[1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0], [1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0], [-1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0], [1, 1, 1, 1, 1, 1, 1, 1]]
@+ ^^
edit:
finit la partie pour les faces
| Spoiler: | | |
| Code: | import Blender print "\n\n"
############################################################# # Fonction prise sur le net permettant d'arrondir un resultat # #############################################################
Round = lambda x, n: eval('"%.' + str(int(n)) + 'f" % ' + repr(x))
############################# # On initialise les variables # #############################
lobjet = Blender.Object.GetSelected()[0] lemesh = lobjet.getData () print "Il y a ", len(lemesh.verts), " vertices dans l'objet" obj_name = "cube" assign_p = ":=" resultat = "" matrice = [0,0,0,0] mat_x = mat_y = mat_z = mat_h = [] numverts=0
########################################################## # Boucle pour lister tous les verticles et leurs positions # ##########################################################
for vertice in lemesh.verts: mat_x = mat_x + [Round(vertice.co[0], 1)] mat_y = mat_y + [Round(vertice.co[1], 1)] mat_z = mat_z + [Round(vertice.co[2], 1)] mat_h = mat_h + [1] numverts+=numverts matrice[0], matrice[1], matrice[2], matrice[3] = mat_x, mat_y, mat_z, mat_h resultat = obj_name+assign_p+str(matrice) resultat = resultat.replace("'","") print "\n",resultat
########################################################## # Boucle pour lister toutes les faces et leurs références # ##########################################################
mat_f = [] for face in lemesh.faces: mat_fa = [] for vert in face.v: fa = ( ' %i' % (vert.index + 1) ) mat_fa.append(fa) mat_f.append(mat_fa) resultat2 = obj_name+"_edge"+assign_p+str(mat_f) resultat2 = resultat2.replace("'","") print "\n",resultat2
################################## # On stock le tout dans un fichier # ##################################
logfile = open('test.txt', 'w') logfile.write(resultat+":"+resultat2) logfile.close()
|
|
Bon, j'avoue, je me suis aidé d'internet...
hop hop hop
cube:=[[1.0, 1.0, -1.0, -2.0, 2.0, 1.0, -1.0, 0.0], [3.0, 1.0, 1.0, 3.0, 2.0, -0.0, 1.0, 4.0], [0.0, 0.0, 0.0, 1.0, 1.0, 2.0, 2.0, 2.0], [1, 1, 1, 1, 1, 1, 1, 1]]:cube_edge:=[[ 1, 2, 3, 4], [ 5, 8, 7, 6], [ 1, 5, 6, 2], [ 2, 6, 7, 3], [ 3, 7, 8, 4], [ 5, 1, 4, 8]] |
|  | | Levak Elite


Age: 16 Classe: TermS Calculatrice(s): TI-83+ && TI-Nspire CAS Messages: 822 Efficacité: 9 Date d'inscription: 27/11/2008
Divers Dernière note en maths: 10.5/20 /o\
 | Sujet: Re: [W.I.P] Make3D pour Nspire CAS Lun 9 Mar - 19:59 | |
| NOUVELLE VERSION ! http://levak.ifrance.com/prgm/files/Make3D_v4.tnsquoi de neuf ? : - Script python enfin finit et bouclé - Mode Solid/Wire enfin résolu mais pas fixé (seulement pour des objets convexes) - Inverse les normales (relatif au mode Solid) - Optimisation générale (round() au lieu de approx()) Voilà un pitit tuto : 1) Obtenir Blender v2.48 et Python v2.5 ou v2.6 (attention, pas la v3.01 je ne garanti pas que ça marche !)http://www.blender.org/download/get-blender/http://www.python.org/download/2) Lancer Blender :Une console s'ouvre (n'y touchez pas) puis Blender de lance :  3) Importer un modèle :Vous avez à disposition des menus comme sur d'autres logiciels, voici comment importer. File > Import Là vous trouverez votre bonheur parmi les multiples formats gérés, après rien de plus simple.  Ce tuto ne fait pas l'objet de l'apprentissage de Blender. Si vous voulez vous y intéresser il y a de bonnes bases ici : http://blenderclan.tuxfamily.org/html/modules/content/index.php?id=3 Attention  Sélectionner l'objet (un seul) que vous voulez exporter avec CLIC DROIT S'il est en plusieurs morceaux, sélectionnez les tous avec [MAJ] +CLIC DROIT puis [CTRL] + [J] + [Enter] 4) Ouvrir le script "exporter.py"Mon script est disponible ici : http://levak.ifrance.com/sessions/exporter.py (clic droit > enregistrer la cible sous..) On va faire simple : Mode Text Cliquez sur l'icône à gauche symbolisé par une grille, puis passez en mode Text  Puis Text > Open  Et on va chercher à l'endroit où on a enregistré le fichier pour obtenir ceci :  moi j'ai des couleurs 5) Lancer le script(mettez votre curseur sur la partie texte) Pour lancer un script Python sur Blender, il faut utiliser le raccourcis [ALT] + [P] et on obtient ceci :  - "Nom" correspond au nom de l'objet 3D sur la calculatrice, mais pas forcément le nom du fichier. - "Arrondir à" permet d'optimiser la matrice de points. Il correspond au nombre de chiffres après la virgule. - "Mode d'export" vous invite à choisir la dimension de la matrice des faces. Un quadrilatère est formé de 4 points, donc 4 colonnes. On peu faire rentrer un Triangle dans cette matrice en dupliquant le dernier point. Un Triangle est composé de 3 points donc 3 colonnes. On peut faire rentrer un Quadrilatère dans cette matrice en divisant ce dernier. Si vous estimez avoir plus de quads que de tri, préférez un export en Quadrilatères, sinon en Triangles. Après avoir remplis les champs, appuyez sur "Exportez sous...." et le script vous invite à enregistrer le fichier d'export qui sera au format *.TXT, sinon appuyez sur "Annuler". Voilà un exemple de fichier généré : | Code: | Cube:=[[1.0,1.0,-1.0,-1.0,1.0,1.0,-1.0,-1.0],[1.0,-1.0,-1.0,1.0,1.0,-1.0,-1.0,1.0],[-1.0,-1.0,-1.0,-1.0,1.0,1.0,1.0,1.0],[1,1,1,1,1,1,1,1]]:Cube_edge:=[[1,2,3,4],[5,8,7,6],[1,5,6,2],[2,6,7,3],[3,7,8,4],[5,1,4,8]] |
Il se décompose en plusieurs parties :
Cube:=[ [1.0,1.0,-1.0,-1.0,1.0,1.0,-1.0,-1.0], [1.0,-1.0,-1.0,1.0,1.0,-1.0,-1.0,1.0], [-1.0,-1.0,-1.0,-1.0,1.0,1.0,1.0,1.0], [1,1,1,1,1,1,1,1] ] : Cube_edge:=[ [1,2,3,4], [5,8,7,6], [1,5,6,2], [2,6,7,3], [3,7,8,4], [5,1,4,8] ]
Vous pouvez noter que la syntaxe est prête à être directement générée sur la calculatrice !
Cube est une matrice de points, elle comprend sur la première ligne les coordonnées x des points, sur la secondes les coordonnées Y et enfin sur la troisième les coordonnées Z. La dernière ligne permet de faire des transformations non linéaires telles que la translation, donc elle doit systématiquement rester à la valeur "1"
Cube_edge est la matrice des faces. L'ordre est dans le sens trigonométrique. elle informe la référence de chaque faces du point auquel il est rattaché.
6) Exporter et envoyer le fichier sur la calculatrice
Vous avez tous d'abord besoin de Nspire Text Editor disponible ici: http://ti.bank.free.fr/index.php?mod=archives&ac=voir&id=397
Puis de TI Nspire Comuter Link disponible ici : http://education.ti.com/educationportal/sites/US/productDetail/us_nspire_computerlink.html
Commençons :
- On copie colle le contenu du fichier d'export vers la fenêtre Nspire Text Editor :

J'ai remarqué que lorsque l'on met tel quel le texte, ça va beaucoup plus vite ! Donc ne mettez pas le texte en mode "Expression Maths"
- On enregistre, on exporte au format *.tns

- Envoyer le fichier *.tns vers la TI avec TI Computer Link - Envoyer également Make3D.tns

7) Sur Calculatrice
- Ouvrir le classeur contenant les matrices, sélectionnez tout avec [CTRL] + [A], copier le tout avec [CTRL] + [C]

- Sortez du classeur et ouvrez Make3D.tns Lisez de préférence le readme puis allez à la fenêtre 1.3 (page de calcul)
- Coller les matrices avec [CTRL] + [V] puis [Enter]
- Pour éviter les reboots de la calto car surcharge des buffers, effacez l'historique avec [Menu] + [5]

- Enfin lancez le programme avec make3d( " cube " )
Attention ! L'argument doit être une chaîne de caractère, donc mettez le nom de la variable entre guillemets.

- Enfin, admirer le joli Cube sur la page 1.2 !!

Fin du tutoriel. Toute réutilisation de ce tutoriel est interdite sans mon autorisation préalable.
Levak
__________________________
Est-ce qu'il y a quelqu'un de volontaire pour faire une version Word ou Open Office ? (j'ai un peu la flemme ^^) Allez à vos com's @+ |
|  | | Emyl Elite


Age: 17 Classe: Terminal S ^^ Calculatrice(s): Ti-84+ TI-83+ TI-82 Messages: 212 Efficacité: 4 Localisation: Sur sa chaise (électrique) Date d'inscription: 21/12/2008
Divers Dernière note en maths: 7.5/10 ouais !! coef 1/8... oh :(
 | Sujet: Re: [W.I.P] Make3D pour Nspire CAS Lun 9 Mar - 20:48 | |
| allez en format pdf, et tu l'ajoutes dans | Citation: | "-----l'encyclopédie CSF----- Calculatrices Sans Frontières" | de Critor ^^ _________________ Voila ce que moi avoir dit à vous
|
|  | | Mic Administrateur


Age: 25 Classe: Prof de Maths Calculatrice(s): Voyage 200 & TI-Nspire CAS Messages: 11452 Efficacité: 13 Localisation: Orléans Date d'inscription: 07/09/2004
Divers Dernière note en maths: -/20
 | Sujet: Re: [W.I.P] Make3D pour Nspire CAS Lun 9 Mar - 22:31 | |
| hola c'est du lourd !! Bravo pour ce travail ! |
|  | | Levak Elite


Age: 16 Classe: TermS Calculatrice(s): TI-83+ && TI-Nspire CAS Messages: 822 Efficacité: 9 Date d'inscription: 27/11/2008
Divers Dernière note en maths: 10.5/20 /o\
 | Sujet: Re: [W.I.P] Make3D pour Nspire CAS Mar 10 Mar - 0:42 | |
| |
|  | | critor2000 Modérateur


Age: 31 Classe: Professeur lycée/collège Calculatrice(s): 2xNspire (1er prix concours TI-Bank 2008), V200, 2x92+HW1, 92II, 2x92, 89HW2, 85, 2x84+SE, 2x84+, 1x83+SE, 1x83+, 2x82Stats.fr, 4x82, 76.fr, Collège+, Graph35+, Graph25+, fx-92Collège2D+, 3xHP48GX Messages: 2324 Efficacité: 24 Localisation: dans le train entre Montpellier et Nîmes (France) Date d'inscription: 25/10/2008
Divers Dernière note en maths: 14/20
 | Sujet: Re: [W.I.P] Make3D pour Nspire CAS Mar 10 Mar - 0:53 | |
| Super! Qu'attends-tu pour nous le mettre sur le portail? Tu vas exploser les téléchargements et les votes... |
|  | | Levak Elite


Age: 16 Classe: TermS Calculatrice(s): TI-83+ && TI-Nspire CAS Messages: 822 Efficacité: 9 Date d'inscription: 27/11/2008
Divers Dernière note en maths: 10.5/20 /o\
 | |  | | Emyl Elite


Age: 17 Classe: Terminal S ^^ Calculatrice(s): Ti-84+ TI-83+ TI-82 Messages: 212 Efficacité: 4 Localisation: Sur sa chaise (électrique) Date d'inscription: 21/12/2008
Divers Dernière note en maths: 7.5/10 ouais !! coef 1/8... oh :(
 | Sujet: Re: [W.I.P] Make3D pour Nspire CAS Mar 10 Mar - 11:12 | |
| GG :p au fait tu peux poser encore des captures d'écran, pour ce qui n'ont pas (hélas) n-spire stp ? c'est super beau, champion ^^ _________________ Voila ce que moi avoir dit à vous
|
|  | | Levak Elite


Age: 16 Classe: TermS Calculatrice(s): TI-83+ && TI-Nspire CAS Messages: 822 Efficacité: 9 Date d'inscription: 27/11/2008
Divers Dernière note en maths: 10.5/20 /o\
 | Sujet: Re: [W.I.P] Make3D pour Nspire CAS Mer 11 Mar - 19:23 | |
| Le tuto en vidéo. La vidéo est faite à l'ava vite donc pas de retouche textuelle au fur et à mesure des actions, faut déjà avoir dans la tête tout le processus ^^ 1ere vidéo ici (cliquer sur la liste à gauche) http://mc_fps5.servhome.org/TPE_site/TPE_site_v1/vid.html(6 minutes 16) Vous verrez les longs moments de calcul.... @+ |
|  | | Levak Elite


Age: 16 Classe: TermS Calculatrice(s): TI-83+ && TI-Nspire CAS Messages: 822 Efficacité: 9 Date d'inscription: 27/11/2008
Divers Dernière note en maths: 10.5/20 /o\
 | Sujet: Re: [W.I.P] Make3D pour Nspire CAS Mer 11 Mar - 21:38 | |
| Bonsoir all Bon, j'ai deux idées qui vont faire un ptit peu retarder la sortie de la version stable, pour éviter de retracer x fois la même ligne, vu que pour chaque faces, il y a des arêtes juxtaposées, donc à ne pas retracer... - Stocker les couples de points dans une liste au fur et mesure et tracer ou non la ligne si le couple existe déjà (demande des ressources) - Gérer une nouvelle matrice contenant cette fois si les couples des points pour tracer directement les lignes, tout en vérifiant leur normale avec la matrice des faces (des fichiers plus gros > mémoire) Deux solutions qui ont un point fort mais aussi un point faible (mis entre parenthèses) voilà voilà... c'est l'un ou l'autre, je ne sais pas trancher @+ |
|  | | Levak Elite


Age: 16 Classe: TermS Calculatrice(s): TI-83+ && TI-Nspire CAS Messages: 822 Efficacité: 9 Date d'inscription: 27/11/2008
Divers Dernière note en maths: 10.5/20 /o\
 | |  | | Levak Elite


Age: 16 Classe: TermS Calculatrice(s): TI-83+ && TI-Nspire CAS Messages: 822 Efficacité: 9 Date d'inscription: 27/11/2008
Divers Dernière note en maths: 10.5/20 /o\
 | Sujet: Re: [W.I.P] Make3D pour Nspire CAS Lun 23 Mar - 18:26 | |
| Gros Up encore une fois ! J'ai crée une librairie pour mon viewer Make3D ! Ce qu'il y a dedans : - Duplicate_mesh("Obj", 'Mesh", x , y, z ) duplique les coordonnées de Mesh et d'une copie de Mesh translatée de x, y et z, pour les stocker dans Obj -Join_Mesh("Obj", "Mesh1", "Mesh2", x, y, z) concatène les coordonnées de Mesh1 et celles de Mesh2 appliquées d'une translation x, y et z pour les stocker dans Obj - Mk_cube("Obj", L) Crée un cube de longueur d'arêtes L pour le stocker dans Obj - Mk_Quad("Obj", h, P, Def) Crée un objet composé de quadrilatères, de hauteur h, et dont les deux extrémités ont P nombre de points, avec comme résolution Def, pour le stocker dans Obj - Mk_Tri("Obj", h, P, Def) Crée un objet composé de Triangles, de hauteur h, et dont la base a P nombre de points, avec comme résolution Def, pour le stocker dans Obj - QuadToTri("Obj") converti les matrices de faces 4n (quadrilatères) en matrices 3n (triangles) - TriToQuad("Obj") converti les matrices de faces 3n (Triangles) en matrices 4n (Quadrilatères) A noter que les noms d'objets doivent être mis sous forme de chaîne et que la conversion QuadToTri d'une matrice déjà convertie grace à TriToQuad, peut générer des faces inutiles. Enfin, je vais sûrement faire un script pour retirer les doublons occasionnés par duplicate_mesh et join_mesh  Quand à l'optimisation, je n'ai rien trouvé, et j'ai l'impression que j'ai par ce biais là ralenti le prog ?!! En tout cas, voici un exemple de modèle généré UNIQUEMENT sur la calto (pds le cours de maths)    Bon c'est vrai j'avoue, j'ai un peu trafiqué moi même les matrices de points pour avoir un scale que d'un seul coté, mais sinon je n'ai utilisé que mes librairie !  @+ edit: plein de screen : |
|  | | | | [W.I.P] Make3D pour Nspire CAS | |
|
| Page 4 sur 8 | Aller à la page : 1, 2, 3, 4, 5, 6, 7, 8  |
| | Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |
|