Parcours académique

Cette section détaille mon parcours académique pour donner au lecteur une meilleure appréciation des enseignements suivis et des particularités de mon parcours.


Parcours en Informatique

Le lecteur peut retrouver ici mon mémoire de master en informatique.

Master d'Informatique de l'Université Paris-Est Marne-La-Vallée

J'ai obtenu un master d'informatique mention très bien (17.289 / 20) major de promotion à l'Université Paris-Est Marne-La-Vallée en Septembre 2019.

Ma formation en master d'informatique se découpe en une année de tronc commun puis une année de spécialisation.

La première année nous forme aux 4 domaines suivants :

  • développement logiciel avancé (java 9, python 3, C++ 14), ceci inclut de la programmation concurrente multithread, mise en place de design patterns, programmation temps réel.
  • imagerie (synthèse d'image 3D et traitement d'images).
  • bases de données et réseaux (architecture des réseaux, programmation réseau).
  • théorique (complexité des problèmes, optimisation linéaire, cryptographie, compression de données et combinatoire).

En seconde année, je me suis spécialisé en sciences de l'image, où j'y ai été formé à :

  • la synthèse d'images et réalité virtuelle (OpenGL 3, GLSL).
  • le traitement de géométrie discrète (flots de courbure sur courbes et maillages, topologie discrète, animation et simulation).
  • la vision par ordinateur et le machine learning (apprentissage statistique, réseaux de neurones, descente de gradient).
  • le traitement du signal et la restauration d'images.

Licence d'Informatique de l'Université Paris-Est Marne-La-Vallée

J'ai obtenu une licence d'informatique mention très bien (17.714 / 20) major de promotion à l'Université Paris-Est Marne-La-Vallée en Juillet 2017.

J'y ai étudié notamment :

  • programmation système (langage C), programmation orientée objet (java 8), programmation fonctionnelle (Caml).
  • structures de données (algorithmique des arbres, des graphes, tables de hachage).
  • théorie du langage (automates, analyse syntaxique, compilation).
  • mathématiques pour l'informatique (arithmétique, combinatoire, logique).

Parcours en Mathématiques
Licence de Mathématiques de l'Université Paris-Est Marne-La-Vallée

J'ai obtenu une licence de mathématiques mention bien (14.85 / 20) à l'Université Paris-Est Marne-La-Vallée en Juillet 2018.

Il m'a été offert la possibilité particulière d'assister à la formation en présentiel au maximum de ce que mon emploi du temps en informatique me permettait et d'être évalué dans celle-ci au même titre que la promotion mathématique.

Suivre cette formation, m'a donné des outils supplémentaires, en particulier en :

  • méthodes numériques (résolution des zéros, approximation d'intégrale, générateurs pseudo aléatoires) et calcul matriciel (décompositions matricielles).
  • géométrie (euclidienne, affine, projective), algèbre (groupes, arithmétique, théorie des nombres).
  • topologie et analyse (suites, séries, différentiation, analyse complexe, analyse hilbertienne).
  • intégration, probabilités et statistiques.

Tronc commun Licence Mathématiques-Informatique

Les 3 premiers semestres (validés à 17.09 / 20) de ma formation étaient communs à la licence de mathématiques et celle d'informatique. En Janvier 2016 j'ai poursuivi le parcours informatique. Puis en Janvier 2017 j'ai entamé le parcours mathématiques sur mon temps libre tout en gardant le parcours informatique comme formation principale.

Le tronc commun aux licences mathématiques et informatique m'a formé aux bases :

  • de l'informatique : algorithmique, récurrences, complexité, bases de données avec les langages python 3, C, PHP et SQL.
  • des mathématiques : calculus, algèbre linéaire, analyse, logique, probabilités.







Invitations

Séminaire d'animation à l'institut de recherche Bellairs






















14 Février 2020 - 21 Février 2020

Mots clés:

  • 3D
  • animation
  • C++
  • Qt
  • Radium Engine
  • recherche
  • surfaces implicites

J'ai été invité par Paul G. Kry à participer au séminaire d'animation à l'institut de recherche Bellairs à la Barbade. Le séminaire de cette année avait la forme d'un hackathon où nous devions rechercher s'il est possible d'aboutir à une preuve de concept pour des sujets donnés.

J'ai travaillé sur le projet "Mélange anisotrope basé temps" en qualité de développeur du prototype en C++ sous Radium Engine à l'aide des plugins privés de l'équipe STORM (à l'IRIT).

Une limitation des travaux sur les surfaces implicites est qu'elles proposent peu de contrôle sur la composition de deux surfaces entre elles. En particulier, les travaux de recherche précédents ne permettent pas de transformer une sphere en gouttelette lorsqu'elle est composée avec un plan (il manque une information de direction et indiquer à l'opérateur d'effectuer une union d'un côté et un mélange de l'autre).

Au cours de cette semaine nous sommes arrivés à :

  • exposer une preuve de concept sur des méthodes manuelles et automatiques de génération d'un champ paramétré par une direction.
  • illustrer le concept sur des exemples (gouttelette, vague, ferromagnétisme, composition en spirale).

Recherche en animation à l'Université de Victoria






















Mots clés:

  • 3D
  • animation
  • C++
  • cages
  • contacts
  • déformation
  • implicit skinning
  • maillages
  • position inverse
  • Qt
  • Radium Engine
  • recherche
  • squelette d'animation
  • surfaces implicites

(Novembre 2019 - Décembre 2019 : 3 semaines en présentiel à temps plein et en télétravail de Octobre 2019 à Décembre 2019 bénévolement)

Dans l'attente de visa pour commencer un doctorat, Brian Wyvill m'a offert la possibilité de venir à l'Université de Victoria (Canada) pour développer les travaux commencés avec Loïc Barthe et Paul G. Kry.

Pour étendre les travaux précédemment effectués, j'ai :

  • montré que la méthode pouvait se généraliser à d'autres types de déformation : basées squelettes, basées points.
  • optimisé le temps de mise à jour après déformation (assertion sur la structure du pavage de l'espace) et qualité des résultats (l'optimisation du temps permet une augmentation significative de la résolution et rend l'approximation par splines pertinente où l'interpolation reste limitante).
  • posé la principale limitation de la méthode liée aux renversements locaux de l'espace et ses discontinuités.
  • commencé l'étude sur des modèles concrets (trompe d'éléphant, tentacule de pieuvre).
  • proposé un pavage à résolution paramétrable pour une iso-surface d'intérêt dans un champs scalaire.

Expériences

Au cours de mes expériences professionnelles et de mes projets tutorés j'ai été apprécié pour mon autonomie ainsi que la pertinence et originalité de mes résultats.

Les mots clés suivants peuvent aider le lecteur à se faire une idée sur les technologies et concepts avec lesquels j'ai pu travailler lors de mes expériences professionnelles.

Mots clés:

Enseignement des mathématiques au Lycée Jean Rose de Meaux

Mots clés:

  • enseignement
  • mathématiques

(03 Mars 2021 - 16 Avril 2021 et 26 Avril 2021 - 06 Juillet 2021 : 4 mois à temps complet)

Pour assurer une mission de remplacement en mathématiques, j'ai été contacté par le Lycée Jean Rose de Meaux.
J'y ai encadré 7 classes pour des niveau portant sur les classes de Première Professionnelle, Terminale Professionnelle, Terminale Technologique au BTS Comptabilité-Gestion seconde année.
J'ai intervenu en mathématiques sur les thématiques suivantes :

  • Probabilités conditionnelles
  • Loi binomiale
  • Python 3
  • Dérivation
  • Suites (géométriques et arithmétiques)
  • Statistiques à deux variables

Je partage quelques unes de mes réalisations pendant cette mission si elles peuvent être utiles pour le lecteur (réutilisation autorisée pour enseignement) :

Recherche en animation à l'IRIT






















Mots clés:

  • 3D
  • animation
  • C++
  • cages
  • contacts
  • déformation
  • implicit skinning
  • maillages
  • position inverse
  • Qt
  • Radium Engine
  • recherche
  • surfaces implicites

(Avril 2019 - Septembre 2019 : 6 mois à temps plein en stage conventionné master 2 informatique)

L'Implicit skinning propose la correction automatique de plis et préservation de volumes aux articulations d'un personnage 3D déformé par un squelette d'animation. Cependant, une limitation est que la transformation de primitives rigides (surfaces implicites) ne permet pas la déformation libre du maillage (type shapekey, dessiner le gonflement d'un muscle).
Sous la supervision de Loïc Barthe et Pascal Romon, mon rôle était de trouver une méthode permettant la déformation d'une surface implicite en utilisant une cage de déformation.

Pour répondre au mieux à cette problématique j'ai:

  • étudié l'état de l'art sur les déformations free form à l'aide d'un prototype 2D en Java sous Processing IDE.
  • développé un prototype en C++ sous Radium Engine avec une interface sous Qt.
  • suivi la piste de résolution de la position inverse et proposé une architecture logicielle pour répondre au problème.
  • proposé des méthodes et analysé leur pertinence.

Je me suis intéressé à des méthodes de résolution directe dont la faiblesse était le temps pour l'une et la cohérence du champs pour l'autre. Puis, je suis allé vers des méthodes d'approximation de la déformation par la déformation d'une grille régulière. Mes travaux suivants se sont intéressés à améliorer la robustesse de la déformation du champs scalaire (continuité avec des splines, détection avec une découpe en tétraèdres). Grâce à celle-ci, je me suis intéressé à l'auto-intersection du champs avec lui-même et sa résolution. Ce qui permettrait de proposer la correction d'un auto-contact d'un maillage ou sous-maillage avec lui-même en utilisant un opérateur choisi pour proposer l'effet de déformation désiré.

Sur un exemple type bras avec gonflement de muscle, on peut ajouter un effet automatique au contact (gonflement au pli):



Pour ce travail, j'ai été évalué à la note de 20 / 20.

Pour plus de détails et explications, j'invite le lecteur à étudier mon mémoire de master :


Slides pour la soutenance devant le jury de master 2 (les animations fonctionnent sous Okular et sont fluides après un premier lancement) :


Slides de l'exposé scientifique :

Recherche en cryptanalyse / paramétrage au Loria






















Mots clés:

  • automatisation de calculs
  • CADO-NFS
  • corps finis
  • crible algébrique
  • cryptanalyse
  • logarithme discret
  • paramétrage
  • Python 3
  • recherche

(Mai 2018 - Août 2018 : 4 mois à temps plein en stage conventionné master 1 informatique)

CADO-NFS permet de tester la robustesse face à des attaques mathématiques d'un système cryptographique à clé publique dont la sécurité est basée sur la factorisation ou sur la résolution du logarithme discret dans des corps finis.
À l'origine CADO-NFS était utilisé pour réussir des records sur la taille des corps finis premiers à mettre en défaut. Pierrick Gaudry m'a chargé de trouver une méthode pour paramétrer CADO-NFS sur des petits corps finis premiers (attaques depuis le poste d'un particulier) et diminuer le plus possible la limite à partir de laquelle CADO-NFS devient plus pertinent que les logiciels concurrents.

Au cours de cette expérience j'ai:

  • compris le fonctionnement général de CADO-NFS pour la résolution du logarithme discret, ses paramètres et leur influence.
  • développé des scripts (Python 3) pour le parsing des résultats et l'automatisation de sous-routines de CADO-NFS pour tester des hypothèses de paramétrage sur plusieurs machines distantes.
  • proposé une analyse des résultats et méthodes pour approcher des jeux de paramètres pertinents.
  • par un nombre important et varié d'exemples, mis en évidence des bugs pertinents dans CADO-NFS.
  • montré que CADO-NFS bat les logiciels concurrents dans un corps fini premier de Sophie Germain (pire cas) à partir des tailles de 40 chiffres.

Ma contribution, jeux de paramètres pour les corps finis premiers entre 30 et 100 chiffres, a été ajoutée dans CADO-NFS (commits c77fe4b3b5f2 et 1cd07513de565).

Pour ce travail, j'ai été évalué à la note de 19 / 20.

Un fait amusant en rapport avec ce sujet : Pierrick Gaudry a pu illustrer le type d'application concrète de CADO-NFS sur les petites tailles de corps finis : mise en défaut du système de vote par internet pour les élections de Moscou pour des corps finis premiers de taille 256 bits (77 chiffres), il y détaille ici la procédure pour réaliser l'attaque.

J'invite le lecteur à étudier mes travaux dans le document suivant :


Slides de la soutenance devant le jury du master 1 :


Slides de l'exposé scientifique devant l'équipe CARAMBA :

Formation préparatoire tutorée en Mathématiques à l'Université Paris-Est Marne-La-Vallée

Mots clés:

  • enseignement
  • mathématiques

(Septembre 2017 : 18 heures de travaux dirigés)

Dès leur entrée en licence mathématiques-informatique à l'Université Paris-Est Marne-La-Vallée, les étudiants participent à deux semaines de préparation tutorée en mathématiques pour faire le pont entre les notions étudiées au lycée et pousser celles-ci en vue de préparer les enseignements de l'université.

J'ai été en charge de deux groupes de 13 élèves chacun que j'ai exercé sur les thématiques suivantes :

  • nombres complexes.
  • calcul algébrique réel ou complexe (polynômes, inégalités).
  • étude de fonctions (limites, graphe de fonction).
  • étude de suites (suites récurrentes).
  • intégration (intégrale de Riemann, initiation intégration par parties).
  • géométrie (plan complexe, équations de droites dans le plan et l'espace).

Projets universitaires

Ces projets ont été développés dans le cadre universitaire pour fonctionner sous Linux. (Pour tester, ceci demandera très probablement au lecteur d'installer SDL 1.2, MLV, OpenGL, libg3x : fournie, Processing IDE).

Mots clés:

Geométrie différentielle discrète











Mots clés:

  • 3D
  • déformation
  • géométrie différentielle discrète
  • Java 8
  • maillages
  • processing IDE

2019 : Master 2 Informatique spécialité imagerie

Dans le cadre du cours de géométrie différentielle discrète, il nous a été proposé de réaliser un projet sur la déformation de maillages par flots de courbure discrète. L'idée d'un flot est de déformer une surface en se basant sur un propriété type courbure, maximisation du volume ou autre.
Une application principale est la réduction de bruit / pointes sur un maillage.

Le projet est réalisé en Java 8 sous Processing IDE (surcouche de OpenGL 2). Nous y proposons :

  • une architecture logicielle pour manipuler flots de courbure sur les surfaces (maillages).
  • différents flots, exemples, paramètres et informations sur la surface.

Pour plus de détails j'invite le lecteur à lancer projet.pde sous Processing IDE et lire la documentation du projet :




Les documents scientifiques associés au projet :

Système solaire






















Mots clés:

  • 3D
  • animation
  • C++
  • GLSL
  • génération procédurale par scripts
  • graphe de scène
  • OpenGL 3
  • synthèse d'images

2019 : Master 2 Informatique spécialité imagerie

Ce projet de synthèse d'image propose la visualisation d'un système solaire. Il est possible de définir des propriétés, ajouter des planètes et générer des ceintures d'astéroïdes depuis un système de fichiers.

En C++, depuis une surcouche d'OpenGL 3, nous proposons :

  • architecture logicielle pour séparation des tâches sur le rendu et la géométrie.
  • visualisation système solaire avec rendu par shaders (GLSL).
  • génération procédurale et paramétrable d'astéroïdes et planètes.

J'étais en charge de l'architecture logicielle et du traitement de la géométrie (système de fichiers pour création modulaire et génération procédurale).




Graphe de scène


















Mots clés:

  • 3D
  • animation
  • C
  • graphe de scène
  • génération procédurale par scripts
  • OpenGL 2

2018 : Master 1 Informatique

Codé en C, ce projet propose la visualisation d'un graphe de scène par assemblage de primitives simples (sphères, cylindre, tores et autres).
Il est proposé à un utilisateur de construire sa scène depuis un script où il y définit primitives, transformations, couleurs, animations, schémas de composants.

J'étais responsable du graphe de scène et de la mise en place de scripts pour génération procédurale de la scène.

Pour lancer le projet, le lecteur devra installer la libg3x : surcouche de OpenGL fournie.




Codes correcteurs
















Mots clés:

  • C
  • codes correcteurs
  • corps finis
  • factorisation polynômes
  • QR codes

2017 : Licence 3 Informatique, projet tutoré

Avec un intérêt personnel pour la cryptographie et un cours stimulant de mathématiques pour l'informatique (arithmétique et combinatoire) donné en Licence par Jean-Yves Thibon, je suis allé voir Marc Zipstein en lui disant que je voulais faire de la crypto, Marc Zipstein et Jean-Yves Thibon m'ont donné l'opportunité de travailler sur des codes correcteurs et me familiariser avec la notion de corps finis.

Codé en C, je propose une implémentation qui :

  • recherche des polynômes irréductibles dans Z/2Z [X] (tous les petits polynômes avec un crible d'Ératosthène et recherche de gros polynômes par une factorisation récursive utilisant l'algorithme de Berlekamp).
  • propose, par une calculatrice, la manipulation d'un corps fini F2q isomorphe à F2[X]/(P(X)) avec P irréductible dans F2[X] et q le degré de P.
  • gère le codage, décodage et correction d'erreurs pour des codes BCH et de Reed-Solomon.
  • depuis les codes correcteurs énoncés permet la création d'un QR code (lisible avec une application classique) ainsi que son décodage et correction d'erreurs.


Un fait amusant : Nintendo propose un challenge qui consiste à factoriser un polynôme dans F2[X].

Création et affrontement de personnages articulés






















Mots clés:

  • 2D
  • animation
  • C
  • création personnage
  • détection collisions
  • génération automatique hitbox
  • SDL
  • squelette d'animation

2017 : Licence 3 Informatique, projet tutoré

Je suis arrivé avec mon idée de créer un mini-Blender 2D devant Cyril Nicaud et je le remercie vivement pour m'avoir fait confiance et pour m'avoir accompagné dans ce projet ambitieux.
L'objectif du projet était de créer des personnages depuis zéro et les faire combattre (on a fait match nul à la soutenance).

Ce projet se décompose en plusieurs grandes parties :

  • un éditeur de squelettes (modèle hiérarchique d'articulation avec limite de rotation).
  • un éditeur de formes (modélisation de la partie visible du personnage pour chaque os).
  • un éditeur de mouvements (définition des mouvements d'articulations et déplacement personnage).
  • génération automatique de boîtes de collision (simplification du modèle : cercles et rectangles).
  • détection automatique des coups portés à un autre personnage et manipulation interractive type jeu de combat.


Combat de personnages

Vous pouvez faire combattre vos personnages l'un contre l'autre !

Modification d'un personnage pour le combat

Vous pouvez éditer vos propres personnages pour un meilleur combat.

Création intégrale d'un personnage

Mais vous pouvez aussi créer votre personnage depuis zéro.

Éditeur avatars






















Mots clés:

  • 2D
  • animation
  • C
  • création personnage
  • SDL

2016 : Licence 2 Informatique

L'objectif du projet était de faire un jeu de combinaison d'éléments. Mais j'ai trouvé amusant de rajouter un personnage et proposer un éditeur d'avatars (forme du visage, pilosité, morphologie, couleurs).
À noter que ce jeu est sans aucun fichier image (que du procédural).

Fait remarquable : ce projet a reçu un Borie award, une grande distinction pour un projet d'étudiant !






Snake






















Mots clés:

  • 2D
  • adversaires contrôlés par ordinateur
  • C
  • SDL

2016 : Licence 2 Informatique

Codé en C, ce snake classique a une particularité : vous pouvez jouer contre des joueurs ou contre des ordinateurs. Les ordinateurs peuvent avoir différents comportements prédéfinis : récolter les pommes sur le terrain, chercher à survivre ou encore attaquer tous les autres pour les bloquer !

Une partie amusante comprend au moins une IA avec objectif d'attaque !



Rédaction scientifique et présentations

Petits sorts de mathémagie

2020 Juillet

Quelques astuces pour manipuler les mathématiques, ici les premiers chapitres portent sur:

  • Mécanismes de factorisation pour manipuler fractions, suites, intégrales, équations de cercles et autres.
  • Transformation d'une suite récurrente linéaire en calcul matriciel (permet de calculer la suite de Fibonacci en temps logarithmique et des suites plus générales).

Mémoire de master en informatique : Animation de champs scalaires 3D par cages de déformation - Application à "l’implicit skinning".

2019 Août

Mon mémoire de master en informatique sur la déformation de surfaces implicites :

  • Introduction par l'explication des méthodes de déformations basées squelette, composition de surfaces implicites.
  • État de l'art sur la déformations basées cage et la résolution du problème de la position inverse avec les Free Form Deformations.
  • Proposition de méthodes de résolution directe (mise en relation de l'espace déformé avec l'espace d'origine : résolution numérique avec binding donc coûteux en temps; navigation dans l'espace de coordonnées barycentriques : descente de gradient mais perte de cohérence avec les contraintes imposées lors du calcul des poids).
  • Proposition de méthodes d'approximation (pavage discret de l'espace : demande une haute résolution pour approcher la déformation) et reconstruction trilinéaire, triquadratique (interpollation et approximation).
  • Détection de chevauchements de l'espace avec lui-même (pavage de tétrahèdres) et proposition d'un ordre de composition de valeurs scalaires.
  • Utilisation de la méthode pour corriger les contacts d'un maillage avec lui-même et ajout d'effets liés à l'opérateur.

Pour plus de détails se référer à mon expérience à ce sujet.

État de l'art et explication d'article : Généralisation en dimension quelconque des noyaux critiques et des ensembles P-simples sur les images binaires par les ensembles de polytopes.

2019 Mai

Dans le cadre du cours de topologie discrète, j'ai été amené à réaliser un état de l'art et des explications brièves de ma compréhension de la généralisation de noyaux critiques et d'ensembles P-simples par des ensembles de polytopes présenté au séminaire de topologie discrète par Tat Yung Kong.

Compte rendu et explication d'article : Constrained Connectivity for Hierarchical Image Partitioning and Simplification.

2019 Avril

Dans le cadre du cours de morphologie mathématique, j'ai été amené à rédigé un compte rendu de l'article "Constrained Connectivity for Hierarchical Image Partitioning and Simplification" de Pierre Soille et son explication.

Paramétrage de CADO-NFS pour le problème du logarithme discret dans les corps finis premiers.

2018 Août

Le rapport sur les travaux de mon stage en première année de master en informatique portent sur :

  • Explication de ma compréhension de l'algorithme du crible algébrique pour la résolution de logarithmes discrets dans un corps fini premier.
  • Étude et proposition de méthodes pour paramétrer l'algorithme du crible algébrique pour les sélections polynomiales de Kleinjung et de Joux-Lercier.
  • Benchmarks et comparaisons avec les logiciels concurrents : Pari/GP (utilisé dans Sage) et Magma.

Pour plus de détails se référer à mon expérience à ce sujet.

Outils et projets scientifiques

IMPACT : Implicit Modeling Processes for Articulated Characters Transformations

2020 Avril - présent

Un projet personnel en cours. Son objectif est de proposer des outils et méthodes pour permettre le modeling et l'animation de personnages définis par une représentation implicite.

En effet, les maillages ont été intensivement étudiés pour la création numérique de personnages articulés. Cependant pour arriver à leur objectif, les artistes peuvent faire face aux limitations discrètes de la méthode (ensemble de polygones à de haute résolution) lors de la modélisation : ceci fait qu'un artiste peut sculpter sur un polygone de haute résolution, puis doit remailler son personnage pas une phase de retopologie pour avoir un maillage propre plus basse résolution. Une autre limitation qui en découle est la déformation de ce maillage pour l'animer. Ici l'étape de rigging du personnage qui peut s'avérer fastidieuse et avec peu de contrôle artistique.

L'objectif de mes travaux personnels est de s'intéresser à comment proposer aux artistes des outils de création numérique de personnages qui leur permettraient de continuer d'exprimer leur créativité et gagner plus de contrôle : une modélisation de surfaces continues et le sculpting de la déformation de la surface pour l'animation. L'objectif de ce projet est de proposer des outils qui permettraient de proposer la métamorphose et combinaison de personnages, là où les maillages restent un outil très limitant pour réaliser ce type d'opérations.

Si le lecteur est intéressé par le projet, je l'invite à regarder les documents suivants:

  • Présentation des résultats de Novembre 2020 : TRANCHO_Kevin_november_2020_results.pdf

    • Construction d'un opérateur binaire paramétrable : méthode analytique pour composition de surfaces implicites et métamorphose de l'opérateur pour jeu de paramètres de donné (l'aspect paramétrable de l'opérateur binaire a pour but de permettre une construction n-aire non symétrique et la variation de la composition dans l'espace).
    • Implicit clustering : interpolation interactive d'un paramètre dans l'espace depuis des points de contrôle.
    • Sculpting (composition avec un point) : exemple d'application de l'opérateur et possibilités offertes pour le sculpting.
    • Construction n-aire : fabriquation d'un opérateur n-aire depuis un opérateur binaire donné.
    • Proposition d'un pipeline pour gérer les opérateurs et l'ajout de fonctionnalités pour la composition : champs paramétrés divers et constructions de compositions sous forme de nodes.

  • Tester le prototype.

  • Proposition initiale du projet de métamorphose sous forme de sujet de thèse en 2019 (refusé par la recherche académique car trop appliqué, technique et spécifique) : TRANCHO_Kevin_sujet_these.pdf

  • Mon mémoire de master d'informatique comme introduction aux surfaces implicites : TRANCHO_Kevin_memoire_master.pdf

Automates

2016 Juin

Pour m'exercer, je m'étais amusé à recoder en C les algorithmes de mon cours sur les automates pour la manipulation de lexiques.

On y trouve :

  • la manipulation de lexiques (ajouts, suppressions et autres).
  • la vérification de propriétés (déterministe, standard, complet et autres propriétés relatives à un élément).
  • manipulation d'automates (compléter, déterminiser, standardiser, concaténer, joindre, minimiser et autres).

KI_Images

2015 Novembre

Des outils pour la manipulation d'images 2D avec SDL avec une application pratique : construction d'un personnage par morceaux et édition de couleurs.

les KI_Images offrent des opérations pour transformer, assembler, éditer les images avec SDL.

La démonstration permet de changer la couleur du personnage et déplacer quelques membres avec les flèches directionnelles.

Projets pédagogiques

Examen de python 3 : défi

2018 Janvier

Inspirés par notre examen de python 3, un ami a proposé de créer chacun le nôtre.
Vous pouvez passer le mien : 2 points par bonne réponse et 2 points bonus si vous jouez sur papier (Si vous obtenez 26 / 20, vous faîtes probablement du python au petit déjeuner).
Vous avez 1 heure :

Exercices autocorrigés sur les liste chaînées : défi

2015 Décembre

Pour proposer aux autres étudiants de s'exercer sur la programmation en C et les listes chaînées j'ai proposé deux exercices autocorrigés par mon code type tests unitaires.
Antoine Meyer et Marc Zipstein ont aimé l'idée et l'ont mis en ligne pour les étudiants.

Le premier exercice était un simple exercice de révision sur les listes chaînées et le second proposait plus un défi (en fait j'avais proposé un exercice sur des graphes sans même le savoir).
Le joueur doit simplement modifier les .c dans le répertoire "exercices" et compiler pour voir son score.

Codes cool

Fibonacci en temps logarithmique

2018 Décembre

La suite de Fibonacci est bien connue pour son intérêt dans les cours de complexité !
Un fait amusant : elle peut se calculer en temps logarithmique !
Ceci revient à l'exprimer sous forme de deux suites récurrentes, ce qui se réduit à une exponentiation matricielle. Si ceci vous intéresse, je propose le document suivant qui détaille un peu de théorie et de généralisation à ce sujet.
Je serai ravi de discuter d'une solution plus astucieuse et plus efficace (je suis à 46.834 secondes pour un calcul en C du milliardième élément de la suite de Fibonacci sur ma machine).

Pour faire les benchmarks sur votre machine, je propose le code obscurantiste suivant :

Calculer une factorielle

2018 Janvier

Si vous souhaitez garder une image simple et agréable de la factorielle gardez en tête sa définition naturelle. Mais si vous insistez et que vous aimez la combinatoire, je vous propose une autre définition :



Son gain de performances sur la définition naturelle se base sur l'idée que l'on peut optimiser le calcul de plusieurs ensembles de facteurs de la formulation à l'aide de l'exponentiation rapide.
Bien que sympy utilise une méthode plus performante pour calculer la factorielle.

Je vous propose un code python 3 pour tester cette définition :

Jeux - programmation autodidacte

Avant d'avoir une réelle formation en informatique, j'arrivai quand même à faire quelques jeux cool. Je vous fais profiter des plus remarquables.

Pokemaths

2015 Octobre

Quoi de mieux pour utiliser mes compétences en infographie 2D et en programmation que créer de un jeu à la pokémon ? À ce moment je n'avais pas encore étudié C et C++ à l'université, mais la création n'attend pas.

Pokemaths propose aux joueurs :

  • un déplacement sur une carte et interagir avec d'autres personnages ou rencontrer des adversaires aléatoires.
  • créer sa propre base pour gérer ses personnages.
  • combattre des personnages et gagner des niveaux, des compétences et évoluer.
  • des champions à combattre pour avancer dans le jeu (la carte d'aventure a été étendue plus tard après la création jusqu'à un boss final !)
  • un tchat, gestion d'amis et autres expérimentations pour simuler du multijoueur à l'université (cette partie relève plus de la bidouille qu'autre chose).

De mon côté, j'ai :

  • un éditeur de carte (décors, entités et autres).
  • des scripts externes pour l'IA des champions, la gestion des entités, tout le contenu est paramétrable par fichiers.

Codé pour fonctionner sous Linux avec SDL 1.2.

Commandes :

  • Flèches directionnelles -- pour déplacer le personnage.
  • Shift droit -- pour le menu.
  • Enter -- pour interactions.
  • Space -- pour placement de blocs.

Editeur de cartes : accessible avec l'option "edit"

  • Flèches directionnnelles -- pour déplacer le curseur.
  • Clic -- pour sélectionner l'élément à placer (decors, fond, interaction).
  • Keypad 0, 2, 4, 5, 6, 8 -- pour régler les adjacences de la tuile à placer.
  • Keypad 0 -- régler les données du bloc entité à placer.
  • Keypad +/- -- alternatives pour la tuile.
  • Espace -- pour placer la tuile.
  • A -- pour régler automatiquement les adjacences de la tuile placée.
  • F -- remplissage.
  • Z -- réglage automatique des tuiles adjacentes à celle sous le curseur.
  • Enter -- placement automatique activer / désactiver.
  • Backspace -- récupérer la tuile sous le curseur.
  • Suppr -- cache les décors.
  • G -- dans la console, indiquez les coordonnées où aller.
  • S -- sauvegarde la position pour y commencer en jeu.
  • M -- aller vers une autre carte (numéro à indiquer dans console).
  • E -- régler la valeur d'une entité dans la console : [ID] [VALEUR] (pour tester en jeu).

Les entités sont dans le répertoire "ent" et sont à scripter (peut valoir le coup de me contacter si souhaitez modder le jeu et je serai ravi de vous y aider).

Hacks:

  • Tourner la molette sur une capacité ou y cliquer nerveusement l'enverra automatiquement en boucle.
  • Lancer plusieurs fenêtres pour entraîner plusieurs personnages ou recruter en masse.
  • Fermer le jeu et le relancer pour ignorer les combats.
  • Profiter qu'anti-triche ne soit pas présent dans cette version (Il vous aurait très probablement banni du jeu puisque vous lisez cette section) !
  • Modder le jeu.
  • Le plus grand hack : jouer au jeu !

Bugs connus:

  • Si vous contrôlez un personnage, il existe dans sa base, évitez de placer un bloc sur sa position virtuelle (pour la définir, pressez Enter pour le libérer puis incarnez le).
  • Compresser le projet en .zip : certains fichiers ne survivront pas à l'extraction.

Le projet est modifié (vous ne devez pas être kevin pour accéder à tout et anti-triche est retiré) mais doit fonctionner sous Linux avec SDL:



Fricours 4


2012 Avril

Probablement mon premier vrai jeu en C/C++ développé au début des années lycée. C'est un jeu de puzzle où les premiers niveaux sont là pour vous échauffer et ensuite le vrai jeu commence !

Le but est de d'arriver jusqu'à l'objectif sans se faire capturer par les autres ours et si vous pouvez récolter un maximum d'argent au passage, c'est tout à votre honneur !
Les ours bleus voient à 2 blocs sauf en diagonales, facile comme puzzle. Vous avez tout le temps dont vous avez besoin pour vous déplacer.

Avec le jeu, je laisse à disposition mon générateur d'identité (sauf si votre nom est "kevin") et mon éditeur de carte (si vous souhaitez faire vos propres puzzles).

Commandes :

  • Flèches directionnelles -- pour déplacer votre personnage.
  • S -- sauvegarder votre partie.
  • L -- charger votre dernière sauvegarde.

Note : préservez vos oreilles, baissez le son.

Arg oui, je sais, celui-là est sous Windows mais tourne sous Wine ;)

  • Projet (executable windows, sources, editeurs) : 2012_TRANCHO_fricours.zip
  • Une vidéo des 50 premiers niveaux, mais je ne vous gâche pas la surprise des adversaires qui vous attendent ensuite ;) : Fricours.wmv

P.S.: il y a aussi des niveaux secrets ! (bonne résolution)


Jeux - GameMaker

Avant de découvrir la programmation, il fallait bien que je puisse créer des jeux, voici quelques unes de mes nombreuses créations d'enfance sous GameMaker. Un jeu d'enfant !

Note : vous devrez probablement vraiment baisser le son des musiques techno pour éviter de faire un bond de votre siège, ne pas être trop sensible aux fortes couleurs et avoir une souris et un clavier solides !

Kaner fight battle

2012 Juin

Jeu de combat à la street fighter.

Pour ce jeu, il me manquait toute une équipe d'artistes pour faire tous les personnages. Vous pouvez quand même jouer au prototype et incarner un personnage contre un autre contrôlé par l'ordinateur dans un jeu de combat.

Commandes :

  • Flèches directionnelles -- se déplacer.
  • Space -- coup de pied.
  • Keypad 0 -- coup de poing.
  • Keypad 1 -- attaque spéciale (barre chargée).

TireBall Revolution

2012 Octobre

Jeu d'arcade.

Un PacMan un peu particulier revisité avec mes assets graphiques. Ici, les adversaires ne sont pas définis pendant le jeu, mais par un chemin dans lequel j'ai cherché à anticiper vos mouvements, il faudra être rapide, bonne chance.

Commandes :

  • Flèches directionnelles -- se déplacer.

Modèles 3D

Voici quelques uns de mes modèles 3D. Je n'ai pas de formation en Blender, ces modèles sont seulement les créations d'un amateur passionné.

Les modèles à partir de 2020 fonctionnent sous Blender 2.83 et en général les plus vieux fonctionnent correctement sous Blender 2.79.

TK-bot


2020

Modelisation d'une créature robotisée.

  • Travail direct du maillage et matériaux.
  • Fonctionnalité grappin pour bras, jambes et queue.
  • Rig de compensation (contrôle de volume et d'étirement sur les bras).
  • Travail sur composants rigides : armure et pistons.



HumanDragon


2020

Un peu comme un bilan, j'ai souhaité m'exercer comme pourrait le faire un artiste 3D. Sur ce modèle, j'ai travaillé:

  • Sculpting du personnage.
  • Retopologie du maillage.
  • Rigging : painting des poids, os pour déformation automatique des muscles, shapekeys pour corrections de déformations (plis des genoux et torse bombé).
  • Contrôleurs pour animation : contraintes manipulation squelette.
  • UV-cut et texture.



Me contacter
© Copyrights Kevin Trancho 2009 - 2021 - tous droits réservés.