« 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 24984 Hier 23:15:05
moonboots 
Questions & Réponses [WIP] animatique vers projet réél : comment concilier les fichiers ? 4 145653 Hier 21:38:43
doudoulolita 
Questions & Réponses debutant- engrenage en pointe    [1][2] 10 316 Hier 19:19:47
CBY 
Moteur de jeu GameBlender et alternatives [WIP] Godot Engine - Projet Arsenal    [1][2][3] 22 2311 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 145 Hier 16:31:30
Redstar 
Questions & Réponses Solution rendu saccade    [1][2] 17 335 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 59860 Hier 07:53:41
smogBlender 
Graphisme alternatif faire de la bd avec blender    [1][2][3]...[13] 125 11572 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 152324 29/11 00:26:07
Hook 
Questions & Réponses [résolu] Découper un objet selon un autre 4 143 28/11 18:51:31
mamain83 
Questions & Réponses X-Ray uniquement en mode Solid 2 72 28/11 12:15:45
Horemheb 
Questions & Réponses Texture baké devient noir    [1][2] 14 178 27/11 07:58:33
moonboots 
The Blender Clan 'tchat Conseil pour débutante 4 389 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 495 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
113 utilisateur(s) en ligne (dont 64 sur Forums)

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


AlinaReite, JobieErick, plus...
Nouveaux membres
ClaraChipm 1/12/2021
DomingoGat 1/12/2021
Sherman30I 1/12/2021
AnneSchnie 1/12/2021
WillisMcAl 1/12/2021
EpifaniaEv 1/12/2021
CelsaSerle 1/12/2021
ElishaShaf 1/12/2021
HoseaC6799 1/12/2021
SelenaBtr5 30/11/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