*ERROR in e_c3d: nonpositive jacobian determinant in element

Forum destiné aux questions et discussions en français
Forum rules
Règles du forum et informations utiles.

VEUILLEZ LIRE CECI AVANT DE DEMANDER DE L'AIDE
User avatar
-alex-
Posts: 298
Joined: Wed Feb 13, 2019 9:42 pm
Location: France

Re: *ERROR in e_c3d: nonpositive jacobian determinant in element

Postby -alex- » Sat Oct 26, 2019 10:22 am

Merci à tous pour vos bons commentaires :D

schupin wrote:
Thu Oct 24, 2019 10:58 am
Il y a un truc que j'ai du rater quelque part : tu mets quoi comme conditions aux limites ?
J'ai mis des conditions vite fait, juste pour lancer un calcul est valider qu'il était résolu sans échec.
J'ai sévèrement bloqué la mâchoire à l'articulation et j'ai mis -8daN sur les faces supérieure des incisives. Le poids d'une grosse paille on va dire ;)
md_ad_conditions-limites-aupif.png
md_ad_conditions-limites-aupif.png (51.23 KiB) Viewed 385 times
User avatar
-alex-
Posts: 298
Joined: Wed Feb 13, 2019 9:42 pm
Location: France

Re: *ERROR in e_c3d: nonpositive jacobian determinant in element

Postby -alex- » Sat Oct 26, 2019 10:35 am

En remarque au flux de travail précédent je tiens à repréciser qu’il est à adapter à chaque maillage.
Sur le maillage détaillé envoyé par Léna cela risque d'être délicat, je l'ai regardé d'assez près et il est vraiment plein de faces internes et de cavités. Il est vraiment difficile de s'y retrouver visuellement, et donc délicat de cibler les éventuelles zones à problème.
C'est la limite du flux de travail que j'ai décrit, il faut un repérage visuel, une appréciation personnelle du défaut constaté, et une intervention manuelle (ici la suppression des 2 arrêtes isolées). Donc l'automatisation par un script ne me parait pas possible.
Sur modèle complexe à plusieurs centaines de milliers de faces cela peut être très rude...
Pour l'instant je ne m’aventure pas plus sur la réparation du modèle détaillé, il met vite ma machine à genoux.

Pour info, sur blender il y a la fonction Mesh -> Clean up -> decimate geometry qui permet de diminuer le nombre de face de façon assez efficace. Cela permettra peut être à Léna d'atteindre un compromis dans le détail de son maillage avant de le réparer si des erreurs sont toujours détectées.
User avatar
flachyjoe
Posts: 661
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

Re: *ERROR in e_c3d: nonpositive jacobian determinant in element

Postby flachyjoe » Sun Oct 27, 2019 3:51 pm

Salut,
je crois que j'ai trouvé un moyen d'obtenir un maillage fermé quasi automatiquement :
  • dans Meshlab :
    • afficher les calques
      Capture d’écran_2019-10-27_15-40-17.png
      Capture d’écran_2019-10-27_15-40-17.png (4.27 KiB) Viewed 360 times
    • clic droit sur le seul calque du document, Split in Connected Components
    • on obtient un calque par morceau
    • supprimer le calque d'origine et tous les autres sauf celui qui contient le plus de points.
    • Clic droit sur ce calque et Generate a BNPTS...
  • Télécharger l'utilitaire "PoissonRecon" http://www.cs.jhu.edu/~misha/Code/Poiss ... sion9.011/
  • Code: Select all

    poissonrecon --in le_fichier.bnpts --out reconstruit.ply
  • Importer reconstruit.ply dans FreeCAD, le maillage est fermé et se converti correctement en solide.
NB :
  • Voir les options de PoissonRecon pour modifier la qualité du maillage. En particulier --depth
  • Il y a un filtre de reconstruction de Poisson dans Meshlab mais il est lent et bogué.
  • La reconstruction n'utilise que le nuage de points donc ce n'est pas la peine de nettoyer les faces du maillage d'origine.
- Flachy Joe -
alias FFW @ irc.freenode.net #freecad et #freecad-fr
"Puisqu’on ne peut changer la direction du vent, il faut apprendre à orienter les voiles." Anonyme
User avatar
-alex-
Posts: 298
Joined: Wed Feb 13, 2019 9:42 pm
Location: France

Re: *ERROR in e_c3d: nonpositive jacobian determinant in element

Postby -alex- » Sun Oct 27, 2019 9:28 pm

flachyjoe wrote:
Sun Oct 27, 2019 3:51 pm
je crois que j'ai trouvé un moyen d'obtenir un maillage fermé quasi automatiquement :

Cool 8-)