Idée : Contrôler FreeCAD avec PureData

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
flachyjoe
Veteran
Posts: 1855
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

Re: Idée : Contrôler FreeCAD avec PureData

Post by flachyjoe »

Un exemple de modélisation procédurale :
Le Générateur de Vase Moche
Capture d’écran_2020-12-11_10-38-40.png
Capture d’écran_2020-12-11_10-38-40.png (145.48 KiB) Viewed 3385 times
Vous pouvez le récupérer là : https://github.com/FlachyJoe/FCPD/tree/main/Sample
- Flachy Joe -
Image
User avatar
flachyjoe
Veteran
Posts: 1855
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

Re: Idée : Contrôler FreeCAD avec PureData

Post by flachyjoe »

Salut !
La moulinette continue de tourner, et le projet d'avancer.

Les nouveautés depuis le dernier message :
  • Il y a maintenant un atelier dédié, plus besoin de jouer avec des macros : https://github.com/FlachyJoe/FCPDWorkbench
  • La (maigre) doc est en anglais mais l'interface est traduite en français.
  • Des objets Pure-Data réagissant à la sélection ou au passage de souris sur un objet FreeCAD sont disponibles : [fc_selObserver] [fc_objObserver]
  • Les fonctions des ateliers Part (y compris Part.Shape) et Draft sont accessibles depuis Pure-Data.
  • L'objet [fc_controler] (et son pendant PDControler qui est créé dynamiquement par l'objet Pure-Data) permet de transférer facilement des valeurs entre PD et FC. En utilisant des expressions, n'importe quel objet FreeCAD peut être contrôlé très facilement par un flux de données venant de Pure-Data.
  • L'objet PDInclude permet de stocker un tissage Pure-Data directement dans un fichier FCStd. Un double-clic sur l'objet ouvre automatique Pure-Data et affiche le tissage.
  • Le dépôt https://github.com/FlachyJoe/FCPDWorkbench_Samples contient des exemples pour démarrer.
Voir la discussion an anglais pour plus de détails : https://forum.freecadweb.org/viewtopic. ... 36#p441736
- Flachy Joe -
Image
User avatar
Vincent B
Veteran
Posts: 4711
Joined: Sun Apr 05, 2015 9:02 am
Location: La Rochelle, France

Re: Idée : Contrôler FreeCAD avec PureData

Post by Vincent B »

Ça a l'air de bien avancer!
Je cherche le moyen de changer de positions mon mannequin sans le faire point par point.
Ton atelier pourrait il m'aider? L'idéal serait de bouger ses os via la souris à l'écran.
Attachments
Capture.JPG
Capture.JPG (20.75 KiB) Viewed 3271 times
User avatar
flachyjoe
Veteran
Posts: 1855
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

Re: Idée : Contrôler FreeCAD avec PureData

Post by flachyjoe »

GlouGlou wrote: Fri Oct 01, 2021 7:37 pm Je cherche le moyen de changer de positions mon mannequin sans le faire point par point.
Donc tu as déjà fait une hiérarchie de Std_Part et des clic-droit Transformer, la rotation par joint ne te convient pas.
Tu veux positionner les joints en fonction de l'emplacement de la main par exemple ?
C'est de la cinématique inverse (Inverse Kinematic).

Globalement l'atelier FCPD n'est qu'une surcouche permettant de programmer des macros sans passer par du Python. On peut aussi bénéficier des bibliothèques écrites pour Pure-Data mais je n'en connais pas implémentant de la cinématique inverse. Je vais creuser.
- Flachy Joe -
Image
User avatar
FaDa3D
Posts: 847
Joined: Tue Aug 08, 2017 8:21 am
Location: Savoie France

Re: Idée : Contrôler FreeCAD avec PureData

Post by FaDa3D »

Bonjour,
Pourrait on animer des assemblages A2+, Assm3, Assm4, ...?
Merci.
Fada de 3D.
Linux Mint
User avatar
flachyjoe
Veteran
Posts: 1855
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

Re: Idée : Contrôler FreeCAD avec PureData

Post by flachyjoe »

FaDa3D wrote: Sun Oct 03, 2021 1:36 pm Bonjour,
Pourrait on animer des assemblages A2+, Assm3, Assm4, ...?
Merci.
Salut,
on peut facilement animer tout ce qui accepte les expressions avec un objet [fc_controler f]. Il faut faire référence à IncommingData.DataFlow1 dans les expressions et relier l'entrée du [fc_controler] à une chaîne Pure-Data. Voir https://forum.freecadweb.org/viewtopic. ... 20#p537320

Pour faire varier une propriété qui n’accepte pas les expressions, il faut y faire référence par le nom de l'objet et le nom de la propriété, voici un exemple :
animation0.FCStd
(10.02 KiB) Downloaded 57 times
Capture d’écran_2021-10-03_21-46-45.png
Capture d’écran_2021-10-03_21-46-45.png (53.77 KiB) Viewed 3115 times
- Flachy Joe -
Image
User avatar
flachyjoe
Veteran
Posts: 1855
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

Re: Idée : Contrôler FreeCAD avec PureData

Post by flachyjoe »

Premier fonctionnement de cinématique inverse !
C'est leeeent. Il va falloir passer une partie du calcul en python pur, il y a trop d'aller-retour Pure-Data<->FreeCAD à chaque déplacement.

Ce modèle fonctionne avec la branche dev_ik du dépôt, les autres exemples ont besoin d'une mise à jour pour fonctionner avec cette version. :!:
EDIT : la branche principale inclus maintenant les outils IK et les exemples sont à jour avec cette implémentation
ikpy.FCStd
(11.37 KiB) Downloaded 47 times
IK.png
IK.png (49.19 KiB) Viewed 2851 times

La chaîne cinématique est codée dans le tissage Pure-Data et ce n'est pas très compréhensible pour le moment…
EDIT : voir https://forum.freecadweb.org/viewtopic. ... 35#p563335 pour l'implémentation actuelle
Capture d’écran_2021-10-15_10-01-12.png
Capture d’écran_2021-10-15_10-01-12.png (72.79 KiB) Viewed 2851 times
Last edited by flachyjoe on Sat Jan 29, 2022 11:06 am, edited 2 times in total.
- Flachy Joe -
Image
User avatar
flachyjoe
Veteran
Posts: 1855
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

Re: Idée : Contrôler FreeCAD avec PureData

Post by flachyjoe »

Voila une version plus rapide, ça tourne à 3-6 rafraîchissement par seconde chez moi.
(Il faut mettre à jour depuis le dépôt)
EDIT : voir https://forum.freecadweb.org/viewtopic. ... 35#p563335 pour l'implémentation actuelle
Capture d’écran_2021-10-16_14-30-12.png
Capture d’écran_2021-10-16_14-30-12.png (90.82 KiB) Viewed 2776 times
ikpy.FCStd
(11.38 KiB) Downloaded 46 times

Mode d'emploi :
  • Prérequis :
  • Ouvrir le fichier ikpy.FCStd
  • Double-cliquer sur l'objet PDInclude pour l'ouvrir dans Pure-Data
  • Cocher Auto-Update
  • Déplacer l'objet Target (en double-cliquant dessus)
NB : un bug empêche de rouvrir le fichier de PDInclude si on ferme sa fenêtre Pure-Data. Il faut soit fermer/rouvrir le fichier FreeCAD soir taper ce code dans la console python :

Code: Select all

App.ActiveDocument.PDInclude.Proxy.endEdit()
EDIT : bug corrigé
NB² : les modification du fichier *.pd intégré sont enregistrées dans le document *.FCStd mais il faut encore enregistrer celui-ci pour les conserver.
Last edited by flachyjoe on Sat Jan 29, 2022 11:08 am, edited 3 times in total.
- Flachy Joe -
Image
User avatar
Vincent B
Veteran
Posts: 4711
Joined: Sun Apr 05, 2015 9:02 am
Location: La Rochelle, France

Re: Idée : Contrôler FreeCAD avec PureData

Post by Vincent B »

je bloque sur le double clic PDinclude. Et j'ai le message:

Code: Select all

18:21:57  Traceback (most recent call last):
  File "C:\Users\vince\AppData\Roaming\FreeCAD\Mod\FCPDWorkbench-dev_ik\pdinclude.py", line 29, in <module>
    from PyQt5 import QtCore
<class 'ModuleNotFoundError'>: No module named 'PyQt5'
18:21:57  Traceback (most recent call last):
  File "C:\Users\vince\AppData\Roaming\FreeCAD\Mod\FCPDWorkbench-dev_ik\pdinclude.py", line 29, in <module>
    from PyQt5 import QtCore
<class 'ModuleNotFoundError'>: No module named 'PyQt5'
User avatar
flachyjoe
Veteran
Posts: 1855
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

Re: Idée : Contrôler FreeCAD avec PureData

Post by flachyjoe »

@GlouGlou
FreeCAD est sensé utilisé PySide à la place de PyQt5 mais chez moi ça provoque une erreur de segmentation à l'instanciation du QTimer à pdserver.py#65.

Donc je te propose :

Code: Select all

pip3 install pyqt5
Sinon tu peux quand même tenter remplacer PyQt5 par PySide dans pdinclude.py#29 et pdserver.py#34

EDIT : c'est résolu (merci openBrain ;) ), il faut mettre à jour depuis le dépôt.
- Flachy Joe -
Image
Post Reply