« 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 comment modifier l'échelle d'incrémentation d'un champ? 1 467 Hier 20:09:37
moonboots 
Questions & Réponses Armature en IK sur squelette complexe 3 98 Hier 18:36:27
Melodicpinpon 
Le coin des geeks vitesse d'un rendu EEVEE Windows/Linux 5 103 Hier 15:18:10
Bibi09 
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[22] 218 21544 23/10 16:17:44
moonboots 
Moteur de jeu GameBlender et alternatives [WIP] Godot Engine - Projet Arsenal    [1][2] 18 1294 22/10 16:38:22
Redstar 
Questions & Réponses Pousser le pc au max 3 133 22/10 11:07:37
xjoce 
Questions & Réponses [non résolu] Problème de vide 1 79 21/10 18:09:50
sapajou 
[WIP] et travaux terminés [WIP] La gabarre '' Le Gros Ventre''    [1][2][3]...[10] 98 17653 21/10 15:53:58
Guiu 
Questions & Réponses [résolu] Os et FBX 3 256 20/10 16:15:38
zeromeetsinfinity 
Moteur de jeu GameBlender et alternatives [non résolu] Cs (vaisseau)    [1][2][3]...[56] 559 171025 20/10 11:06:51
Redstar 
Questions & Réponses texture procédurale qui suis une plane 2 132 20/10 10:19:22
Many 
Questions & Réponses Vertex groups qui disparaissent 0 59 20/10 09:09:22
Melodicpinpon 
Questions & Réponses MeasureIt et dpi 4 943 20/10 09:02:36
jcnouveau 
Questions & Réponses De Maya vers Blender concordance de axes. 9 181 19/10 17:04:59
Bibi09 
Questions & Réponses [résolu] Enlever "snapping" dans la timeline ? 6 158 19/10 09:47:12
CBY 
[WIP] et travaux terminés [terminé] Appli Blender de Poche en FR    [1][2][3] 29 1316 18/10 19:14:29
moonboots 
Questions & Réponses Débutant Blender, temps de travail pour un rendu ? 2 130 18/10 11:37:55
Jalis 
Questions & Réponses [WIP] Dragster-Tracteur pour Bécassine    [1][2][3] 24 5819 17/10 18:37:48
Laorz 
Graphisme alternatif faire de la bd avec blender    [1][2][3]...[13] 123 9416 17/10 14:20:26
blend74 
Questions & Réponses Bug texture sur plane avec bevel 1 231 16/10 08:09:13
Laorz 

Qui est en ligne
163 utilisateur(s) en ligne (dont 80 sur Forums)

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


DeanMonaco, EllaFarias, plus...
Nouveaux membres
TheodoreAd 25/10/2021
LatashaGav 25/10/2021
Jose19D031 25/10/2021
TiffaniOdp 25/10/2021
ClaribelTa 25/10/2021
LuisHildeb 25/10/2021
QHKSummer8 25/10/2021
SWELillian 25/10/2021
BoyceStric 25/10/2021
RosalineKh 25/10/2021
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Nov 18
Anniversaire de RichDeg
Dec 29
Anniversaire d'ebrain
Jan 8
BUG de Lyon
plus 247 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