« 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
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[25] 240 24990 Hier 23:15:05
moonboots 
Questions & Réponses [WIP] animatique vers projet réél : comment concilier les fichiers ? 4 145655 Hier 21:38:43
doudoulolita 
Questions & Réponses debutant- engrenage en pointe    [1][2] 10 319 Hier 19:19:47
CBY 
Moteur de jeu GameBlender et alternatives [WIP] Godot Engine - Projet Arsenal    [1][2][3] 22 2313 Hier 17:02:47
Redstar 
Questions & Réponses Raccourcis clavier qui ne marchent plus v 2.93.4 1 101 Hier 16:34:14
Redstar 
Questions & Réponses [résolu] Fusion 360 - recherche d'un connaisseur 1 147 Hier 16:31:30
Redstar 
Questions & Réponses Solution rendu saccade    [1][2] 17 340 Hier 08:08:02
CBY 
The Blender Clan 'tchat ANNONCE IMPORTANTE : LE BLENDER CLAN REOUVRE !! Etat des lieux sur le présent et le futur :)    [1][2][3] 22 60023 Hier 07:53:41
smogBlender 
Graphisme alternatif faire de la bd avec blender    [1][2][3]...[13] 125 11573 29/11 16:33:17
blend74 
Moteur de jeu GameBlender et alternatives [WIP] DeadSigns FPS Unity - Version alpha disponible + discord    [1][2][3]...[68] 673 152325 29/11 00:26:07
Hook 
Questions & Réponses [résolu] Découper un objet selon un autre 4 144 28/11 18:51:31
mamain83 
Questions & Réponses X-Ray uniquement en mode Solid 2 74 28/11 12:15:45
Horemheb 
Questions & Réponses Texture baké devient noir    [1][2] 14 179 27/11 07:58:33
moonboots 
The Blender Clan 'tchat Conseil pour débutante 4 390 25/11 16:24:59
Ksuhma 
Questions & Réponses Récupérer la couleur en sortie de shader 8 210 25/11 09:33:29
bibi 
Questions & Réponses Peut-on entrer les coordonnées du point visé de la caméra ? 4 164 24/11 19:16:16
CBY 
Questions & Réponses [résolu] snap fixe sur les cm ou mm 2 134 24/11 17:47:40
mamain83 
The Blender Clan 'tchat [abandonné] Clavier Corsair K55 RGB Pro / Raccourcis clavier    [1][2] 14 497 21/11 19:46:01
CBY 
Questions & Réponses Paramétrage des Particle System 0 136 21/11 10:05:15
Horemheb 
Questions & Réponses Gestion des Hook 4 196 21/11 09:26:17
Horemheb 

Qui est en ligne
124 utilisateur(s) en ligne (dont 77 sur Forums)

Membre(s): 2
Invité(s): 122


HaydenKust, HildredZeb, plus...
Nouveaux membres
WildaBasty 1/12/2021
KatherinIr 1/12/2021
HaleyValad 1/12/2021
Edmundo06V 1/12/2021
HJEAntonet 1/12/2021
JoshuaPitc 1/12/2021
ArturoMoll 1/12/2021
JamikaLass 1/12/2021
ShastaLoad 1/12/2021
ClaraChipm 1/12/2021
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Dec 29
Anniversaire d'ebrain
Jan 8
BUG de Lyon
Fev 15
Anniversaire de Dany
plus 246 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