Mise à jour : (10/14)
- Prise en charge de multiples objets simultanément
- Mise à jour du calcul auto
- Traduction tchèque par Lubo Bezek.
Mise à jour :
Calcule l'aire et le volume :
- d'un objet fermé,
- d'un objet ouvert,
- d'une sélection de polygones,
- d'un tracé.
Télécharger
--
Voici un petit script qui calcule l'aire et le volume d'un objet ou d'une sélection de polygones.
J'ai utilisé une formule récurrente sur plusieurs sites de géométrie pour le calcul du volume, je m'étonne qu'elle soit si simple mais apparemment semble fonctionner : http://fr.softuses.com/186994
Mais dans le doute, je publie ce script en tant que version bêta, le volume des primitives est bon (bien qu'il dépende du nombre de subdivisions), mais si vous avez des objets complexes dont vous connaissez le volume, ça m'intéresse grandement de savoir si le script donne bel et bien la bonne valeur.
En cas de volumes non fermés ou de sélection de polygones, j'en ai chié mais à priori le script bouche tous les trous de son côté pour pouvoir calculer le volume de la forme. Lorsque le volume n'est pas possible, il retourne zéro.
Dernière modification par César Vonc ; 13/10/2014 à 22h00.
Majoul a fait un plug permettant de calculer le volume et la surface : VSM4D
Tout ce que j'écris est à prendre au 15e degré. Car comme dit le proverbe chinois : Quand le dragon d'or, le ragondin ; voilà qui devrait faire taire les critiques et me mettre à l'abri d'attaques frontales.
J'en ai entendu parler, oui, mais tous les liens que je trouve sont morts.
Tu fais quoi, tu coupes des tranches parallèles tous les X cms ?
Je serais curieux de connaitre le principe d'un calcul de volume arbitraire...
Tu peux le remplacer à priori par. En tout cas ça semble donner le même résultat.Code:def volumeTetraedre(p1, p2, p3) : v321 = p3.x * p2.y * p1.z v231 = p2.x * p3.y * p1.z v312 = p3.x * p1.y * p2.z v132 = p1.x * p3.y * p2.z v213 = p2.x * p1.y * p3.z v123 = p1.x * p2.y * p3.z return (-v321 + v231 + v312 - v132 - v213 + v123) / 6.0
sinon y a kuroyumes machin qui en a fait un mais je crois qu'il ne fonctionne pas avec des objets ouverts.Code:def volumeTetraedre(p1,p2,p3): return p1.Dot(p2.Cross(p3))/6.0
http://www.kuroyumes-developmentzone.../free-plugins/
edit :
même chose pour l'aire du triangles, tu fais un cross product, ça te donne l'aire du parralllléllalieisllsapièmachin là et tu divise par deux.
Dernière modification par valkaari ; 19/03/2013 à 15h36.
Merci Val, j'essaie tout ça, j'ai pas vraiment optimisé le code pour le moment.
Le principe est assez simple, Wonders, on calcule le volume signé du tétraèdre entre chaque polygone et un point donné (le centre de l'objet), le volume est positif ou négatif selon la normale du poly, donc la somme de tous ces volumes donne le volume final !
Globalement, le principe ressemble à ça :
Pour calculer le volume gris, on calcule le tétraèdre rouge plus le bleu, le rouge étant un volume négatif et le bleu un positif, à cause du sens des normales des faces, la somme donne bien le gris.
On applique ça à tous les côtés et la magie opère ! ^^
Dernière modification par César Vonc ; 19/03/2013 à 16h31.
Mais ouais, c'est évident, il est nul ce Wonders quand il s'y met
÷ R19 Studio ÷ cacahuètes ÷
Ah oui, d'accord, je pense avoir compris (toi aussi Gongo ?)
Merci pour l'explication !
Par contre ça marche toujours dans le cadre de volumes complexes, concaves, ou avec un centre en dehors de l'objet (edit : ah oui, c'est le principe même du tétraèdre signé...) ?
Instinctivement, j'aurais calculé l'aire de tranches du volume, avec interpolation en fonction de la distance entre chaque tranche (plus de tranches = plus précis mais plus lent).
Ça fonctionne en théorie avec tous les volumes, oui, chaque tétraèdre correspondant à un polygone, enfin, un triangle, de l'objet.
Oui au début j'avais également pensé à quelque chose dans ce genre là, en utilisant un rayon qui balaierait l'objet en mesurant la distance entre chaque intersection, mais c'était très vite devenu une usine à gaz pas très productive. : PInstinctivement, j'aurais calculé l'aire de tranches du volume, avec interpolation en fonction de la distance entre chaque tranche (plus de tranches = plus précis mais plus lent).
D'ici demain je devrais poster le script tout propre.
Dernière modification par César Vonc ; 19/03/2013 à 16h47.
Juste pour dire que VSM4D est vraiment bien, c'est dommage que Majoul ait cessé son développement. Il restait qqs détails ergonomiques à peaufiner.
Une fonction fort pratique et qui manquait est celle de la mise à l'échelle automatique d'un objet (selon l'axe voulu ou les 3) pour atteindre un volume ou une surface désirée : ça évite de procéder à tâtons ou de se taper des règles de trois, ça permet de dessiner rapidement un flacon d'un litre et demi, par exemple quand on travaille au packaging chez Ricard.
Même payant, un bon plug volumes et surfaces avec une interface limpide (c'est-à-dire accessible même à de simples graphistes par exemple...), ferait un carton.
r25 Perpétuelle - iMac 27 2019 - Radeon Pro Vega 48 - OSX 12.6.5
Pour vérifier la précision de ton script je te conseille NetFabb Studio Basic, il est gratuit, il sait, entre autres, calculer les aires et les volumes et reconnait plusieurs formats 3D dont le STL et l'obj.
Ah oui, pas bête le coup de la mise à l'échelle automatique, je verrai comment l'intégrer plus tard.
Tabou, je ne trouve pas de version gratuite sur Net Fabb.
Version 1.0 disponible !
http://code.vonc.fr/?a=40
Édit : micro-correction effectuée à 19h.
Dernière modification par César Vonc ; 20/03/2013 à 19h02.
Voici le lien : http://www.netfabb.com/download.php
Ce n'est pas obligatoire de remplir le formulaire pour télécharger, tu peux aller directement au bouton download qui est tout en bas de la page.
Merci César !!
Mise à jour du module, avec une interface plus pratique, mise à jour auto et la prise en charge de multiple objets !
Télécharger
Toujours gratuit !
Merci beaucoup Grand maître, ça tombe à point nommé pour ma part.
Yaya .°)
Les détails font la perfection, et la perfection n'est pas un détail.http://yayaprodtm.cgsociety.org/
LdV.
Tu pourrais peut être rajouter une option pour utiliser le nouveau tag "annotation" et y mettre le volume/aire
Aucune idée si ça peut servir mais c'est pas grand chose à rajouter et ça fait classe ^^
Ah oui pourquoi pas, Val, je verrai ça en détail quand j'aurai la R16. ^^