« 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
Le coin des geeks vitesse d'un rendu EEVEE Windows/Linux 3 27 Aujourd'hui 16:02:30
Bibi09 
[WIP] et travaux terminés [WIP] La gabarre '' Le Gros Ventre''    [1][2][3]...[10] 98 17493 Aujourd'hui 15:53:58
Guiu 
Questions & Réponses Armature en IK sur squelette complexe 2 57 Aujourd'hui 11:37:34
Thewada 
Moteur de jeu GameBlender et alternatives [non résolu] Godot Engine - Projet Arsenal    [1][2] 16 1148 Aujourd'hui 10:43:54
Redstar 
Questions & Réponses [résolu] Os et FBX 3 225 Hier 16:15:38
zeromeetsinfinity 
Questions & Réponses Pousser le pc au max 2 67 Hier 13:20:28
Bibi09 
Moteur de jeu GameBlender et alternatives [non résolu] Cs (vaisseau)    [1][2][3]...[56] 559 170676 Hier 11:06:51
Redstar 
Questions & Réponses texture procédurale qui suis une plane 2 91 Hier 10:19:22
Many 
Questions & Réponses Vertex groups qui disparaissent 0 28 Hier 09:09:22
Melodicpinpon 
Questions & Réponses MeasureIt et dpi 4 903 Hier 09:02:36
jcnouveau 
Questions & Réponses De Maya vers Blender concordance de axes. 9 123 19/10 17:04:59
Bibi09 
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[22] 214 21217 19/10 10:54:10
moonboots 
Questions & Réponses [résolu] Enlever "snapping" dans la timeline ? 6 116 19/10 09:47:12
CBY 
[WIP] et travaux terminés [terminé] Appli Blender de Poche en FR    [1][2][3] 29 1186 18/10 19:14:29
moonboots 
Questions & Réponses Débutant Blender, temps de travail pour un rendu ? 2 94 18/10 11:37:55
Jalis 
Questions & Réponses [WIP] Dragster-Tracteur pour Bécassine    [1][2][3] 24 5746 17/10 18:37:48
Laorz 
Graphisme alternatif faire de la bd avec blender    [1][2][3]...[13] 123 9210 17/10 14:20:26
blend74 
Questions & Réponses Bug texture sur plane avec bevel 1 201 16/10 08:09:13
Laorz 
Questions & Réponses [terminé] Supprimer le lien d'un objet entre 2 scènes 4 1903 15/10 12:52:21
Horemheb 
Questions & Réponses Blender kit : barre d'assets 0 94 15/10 09:26:52
Sphere3d 

Qui est en ligne
121 utilisateur(s) en ligne (dont 31 sur Forums)

Membre(s): 7
Invité(s): 114


CorwinRicky, CarnerGita, KathieJudy, TammieEnye, CromwellClarissa, BowerEulalia, RichDty966, plus...
Nouveaux membres
LawerenceA 21/10/2021
JamaalKear 21/10/2021
WardN7511 21/10/2021
OmarChalme 21/10/2021
MarissaSha 21/10/2021
MichealGel 21/10/2021
SherryHadd 21/10/2021
CelinaFran 21/10/2021
EwanErnst9 21/10/2021
ModestaMcC 21/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