« 1 (2)


Re: Comparer 2 meshes - script python
OverdOzed
Inscrit:
21/08/2013 19:12
De CH [+]
Post(s): 1558
En théorie il n'est pas nécessaire de passer par bmesh pour ce genre de calculs, mais bon ton code fonctionne sans souci ainsi.

Il y a juste une petite chose que je changerais, c'est subtil:

Lors de l'addition répétée de nombres à virgules flottantes, il y a un risque d'additionner de petites erreurs et qu'au final le résultat soit à côté de la vraie valeur. L'ordre d'addition joue également un rôle, il faut additionner les valeurs dans l'ordre de taille pour garder autant que possible la précision où c'est nécessaire.

Le plus simple moyen d'être tranquille avec ce genre de subtilités - même s'il y a peu de risque de gros écarts - est d'utiliser math.fsum().

Contribution le : 14/02/2017 22:58
_________________
BAddons, La Collection d'Addons de Matpi: https://github.com/qwenger/BAddons
Développeur Blender quand j'en ai le temps...

Créer un fichier PDF de la contribution Imprimer


Re: Comparer 2 meshes - script python
OverdOzed
Inscrit:
17/07/2006 14:28
Post(s): 1032
Salut Matpi et encore merci pour ton message

Je suis passé par bmesh parce que je n'ai pas trouvé d'autres solutions

Enfin si pour la surface, j'avais bien trouvé ceci:
bpy.context.object.data.polygons[0].area


Mais pour le volume d'un objet, je n'ai pas trouvé. Il existe le moyen de trouver le volume d'un objet sans passer par bmesh ?

Contribution le : 15/02/2017 11:10
Créer un fichier PDF de la contribution Imprimer


Re: Comparer 2 meshes - script python
OverdOzed
Inscrit:
21/08/2013 19:12
De CH [+]
Post(s): 1558
Il existe d'autres solutions, mais rien de tout cuit, donc bmesh te fournit effectivement la solution avec le moins de code manuel.

A l'époque j'avais fait un addon pour edddy, j'y calculais surface et volume manuellement (tiens, j'avais pas utilisé math.fsum... à changer...)
https://github.com/qwenger/BAddons/blob/master/3DView_MeshStatistics/3dview_mesh_statistics.py

Contribution le : 15/02/2017 11:48
_________________
BAddons, La Collection d'Addons de Matpi: https://github.com/qwenger/BAddons
Développeur Blender quand j'en ai le temps...

Créer un fichier PDF de la contribution Imprimer


Re: Comparer 2 meshes - script python
OverdOzed
Inscrit:
17/07/2006 14:28
Post(s): 1032
Waouh, impressionnant ton script Matpi

Je le garde et je le relirai dans quelques temps, quand j'aurais progressé J'ai vu que tu recalcules tout depuis les vertices, balèze !

J'ai fini mon script :

import bpy, bmesh, math

##### Fonctions #####

### Calcule le nombre de vertices d'un objet ###
def nbre_vertices(obj):
    n_vertices = len(obj.data.vertices)
    return n_vertices

### Calcule le nombre de faces d'un objet ###
def nbre_faces(obj):
    n_faces = len(obj.data.polygons)
    return n_faces

### Calcule la surface d'un objet ###
def surface(obj):
    bm = bmesh.new()
    bm.from_mesh(obj.data)
    area = math.fsum(f.calc_area() for f in bm.faces)
    bm.free()
    return area

### Calcule le volume d'un objet ###
def volume(obj):
    bm = bmesh.new()
    bm.from_mesh(obj.data)
    volume = bm.calc_volume()
    bm.free()
    return volume              




##### Compare les meshs #####

### Compare les meshes et crée une instance si ils sont identiques###

obj = bpy.context.selected_objects
nombre_objets = len (obj)

for n in range (0, nombre_objets):
    for m in range (0, nombre_objets):
        if nbre_vertices(obj[n]) == nbre_vertices(obj[m]) and n!=m:
            if nbre_faces(obj[n]) == nbre_faces(obj[m]):
                if round(volume(obj[n]),5) == round(volume(obj[m]),5):
                    if round(surface(obj[n]),5) == round(surface(obj[m]),5):
                        obj[n].data = obj[m].data


print("biiiiiiiiiiiiiim")



La comparaison des meshs se passent bien ! Il y avait juste un "détail" que je n'avais pas prévu Si je place 2 suzannes dans la scene, que je fais une rotation sur une d'elles, et que j'applique la transformation, le script détecte bien que c'est le meme mesh, mais au moment de l'instanciation, bien sûr, il remet le mesh sans sa rotation

Je continue à chercher !

Contribution le : 15/02/2017 12:25
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant
« 1 (2)




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 freestyle lineset : ignorer un objet spécifique pour une arrête cachée 7 162470 Aujourd'hui 02:06:22
meltingman 
Hors Sujet !! Le champilutin - tutoriel débutant - low polygone 1 46 Aujourd'hui 01:45:59
meltingman 
Questions & Réponses Vitesse d'une vidéo 8 192 Hier 19:58:58
Rimpotche 
Questions & Réponses [résolu] Matériau partiellement transparent    [1][2] 11 171 Hier 18:56:23
debutant 
Concours Défi personnage - Crée un perso utilisable en animation (pour notre prochain challenge) 0 31369 Hier 12:59:43
meltingman 
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[26] 257 30268 Hier 00:28:17
moonboots 
Questions & Réponses Objets sur aucun 'View layer' 1 46 24/01 20:43:59
Rimpotche 
The Blender Clan 'tchat W10 pour le prix d'une cacahuète    [1][2][3] 23 552 22/01 17:29:47
Bibi09 
[WIP] et travaux terminés [WIP] La pince à linge    [1][2] 11 295 21/01 18:53:10
meltingman 
Hors Sujet !! Tuto Astraonaute low-poly + rigify en 25mm 3 223 21/01 14:47:47
meltingman 
Questions & Réponses Texture et courbe de Bézier 9 216 21/01 14:19:10
Horemheb 
[WIP] et travaux terminés Pagani Zonda Barchetta 6 246 20/01 09:03:37
moonboots 
[WIP] et travaux terminés [WIP] La gabarre '' Le Gros Ventre''    [1][2][3]...[12] 112 22304 19/01 17:57:26
Guiu 
Questions & Réponses chemins suivant une déformation de surface 6 211 19/01 12:26:50
meltingman 
Questions & Réponses Armature sans parenté? 1 101 18/01 19:38:25
meltingman 
The Blender Clan 'tchat Avenir du blender clan    [1][2][3]...[41] 405 49199 17/01 20:40:59
Rimpotche 
Questions & Réponses texture eyes avec empty 1 106 17/01 13:17:33
Rimpotche 
The Blender Clan 'tchat Progression dans Blender et la 3D    [1][2] 11 608 16/01 17:37:45
Rimpotche 
Questions & Réponses [terminé] Modificateur Mirror sur un Vertex Group 2 160 16/01 15:55:36
Horemheb 
Questions & Réponses Ma caméra me saoule... 5 275 15/01 20:33:23
Lylo 

Qui est en ligne
210 utilisateur(s) en ligne (dont 97 sur Forums)

Membre(s): 1
Invité(s): 209


Armando225, plus...
Nouveaux membres
BlondellGa 2/1/2022
EileenTomk 2/1/2022
RamonaDahl 2/1/2022
SashaBeals 2/1/2022
TroyLightn 2/1/2022
PhillippBu 2/1/2022
LesterHida 2/1/2022
PansyHolm 2/1/2022
YukikoMitt 2/1/2022
Randall318 2/1/2022
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Fev 15
Anniversaire de Dany
Fev 19
Anniversaire de APPGirault123
Fev 23
anniversaire de windspirit
plus 244 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2021 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445