3D Expert. Computer graphics R&D Freenlance.

Dioxygen Software


Hello ! I’m Maxime Garcia, a Post-Doc working at Inria Rhone Alpes, in the Maverick Team. On this website I post articles on my research results as well as articles on the Game Engine I develop.

My students can find praticals topics and courses slides in the teaching resources section.

I also post some art related stuff since I sometimes take time to play the piano, draw or do some 3D modeling.


  • Character Animation
  • Non-Photorealistic Rendering (NPR)
  • Game Engine Programming


  • PhD in Character Animation entitled Performance transfer Animating Characters by Playing and acting, 2019

    Universite Grenoble Alpes / LJK / Inria

Recent Posts

Making a NPR Shader in Blender

Introduction to NPR inside Blender for a basic but complete shader.

Post Processing Effects

Here is a compilation of post processing effects implemented inside Skyengine. I implemented some of them inside Unity as well. Gundam model : Gundam GAT 105 modified by Rupen Kanwar on Sketchfab Bloom Outline Based on a Sobel filter on the Depth and Normals Contrast Kuwahara Filter

Animation Target Constraint

One common task game developers come across when using animated characters is to modify them in real-time in order to satisfy a given task. More particularly, re-using the same grab/take animation or push/punch/kick animation to target a specific object is a feature every programmer want and may have to implement. When dealing with targets in animation, the first word that came into our mind is Inverse Kinematic (IK). And actually, that is a good start to tackle our problem.

Animation Transfer

One main goal of my thesis is to find a way to animate 3D characters using physical props as an animation tool. The motivation is to create an animation sequence from a play with figurines, trying to reproduce what the player was imagining. Space Time Doodle Transfer examples Below, I show transfered space-time doodles into animation sequences. It is important to note that all actions were learnt for the two first examples as well as for the garden example.

Base Mesh Creation

This project is a second attemp to implement a fast base mesh creation method from this paper. The main idea is to create a animable mesh from a skeleton whose joints are represented by spheres with variable radius defining the distance from the mesh vertices. This mesh generation algorithm is decomposed into 3 steps: First a simple init mesh is computed connecting each joint with successive quad extrusion and convex hull computation for T-junctions.


Oxyde ⌀ Redux edition

-- Oxyde ⌀ Redux Edition is an arcade game I worked on with 5 teammates during the Scientific Game Jam 2020. This game jam focuses on creating games in 48 hours whose theme is linked with PhD students’ research. And here it is, we created this game in a style between Super Hexagon and Touhou, where the player has to maintain the temperature of a cooling metalic glass at a medium while avoiding oxydation.


-- SkyEngine is yet another game engine I am working on together with co-workers and former collegues. The main goal of this engine is to implement recent research work, to make video game and animated movie content easier to create. I would like to thank Julien Daval, Guillaume Cordonnier, Valentin Touzeau, Pierre Casati and Remi Galan Alfonso for contributing to this framework.

Recent Publications

Coherent Mark-based Stylization of 3D Scenes at the Compositing Stage

Comptuer Graphics Forum, Eurographics 2021. Article available here. Authors Maxime Garcia (Inria / LJK / Universite Grenoble Alpes) Romain Vergne (Inria / LJK / Universite Grenoble Alpes) Mohamed-Amine Farhat (Inria / LJK / Universite Grenoble Alpes) Pierre Benard (Inria / LaBRI) Camille Nous (Laboratoire Cogitamus) Joelle Thollot (Inria / LJK / Universite Grenoble Alpes) Abstract We present a novel temporally coherent stylized rendering technique working entirely at the compositing stage. We first generate a distribution of 3D anchor points using an implicit grid based on the local object positions stored in a G-buffer, hence following object motion.