Bonjour à tout le monde,
Pycao est un modeleur 3D en python. C'est à dire que vous écrivez du code python dans votre éditeur favori pour décrire vos objets 3D. Il peut être utilisé à titre graphique pour de jolies images, comme logiciel de CAO pour des projets personnels nécessitant des mesures précises, ou pour des scientifiques souhaitant un outil sans IDE pour interfacer facilement des données scientifique.
Vous trouverez en suivant ce lien une présentation des choix techniques et des objectifs pour décider si Pycao peut vous être utile.
La version 0.9 est sortie. Il est en version préfinale. La version 1.0 sera essentiellement du nettoyage de code par rapport à la version 0.9.
Quelques images:
# lien avec les autres projets
Posté par papap . Évalué à 3.
Quels sont les liens avec Openscad, Opencascade ainsi qu'avec Cadracks (down depuis quelques semaines) ? D'ailleurs je ne connais pas tellement la différence entre chacun d'eux.
[^] # Re: lien avec les autres projets
Posté par papap . Évalué à 2.
Ca mérite une dépêche non ?
[^] # Re: lien avec les autres projets
Posté par lelama . Évalué à 2.
Il y a quelques comparaisons avec les logiciels existant sur la page de doc Pycao.
Pour ce que j'en comprends.
Opencascade est une bibliotheque bas niveau. Pycao a l'opposé se veut le plus haut niveau possible pour faciliter le travail de la personne qui fait son projet. Pycao utilise povray en bas niveau. En fait, pycao convertit les instructions de haut niveau en des instructions povray de bas niveau, et c'est povray qui gere la présentation graphique.
La partie conversion de Pycao vers povray n'est pas tres importante ( quelques centaines de lignes de code). Donc on devrait pouvoir exporter vers opencascade au lieu de povray via pythonocc. Il faudrait adapter la partie export de pycao pour quelqu'un qui est motivé. Le gros du boulot est de comprendre openCascade : pas de tutoriel pythonocc, Ou de comprendre Pycao pour quelqu'un qui connait pythonocc.
Openscad est destiné aux imprimantes 3d me semble-t-il. Il exporte du stl (pas pycao). Facile en prendre en main, bien pour des petits projets (ce qui est souvent le cas des projets sur imprimante 3d). Mais tres bas niveau avec plein de coordonnées, donc me semble perilleux d'aborder un truc complexe avec openscad. Pas de rendu photo-realiste dans openscad.
[^] # Re: lien avec les autres projets
Posté par papap . Évalué à 3.
Et ça s'interface avec Freecad également ?
[^] # Re: lien avec les autres projets
Posté par lelama . Évalué à 2.
Pycao n'est pas suffisamment mûr pour être interfacé me semble-t-il. Si on interface avec d'autres logiciels maintenant, ca va rigidifier certaines composantes alors que certaines simplifications sont sans doute encore possibles et souhaitables.
En gros, le but est d'aboutir a une descripion simple et lisible des scenes 3D en langage semi-naturel. L'approche est empirique. Quand il y a galère pour décrire un objet 3D ou qu'on le fait en produisant du code non lisible, quand on sent que des objets similaires se manipulent avec des syntaxes différentes difficiles a memoriser, il faut changer le code dans Pycao. La priorité est l'utilisateur final, qui doit pouvoir avoir une description simple et lisible de son objet.
Il n' y aura probablement pas de gros changements a venir. Mais quelques changements a la marge seront sans doute souhaitables et il serait dommage de rigidifier le projet en l'état.
[^] # Re: lien avec les autres projets
Posté par freejeff . Évalué à 2.
Permets moi de douter de la facilité d'un port vers OpenCascade. Il faudrait déjà savoir de quel type de CAO on parle, Boundary representation (Brep) ou Constructive Solid Geometry (CSG).
OpenCascade permet les deux mais la partie Brep que je connais un peu est un enfer sur terre de compléxité, si la partie CSG est aussi complexe, il est peu probable de faire un pont vers OpenCascade en une centaine de lignes. Et du coup on peut se demander pourquoi ne pas être parti de pythonocc, qui est déjà assez haut niveau.
Il serait intéressant que l'auteur du journal détail ces choix, s'il les maîtrise.
[^] # Re: lien avec les autres projets
Posté par lelama . Évalué à 2.
Bonjour Freejeff. Il faut bien comprendre que Pycao traite principalement de la partie logique de la 3D, independamment de la technique utilisee pour la representation finale des objets. On peut donner une representation geometrique des objets sans (ou avec tres peu de) coordonnées comme le ferait un menuisier dans son atelier ou comme le faisaient les grecs avant l'invention des coordonnées cartesiennes. L'essentiel étant que le langage du menuisier soit suffisamment précis pour qu'il n'y ait pas d'ambiguité dans l'objet qu'il veut décrire. Si les objets sont définis sans ambiguité par le menuisier, ou par la personne qui code informatiquement, on peut alors exporter cet objet vers des supports materiels divers (mesh, representation mathematique avec des fonctions, fichier povray…).
Si je devais donner une analogie, c'est comme pour un fichier midi quand on joue sur un clavier. Le fichier midi code de facon logique ce que tu joues, a quel moment tu appuies sur une touche et a quelle vitesse, mais ce n'est pas un fichier musical. Il faut ensuite un sampler pour traduire les informations logiques codees dans le fichier midi vers un fichier son.
Ici, c'est pareil. Pycao traite principalement des informations logiques qui permettent de caracteriser les objets. En ordre de grandeur, l y a aujourd'hui environ 7 mille lignes de code dont seulement 300 ou 400 sont dediées a l'export vers Povray, le reste étant dédié à la manipulation logique des objets.
Si on voulait exporter des mesh depuis pycao, il faudrait essentiellement un logiciel qui manipule des mesh et qui gere la csg nativement, avec une api python bien documentée. Je peux me tromper, mais il me semble qu'avec un tel logiciel, on pourrait remplacer le module d'export vers povray par un module d'export vers des mesh.
Un logiciel de manipulation de mesh et la csg en python bien documenté et perenne n'est pas facile a trouver en logiciel libre. Je suis preneur de tout retour d'experience dans ce domaine. Pythonocc ne fait pas le job car la documentation est a mon gout insuffisante comparativement au niveau de complexité. Le risque est grand de s'enliser plusieurs mois dans Pythonocc avant de pouvoir avoir une vision globale.
# Povray bouge encore ?
Posté par chimrod (site web personnel) . Évalué à 4.
En lisant la doc je vois que c'est du povray derrière ! Quelle belle surprise !
J'ai essayé de me remettre il y a quelques années dans povray, fort de mon expérience désormais acquise en POO, ou langage fonctionnel. J'ai trouvé ça d'un lourd… impossible d'accéder de faire des syntaxes telles que
texture.pigment
, ouobject1.transformation = object2.transformation
…Comment Pycao se positionne par rapport à povray ? Toutes les fonctions du langage sont prise en charge ? (media, photon etc) Ça a du demander un boulot de fou…
Je vais tester, et merci pour la diffusion !
[^] # Re: Povray bouge encore ?
Posté par lelama . Évalué à 1.
Non, toutes les fonctionnalités de Povray ne sont pas implémentées. N'ont été conservées que celles qui sont essentielles.
En revanche, il y a des fonctionnalités supplémentaires pour faciliter le codage. Quelques exemples non exhaustifs:
[^] # Re: Povray bouge encore ?
Posté par WrathOfThePixel . Évalué à 2. Dernière modification le 03 juillet 2019 à 21:07.
On peut aussi sur POVRay heureusement. L'animation serait juste ingérable sinon :o
[^] # Re: Povray bouge encore ?
Posté par lelama . Évalué à 1.
Oui, tu as raison, merci de la remarque. Je vais preciser pour que ce soit plus clair.
Dans povray, on fait des unions, C'est a dire qu'on a un objet global. Une fois que l'union est faite, toutes les operations appliquees sur l'union s'appliquent a l'ensemble des sous parties (intersection, couleur…) et on n'a plus guere d'acces aux sous-parties sauf a changer le code en amont.
Dans pycao, il y a une union, comme dans povray, mais on a encore acces aux sous-parties. On peut changer une union deja construite en ajoutant du code en aval. Il y a aussi un collage qui est differente de l'union et qui est une operation asymetrique du type pere fils : le deplacement du pere implique le deplacement du fils, mais pas l'inverse. Dans cette relation de collage, il ne s'agit pas d'un objet global. Cela n'agit que sur les deplacements mais les objets restent mutuellement independants pour les operations de CSG ou de texturage. Il y a donc plusieurs niveau de granularite' en fonction des besoins qu'on a.
[^] # Re: Povray bouge encore ?
Posté par WrathOfThePixel . Évalué à 2.
Via des variables tu peux quand même avoir pas mal de contrôle sur les objets individuellement a posteriori. Créer une relation de parentalité ne devrait pas être impossible (POV est turing complet après tout), on pourrait même imaginer de l'armature, de l'IK et tout le toutim, soyons fou. Mais est-ce que ça vaudrait l'effort ? Probablement pas. On préfère faire tout ça tranquillou dans le modeleur qui pilote le machin.
# le code correspondant aux images
Posté par Rozé Étienne . Évalué à 5.
Bonjour,
ça a l'air sympa !
L'idéal serait d'avoir un lien vers le code correspondant aux images pour se faire une meilleure idée sur sa complexité (ou pas…) et donner encore plus envie (ou pas…).
[^] # Re: le code correspondant aux images
Posté par lelama . Évalué à 7.
Le code pour le petit meuble Ici
Le code pour la piece entiere ici
Le code pour un objet tres simple, un tiroir
qui fait ca:
[^] # Re: le code correspondant aux images
Posté par lelama . Évalué à 1.
Arghh, je voulais editer pour ajouter un bonjour car je trouvais mon message un peu sec. Pas trouvé le bouton d'édition. Pas grave. Bonjour donc ;)
[^] # Re: le code correspondant aux images
Posté par Rozé Étienne . Évalué à 0.
Merci !!
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.