Champy33
Messages postés14Date d'inscriptionjeudi 2 octobre 2008StatutMembreDernière intervention19 mai 2011
-
2 oct. 2008 à 21:40
Champy33
Messages postés14Date d'inscriptionjeudi 2 octobre 2008StatutMembreDernière intervention19 mai 2011
-
17 oct. 2008 à 19:35
Bonjour à tous et à toutes
Je me suis lancé dans la fabrication bénévole d'un logiciel qui servira à faire des plans de meubles au sein de l'association à laquelle j'appartiens (site : http://LesCopeaux.fr). Pour ce faire, je pense utiliser GLScene avec Delphi 7. Je l'ai déjà utilisé à un petit niveau, avec ses fonctions basiques et sans connaître trop de galères. Cependant, mon problème concerne le 'clipping' ('découpe' en français) d'un volume donné.
Imaginez un parallélepipède 'normal' auquel on souhaiterait enlever une partie, pour découper une rainure rectangulaire par exemple.
On se retrouve normalement avec un volume aux formes complexes, composé de plusieurs parallélépipèdes qu'il faut ré-assembler entre eux. Ca, c'est la solution 'besogneuse'.
Le problème, c'est qu'il existe mille manières d'usiner un bout de bois et je me vois mal en train d'implémenter 'à la main' la multitude des assemblages résultants...
Supposant que je ne suis pas le premier à connaître ce problème, j'aimerais donc, soit trouver une (des) fonction(s) qui simplifie(nt) mon travail, soit obtenir des conseils de programmation dans cette optique.
Merci beaucoup.
Champy
PS : Un détail : J'habite au milieu des vignes bordelaises et toute contribution constructive sera récompensée. En nature, évidemment... :)
Champy33
Messages postés14Date d'inscriptionjeudi 2 octobre 2008StatutMembreDernière intervention19 mai 2011 3 oct. 2008 à 07:38
Merci WhiteHippo.
Vous avez raison pour le terme 'clipping' qui est mieux adapté au dessin en 2D, mais je ne savais pas trop comment décrire mon souhait.
L'important, c'est que je me sois fait comprendre... :)
Champy33
Messages postés14Date d'inscriptionjeudi 2 octobre 2008StatutMembreDernière intervention19 mai 2011 4 oct. 2008 à 00:14
J'ai consulté et téléchargé les fichiers que vous m'avez précédemment indiqués. Cependant, je pense que je ne m'en sortirai pas, car tout est écrit en C++ et l'ensemble des utilitaires (librairies et autres) me semble un peu trop complexe à utiliser. De plus, il n'y a presque aucune doc, ni aucun exemples concernant l'utilisation de ces librairies. Où peut-être ne l'ai-je pas trouvée...
Il existe un volet CGS avec GLScene que je n'ai pas encore décortiqué. Je crois que je vais commencer par cet élément, qui me semble plus accessible pour me familiariser avec ce domaine.
cs_louloute04
Messages postés1Date d'inscriptionmardi 17 octobre 2006StatutMembreDernière intervention17 octobre 2008 17 oct. 2008 à 15:00
Bonjour,
moi j'ai utilisé des plans de clipping dans GlScene, mais ce n'était pas pour découper des objets mais pour limiter une zone de dessin d'un graphe. Je ne sais pas si ça marche pour ton cas :
Les commandes de clipping sont en OpenGl directement donc pour les activer il faut ajouter un Objet DirectOpenGl. Concretement il faut "entourer" l'objet qu'on veut "couper" entre deux objets DirectOpenGl : le premier aura pour tache d'activer le clipping et le second de le désactiver lorsqu'il n'est plus necessaire.
Exemple :
SceneObjects
+ Cube1
+ Cube2
+ BeginClipping (TGlDirectOpenGl)
+ Sphere
+ ... (tous les objets subissant le clipping)
+ EndClipping (TGLDirectOpenGL)
+ Suite des objets ...
Que vont faire BeginClipping et EndClipping ? Il suffit de leur implémenter OnRender comme suit :
procedure TForm1.BeginClippingRender(Sender: TObject;
var rci: TRenderContextInfo);
begin
glClipPlane (GL_CLIP_PLANE0, @clip0);
glEnable(GL_CLIP_PLANE0);
end;
procedure TForm1.EndClippingRender(Sender: TObject;
var rci: TRenderContextInfo);
begin
glDisable(GL_CLIP_PLANE0);
end;
Il ne reste plus qu'a définir les coordonnées du plan de clipping comme par exemple :