{"id":323,"date":"2018-10-25T00:46:35","date_gmt":"2018-10-24T22:46:35","guid":{"rendered":"http:\/\/members.loria.fr\/NRay\/?page_id=323"},"modified":"2018-10-25T00:46:35","modified_gmt":"2018-10-24T22:46:35","slug":"framefield-2-5d","status":"publish","type":"page","link":"https:\/\/members.loria.fr\/NRay\/framefield-2-5d\/","title":{"rendered":"FrameField 2.5D"},"content":{"rendered":"<p>Sujet de stage propos\u00e9 de BAC+4 \u00e0 BAC+5, conjointement avec Dmitry Sokolov.<\/p>\n<p><strong>Pr\u00e9sentation g\u00e9n\u00e9rale du domaine<\/strong><\/p>\n<p>En informatique, on repr\u00e9sente souvent les objets g\u00e9om\u00e9triques par des maillages. En particulier, les volumes sont en g\u00e9n\u00e9ral repr\u00e9sent\u00e9s par des maillages compos\u00e9s de t\u00e9tra\u00e8dres, car leur g\u00e9n\u00e9ration et leur manipulation sont assez bien ma\u00eetris\u00e9es. N\u00e9anmoins, certaines simulations num\u00e9riques pr\u00e9f\u00e8rent travailler avec des hexa\u00e8dres (petits cubes d\u00e9form\u00e9s), ce qui pose le probl\u00e8me de convertir des maillages tetra\u00e9driques en maillage hexa\u00e9driques. Ce probl\u00e8me est extr\u00eamement complexe du fait des contraintes combinatoires fortes auxquelles sont soumis les maillages hexa\u00e9draux (contrairement aux maillages tetra\u00e9draux). Nous cherchons \u00e0 r\u00e9soudre ce probl\u00e8me en pla\u00e7ant une grille d\u00e9form\u00e9e \u00e0 l&rsquo;int\u00e9rieur du volume, qui peut \u00e9ventuellement se recoller sur elle-m\u00eame, et qui doit \u00eatre align\u00e9e avec le bord du volume.<br \/>\nActuellement, le positionnement de la grille est r\u00e9alis\u00e9 par deux optimisations num\u00e9riques successives: la premi\u00e8re d\u00e9finit l&rsquo;orientation (<em>Frame Field<\/em>) des ar\u00eates de la grille d\u00e9form\u00e9e [1], puis la seconde positionne la grille en respectant au mieux l&rsquo;orientation trouv\u00e9e \u00e0 l&rsquo;\u00e9tape pr\u00e9c\u00e9dente [2]. Actuellement, les <em>Frame Fields<\/em> sont g\u00e9n\u00e9r\u00e9s en minimisant leur courbure. Cette heuristique est globalement satisfaisante, mais nous souhaitons aller plus loin, en y int\u00e9grant des contraintes induites par la seconde \u00e9tape.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/members.loria.fr\/nray\/files\/sujets\/FF25D.png\" alt=\"null\" \/><br \/>\nUn <em>Frame Field<\/em> associe \u00e0 chaque point de l&rsquo;espace trois directions orthogonales entre elles, repr\u00e9sent\u00e9es ici par les courbes jaunes \u00e0 section carr\u00e9e. Les singularit\u00e9 (en rouge) sont des courbes autour desquelles le <em>Frame Field<\/em> r\u00e9alise une permutation d&rsquo;axes. Celles du mod\u00e8le de gauches sont align\u00e9es avec l&rsquo;une des direction du <em>Frame Field<\/em>, ce qui les rends (localement) compatible avec un remaillage hexa\u00e9dral, et qui n&rsquo;est pas le cas pour le mod\u00e8le de droite.<\/p>\n<p><strong>Objectifs du stage<\/strong><\/p>\n<p>Les singularit\u00e9s d&rsquo;un <em>Frame Field<\/em> 2D sont simples \u00e0 caract\u00e9riser: un point est singulier si l&rsquo;int\u00e9grale de la rotation du champ le long du bord d&rsquo;un voisinage (infiniment petit) de ce point n&rsquo;est pas nulle. Pour le remaillage quadrangulaire (petits carr\u00e9s d\u00e9form\u00e9s), cela implique la pr\u00e9sence d&rsquo;un sommet irr\u00e9gulier i.e. de valence diff\u00e9rente de 4. Cette caract\u00e9risation ne s&rsquo;\u00e9tend malheureusement pas au cas volumique car l&rsquo;int\u00e9gration des rotations 3D est mal d\u00e9finie. Cependant, nous savons que les seules courbes de singularit\u00e9 qui correspondent \u00e0 un remaillage hexa\u00e8dre sont des singularit\u00e9s 2D \u00ab\u00a0extrud\u00e9es\u00a0\u00bb selon la troisi\u00e8me direction: elles peuvent devenir des ar\u00eates partag\u00e9es par un nombre d&rsquo;hexa\u00e8dres diff\u00e9rent de 4.<\/p>\n<p>Lorsque l&rsquo;on se contente de trouver le <em>Frame Field<\/em> de courbure minimale, d&rsquo;autres types de singularit\u00e9 apparaissent (voir la partie droite de l&rsquo;image). L&rsquo;id\u00e9e de ce stage est de d\u00e9composer le calcul du <em>Frame Field<\/em> en deux \u00e9tapes: la premi\u00e8re va d\u00e9finir une direction stable, et la seconde va calculer les deux autres directions. La direction stable peut \u00eatre impos\u00e9e par le mod\u00e8le, comme c&rsquo;est le cas en g\u00e9ologie avec la normale aux strates g\u00e9ologiques, mais elle pourra aussi \u00eatre d\u00e9finie automatiquement par une heuristique. Nous essayerons par exemple de prendre la direction de moindre courbure dans un <em>Frame Field<\/em> de courbure minimale ce qui, dans le cas de l&rsquo;image, sera tout simplement la hauteur. Les deux autres directions devront \u00eatre calcul\u00e9es en s&rsquo;inspirant des algorithmes de g\u00e9n\u00e9ration de <em>Frame Field<\/em> 2D, mais en imposant que le champ reste constant le long des lignes de flux de la direction stable. Pour imposer ces contraintes dans l&rsquo;optimisation num\u00e9rique du champ de direction, il faudra remplacer certaines variables par des combinaisons lin\u00e9aires d&rsquo;autres variables. Intuitivement, les variables li\u00e9es \u00e0 un sommet S seront exprim\u00e9es comme combinaison lin\u00e9aires des variables associ\u00e9es aux coins d&rsquo;un triangle travers\u00e9 par la ligne de flux passant par ce sommet $S$. Ce travail s&rsquo;inscrit dans la continuit\u00e9 de [1], et qui est une r\u00e9f\u00e9rence qui pr\u00e9sente les algorithmes que nous utilisons actuellement pour g\u00e9n\u00e9rer les <em>Frame Fields<\/em> 2D et 3D.\\\\<\/p>\n<p><strong>R\u00e9f\u00e9rences bibliographiques:<\/strong><\/p>\n<p>[1] Ray Nicolas, Sokolov Dmitry, L\u00e9vy Bruno. Practical 3D Frame Field Generation. ACM TOG 2016.<br \/>\n[2] Sokolov Dmitry, Ray Nicolas, Untereiner Lionel, L\u00e9vy, Bruno. Hexahedral-Dominant Meshing. ACM TOG 2016.<\/p>\n<p><strong>Comp\u00e9tences esp\u00e9r\u00e9es:<\/strong><\/p>\n<p>La principale qualit\u00e9 attendue est l&rsquo;envie d&rsquo;apprendre et de travailler en \u00e9quipe. Il n&rsquo;est pas n\u00e9cessaire d&rsquo;avoir un niveau exceptionnel en math\u00e9matique, mais une bonne intuition g\u00e9om\u00e9trique en $3D$ sera un plus. \u00catre \u00e0 l&rsquo;aise en programmation sera n\u00e9cessaire pour pouvoir tester diff\u00e9rentes id\u00e9es. Notre base de code est en C++, mais les difficult\u00e9s seront principalement d&rsquo;ordre algorithmiques (ni syntaxiques, ni architecturales).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sujet de stage propos\u00e9 de BAC+4 \u00e0 BAC+5, conjointement avec Dmitry Sokolov. Pr\u00e9sentation g\u00e9n\u00e9rale du domaine En informatique, on repr\u00e9sente souvent les objets g\u00e9om\u00e9triques par des maillages. En particulier, les volumes sont en g\u00e9n\u00e9ral repr\u00e9sent\u00e9s par des maillages compos\u00e9s de t\u00e9tra\u00e8dres, car leur g\u00e9n\u00e9ration et leur manipulation sont assez bien ma\u00eetris\u00e9es. N\u00e9anmoins, certaines simulations num\u00e9riques [&hellip;]<\/p>\n","protected":false},"author":183,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-323","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/members.loria.fr\/NRay\/wp-json\/wp\/v2\/pages\/323","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/members.loria.fr\/NRay\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/members.loria.fr\/NRay\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/members.loria.fr\/NRay\/wp-json\/wp\/v2\/users\/183"}],"replies":[{"embeddable":true,"href":"https:\/\/members.loria.fr\/NRay\/wp-json\/wp\/v2\/comments?post=323"}],"version-history":[{"count":3,"href":"https:\/\/members.loria.fr\/NRay\/wp-json\/wp\/v2\/pages\/323\/revisions"}],"predecessor-version":[{"id":328,"href":"https:\/\/members.loria.fr\/NRay\/wp-json\/wp\/v2\/pages\/323\/revisions\/328"}],"wp:attachment":[{"href":"https:\/\/members.loria.fr\/NRay\/wp-json\/wp\/v2\/media?parent=323"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}