Script en Python - Optimiser la taille d'un fichier en wrl
Touriste
Inscrit:
11/01/2019 15:23
Post(s): 1
Bonjour à tous,

Voici mon problème.

J'essaie de faire fonctionner un script qui me semble "assez correct", du moins, correspondant à ce que je souhaite faire, mais il ne fonctionne pas.

En effet, je souhaite diminuer la taille de fichiers ".wrl" (pièces 3D) en automatisant cela sur plus de 3000 fichiers.
Les étapes je sais les faire de façon manuelle, j'obtiens bien un fichier moins lourd, mais je souhaite automatiser cette tâche en l'automatisant grâce à un script pour 3000 pièces.

En effet, chacune de ces pièces se composent de plusieurs élements.

Les étapes manuelles sont les suivantes :

- Conversion en un seul object ("Object Mode" sous Blinder).
- JOIN
- Je rechange de mode, "Edit Mode"
- Je sélectionne "Remove Doubles"
- Et je sauvegarde ma pièce. Je gagne environ 25-30% de la taille.

Mon Script est le suivant :

import bpy
from mathutils import Vector, Matrix, Quaternion, Euler, Color
from os import *


input_dir = "C:\\Users\\fdu\\Documents\\MesDocumentsPersos\\Programmation\\Python\\vrml-De-Base\\"
output_dir = "C:\\Users\\fdu\\Documents\\MesDocumentsPersos\\Programmation\\Python\\vrml-Allege\\"

for wrl_file in listdir(input_dir):
if wrl_file.endswith(".wrl"):

object_all = bpy.context.scene.objects
for ob in object_all:
ob.select = True
bpy.ops.object.delete(use_global=False) # Permet de supprimer les caméras (servent à rien)

filepath = path.join(input_dir, wrl_file)
bpy.ops.import_scene.x3d(filepath=filepath, filter_glob="*.wrl")

object_all = bpy.context.scene.objects
for ob in object_all:
ob.select = ob.name.startswith("Viewpoint") # Viewpoint : CAMERAS
bpy.ops.object.delete(use_global=False)

object_all = bpy.context.scene.objects
for ob in object_all:
ob.select = ob.name.startswith("Shape_IndexedFaceSet") # Shape_IndexedFaceSet -> Chaque pièce composant le wrl
if bpy.context.object.mode == "EDIT": # PB sur cette ligne à l'exécution
bpy.ops.object.editmode_toggle()
bpy.ops.object.join()

if bpy.context.object.mode == "OBJECT":
bpy.ops.object.editmode_toggle()
bpy.ops.mesh.remove_doubles(use_unselected=False, threshold=9.999999747378752e-05)

filepath = os.path.join(output_dir, wrl_file)
bpy.ops.export_scene.vrml2(filepath=filepath)



Est-ce que quelqu'un peut m'aider ? car il faut dire que je débute totalement sur ce logiciel ainsi qu'en Python
Merci d'avance

Contribution le : 11/01/2019 15:31
Créer un fichier PDF de la contribution Imprimer


Re: Script en Python - Optimiser la taille d'un fichier en wrl
Fou Furieux du Clan
Inscrit:
29/05/2009 19:22
Post(s): 119
Salut bubu31

D'abord bravo pour te mettre au python car la doc est velue, je le sais pour avoir essayé de m'y mettre et j'ai vite abandonné, dommage car j'ai toujours été persuadé que le script pouvait ajouter beaucoup à Blender. Faut dire qu'on trouve très peu de tutos sur le net à ce sujet (blender+python)
Si j'ai bien compris, ce script fonctionne dans Blender ? Tu l'execute par le biais de l'éditeur de texte ? Ok, si j'essaie de comprendre :
tu as un fichier source
tu as un fichier output
J'ai recréé ces deux fichiers chez moi, j'ai lancé le script, et...même erreur que toi ligne 28.
Un petit coup d’œil à la toogle system console :
File "\Text", line 28, in <module>
AttributeError: 'NoneType' object has no attribute 'mode'
ca voudrait dire que tu appelles une classe qui n'est pas reconnue, enfin je te donne ce que j'ai trouvé sur un forum :

NoneType means that instead of an instance of whatever Class or Object you think you're working with, you've actually got None. That usually means that an assignment or function call up above failed or returned an unexpected result.

Personnellement je pense que le type d'objet que tu appelles n'a pas l'attribut "mode", enfin c'est ce que j'ai compris, mais c'est à creuser.

Si un codeur passe par la...

Contribution le : 27/01/2019 15:26
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
Compte*
Nom   Mot de passe   Authentification
Message:*



[Recherche avancée]



Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
Questions & Réponses [non résolu] Ecran bleu 2 23 Aujourd'hui 18:35:32
alexmge 
Questions & Réponses [non résolu] va et vient entre sculpt et layout impossible    [1][2] 11 134 Aujourd'hui 09:56:50
manondup 
Le coin des geeks carte graphique Intel(R) HD Graphics et OpenGL    [1][2][3] 24 792 Hier 22:47:15
Bibi09 
Questions & Réponses shader 5 135 Hier 20:23:23
Rimpotche 
Moteur de jeu GameBlender et alternatives [WIP] DeadSigns FPS horreur - Première version disponible !    [1][2][3]...[56] 558 92762 Hier 12:34:39
Hook 
[WIP] et travaux terminés Le Tigre 4 201 Hier 11:19:09
lastrodamo 
Questions & Réponses [non résolu] le Rendu de preview et le rendu final ne sonts pas pareils 2 64 03/07 23:18:27
Pinguinax 
Questions & Réponses [non résolu] Particules system dynamique 0 57 03/07 13:27:09
Ramar 
[WIP] et travaux terminés bas sculpture corps    [1][2] 18 316 01/07 18:57:21
prometheusx 
[WIP] et travaux terminés Générateur d'oreille - Beta testeurs bienvenus 8 450 30/06 10:28:08
Rimpotche 
Le coin des geeks Vieilles cartes graphiques : Quadro FX5800 ou Quadro 4000 ? 3 198 30/06 07:48:42
Poutrator 
Questions & Réponses Changement de caméra 2 188 28/06 19:10:40
prometheusx 
Moteur de jeu GameBlender et alternatives hARMful engine    [1][2][3]...[8] 78 8763 28/06 16:44:44
Bibi09 
Questions & Réponses Faire pousser des cheveux 2 176 28/06 16:01:40
Rimpotche 
Questions & Réponses convertir un mesh en hair et le relier 2 130 28/06 11:11:44
prometheusx 
Questions & Réponses feu rapide 2 186 28/06 07:22:23
francerf 
Questions & Réponses collision de tissu 1 130 27/06 23:54:35
prometheusx 
Questions & Réponses blender 282a 2 175 27/06 18:39:51
LALA 
Moteur de jeu GameBlender et alternatives Nouveau fangame de Rayman 5 1431 27/06 11:25:02
lucky 
Questions & Réponses Retrouver un calque 1 132 26/06 18:55:10
Rimpotche 

Qui est en ligne
32 utilisateur(s) en ligne (dont 20 sur Forums)

Membre(s): 0
Invité(s): 32


plus...
Nouveaux membres
Dartank 5/7/2020
manondup 3/7/2020
Ramar 3/7/2020
Blendnoob 2/7/2020
blendmus 30/6/2020
Rafalithique2020 29/6/2020
rainbowfruit 27/6/2020
Flamby22 25/6/2020
mitronougna1 25/6/2020

patapote
25/6/2020
Dernier Ajout
mirages-preview~0.jpg

Evènements à venir
Jui 11
BUG de Lyon
Jui 23
Anniv du BlenderClan !
Aou 7
anniversaire Cem47
plus 269 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2020 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445