Scientific / 3d Software Developer

Scientific 3d Software Developer - C / C++ / STL / Python / Java / OpenGL / shading
computer vision - 3d capture - tracking - augmented reality
signal / image processing - mesh generation - real time simulation
development of a workflow programming environment - third parties packages interface
this file
Guillaume VAREILLE
7 December 1969 - married - 2 children (9 and 6)
French citizenship
Bilingual French / English (7 years US, 5 years UK)
Basic Russian
2 rue pèré maron 4130 Esneux Belgium
[+32] 42 68 29 51
[email protected]
I can relocate anywhere in the world. I am entitled to work in the EU and worked in the US (H1b visa) and
Switzerland (permis B) in the recent past. A personal development tool, basic 3d mesh viewer using
OpenGL is available on my website (actually, it's kind of old now, but there still is this vertigo effect feature
that you don't see everywhere). A previous software I was working on professionally is free to download and
open source on the company website . I've implemented for it OpenGL shading,
FBO, stencil and stereo vision with quad buffering.
1989 - 1992:
Institut de Physique du Globe de Strasbourg (Strasbourg Institute of Geophysics):
Master 2 in Geophysics with honors. Ingénieur Grande École EOST (ex EOPGS) (1992)
1988 - 1989:
Institut Universitaire de Technologie - IUT Cergy Paris X :
Bachelor of Science in Civil Engineering with honors (DUT génie civil) (1989)
C, C++, STL, Python, Java, Design patterns, 3d, OpenGL (including shading language), HOOPS,
DSP, image processing, GUI with MFC, GLUT, FLTK, Tcl/Tk, GUI on MacOS, Vrml. PL/SQL,
ORACLE, Forms builder, XML (write-read-parse), DevStudio, gcc, g++, make, nmake, Eclipse,
SVN, CVS, SourceSafe, ClearCase, Code Co-op, Lint, Purify, BoundChecker, Valgrind, gdb,
Quantify, Windows, Unix (Irix, Linux, freeBSD, Mac OSX).
in a previous life:
Delphi/Pascal, Fortran, Html, Basic, Assembler PC, DOS, MVS, TMS320, Cadsap (finite elements structure
analysis), Mustig & Famos (digital signal processing), Quicktime, AVID Media Composer, FLINT Discreet
Logic, Photoshop, Illustrator, Strata Studio Pro, Quark xpress, Excel macros.
Mathematics, physics
Data acquisition
Digital signal processing
Image processing
Filter theory
Spectral analysis and transforms
Multi-platform conditional programming
Real time programming and 3d simulation
Algorithm development and implementation
3d programming
Mathematics of 3d manipulation
Euler angles, quaternions
Camera calibration, tracking, augmented reality
Extraction of intrinsic and extrinsic camera parameters
Epipolar geometry, 3d reconstruction
Curves, surfaces, 2d and 3d interpolations
3d meshing and remeshing
Unstructured mesh generation
Delaunay triangulation, marching triangles
PUBLICATION (yes, singular)
Services Oriented Architecture for Managing Workflows of Avian Flu Grid
A physicist by training, with a specialization in signal processing, I am a graphic and scientific
programmer. Taking charge of a project from A to Z, confronted with a given problem, I search in scientific
literature and on the internet for different types of known or possible answers, then implement the chosen
algorithm developing a specific variation in C, C++, STL, Java or Python on any kind of platform.
Expert in signal processing, data analysis and acquisition, I have notably developed a feature tracker
(normalised cross-correlation) for similar or moving images. The core algorithm is in C; a small graphic
application in Java allows it to be used on Quicktime movies (in the past I have been an AVID editor and
For the past 15 years I have been working in 3d programming and have specialised in various fields
involving 3d. For instance meshing and remeshing, whether creating an initial mesh for 3d data capture or
remeshing an object with other constraints, such as transforming a purely geometric mesh into a mesh
suitable for finite elements calculations.
Besince of a real-time application/animation, whdes mathematics linked to 3d manipulation, 3d
animation and computer vision, I have mastered OpenGL and all questions of 2d representation of 3d
objects; moreover the techniques of camera calibration allowing the mapping between real and virtual
worlds, essential for any 3d data acquisition.
I was lacking practical experience of a real-time application/animation, which I gained in
Switzerland working on a surgical operation simulator. And finally some experience with OpenGL shaders,
stencil, quad buffering and FBO.
Nov 09 – present: SAMTECH finite element analysis software, C++, java, OpenGL. First I Worked on
replacing the graphic renderer from OpenCascade with the HOOPS scene graph. In
CAESAM and Samcef field. Now I am adding to NX specific features for our finite
element solver
US (H1b visa):
Sep 05 – Oct 09: TSRI (The Scripps Research Institute) Python C, C++, OpenGL working on two different
development on xp, vista, mac osx, linux, irix:
- Pmv (python molecular viewer): a powerful molecular viewer that has a number of
customizable features and comes with many pluggable commands ranging from
displaying molecular surfaces to advanced volume rendering.
- Vision: a visual workflow programming environment in which a user can interactively
build networks describing novel combinations of computational methods, and yielding
new visualizations of their data without actually writing code.
- assisting other developers on an augmented reality project concerning molecule's
UK (contracting from Switzerland):
May 05 – Jul 05: JAHSHAKA video/film compositing software. Open source and Cross-platform. C++
STL Programming. Windows XP and Linux (devstudio, eclipse, cvs, gcc, g++, make,
nmake). Programming of the XML writing-reading-parsing of the compositing project.
Programming of the load and opengl display of various 3d file formats via a plugin
Feb 02 – Nov 04: MENTICE (ex XITACT) Delphi Programming on Windows2000 (Delphi6, Code Coop). Developing a real time simulator to train surgeons for laparoscopic surgery. I
mostly concentrate on the interactions between the instrument and the surface of the
organ (tear, tent, cut, burn, bleeding, local deformations, collision detection, smoothing of
edge contour by closed BSpline using De Casteljau algorithm). I also work on some
OpenGL aspects of the system (guidance, camera navigation).
Jun 00 - Feb 02:
AUTODESK (ex MOLDFLOW) C/C++ Cross Platform Programming on NT
(DevStudio 6, MFC, ClearCase) using WindU on UNIX machines (IBM, SUN, SGI, HP).
We were developing a CAD / CAE package, finite elements simulation of the plastic
flow. My main concern was around the correct remeshing of the mold as a 3d model
(decimation, finite elements mesh generation, shortest path, skeletonization, NURBS
conversion to triangle mesh), and the manipulation of the 3d object in OpenGL, lighting
and bumpmapping. Incidentally, I took care of the help system for the release on my
Sep 97 - Jun 00: 3DMD (ex TCTI, ex TRICORDER) Programmer on UNIX (GCC) and NT. (C++, STL,
DevStudio6, MFC, SourceSafe, Lint, Purify, Quantify, GUI programming through the
wizards). I was working on the development of a 3d library and 3d applications related to
instantaneous 3d digitizing (based on a stereoscopic method), video acquisition, camera
calibration (intrinsic and extrinsic), stereovision, 2d and 3d registration, iterative closest
point registration, Genetic algorithm optimization, Delaunay triangulation, marching
triangles, decimation, texturing. I also developed a 2d tracking system (normalized cross
correlation) used to register 3d surfaces via their texture.
US (H1b visa):
Sept 94 - Sep 97: WHERE4 Programmer on Macintosh. Digital video effects (image processing) and 3d
digitizing software (based on a contouring method, see below). Symantec C++ on Power
Macintosh. Multimedia / cd-rom / html design and production using all the available
Macintosh tools (2d, 3d, QTVR, QTO, film compositing, sound editing).
STABLEFILMS Engineer in the post-production facility. Macintosh Network, Technical
support on AVID and assistance to the clients. Offline/Online editing (Avid).
CALLIGEE Geophysics and geology of subsurface, Radar systems, electrical and
electromagnetic measurements (data acquisition and signal processing), frequency
analysis (Fourier transform), time-frequency analysis (Wavelet and Wignerville
transforms). TMS320 - Borland C++.
YSO Consultants Mine blasting optimization, data acquisition, signal processing, time
frequency analysis, sismic refraction, diagraphy, C++. Excel (macros programming).
92 (8 month training): TOTAL (ex ELF_AQUITAINE) Research into sismic reflexion (anisotropic pre-stack
migration), wave propagation by Eïkonal (ray tracing) and wave equation. Fortran on
Unix (SPARKS 2) and MVS (IBM 3090, CRAY YMP).
91 (2 month training): Laboratoire central des ponts et chaussées (National Department of Public Works)
Research on fissures in concrete by wave propagation. Borland C++.
90 (2 month summer job):SCREG (Major construction company) Team leader at construction site, plan drawing,
quantity surveying, management of people and machines.
3d digitizer (contouring)
The system automatically converts a series
of photographs of any object (or subject)
into a 3d graphic format. It can also grab the
color texture.
I developed the whole software on
Macintosh concentrating essentially on the
low-end algorithm. I also developed the
calibration and positioning method.
Instant 3d digitizer (stereoscopic)
Using a non-structured light (speckle pattern), the
system produces a couple of pictures from two
calibrated cameras. A 2d matching point process
then allows calculation of the corresponding 3d
By the way, that’s me (hum... was me).
MOLDFLOW Cad Package Simulation of the plastic flow in the mold.
MENTICE (ex XITACT) Real time simulator to train surgeons for laparoscopy.
It’s a bit like a play station game, but contacts are much softer. It’s quite difficult to play and not very funny.
Someone asked me once to describe a problem I encountered and how I solved it. Here it is:
Contour smoothing problem.
While working on the surgical operation simulator, I was asked to consider what could be done to
smooth the contour of the cuts. The scissors were cutting the organic tissues and this was represented by
simply removing the cut triangles from the top surface. The problem was that by simply removing triangles
from the mesh, the remaining contour was very jaggy, and not at all “natural” looking.
I looked at the different possible smoothing methods that could be used, and found that the De
Casteljaut spline addressed all my concerns as it is a closed bspline that doesn't go through its control points.
It has to be a closed curve because such are the contours. The fact that it doesn't go through its
control points is the cherry on top. I don't want actually to obtain a finely sampled contour. Each point of the
initial contour being a triangle vertex, all I need to do is to move each vertex to its position on the De
Casteljaut spline (and keep the triangulation as it is).
The idea is to say that the vertices on the contour are the control points of the De Casteljaut
spline. Then instead of generating all the points along the curve (as you generally do with splines), I just
calculate the position on the spline of the control points. That way I am using the “spline calculation”
routine just for the few vertices of the original contour. Consequently it is very quick, performs real time and
the result is nice and smooth.
TSRI Pmv - python molecular viewer
TSRI Vision visual workflow
programming environment
SAMTECH I rearranged the way we mesh secondary order surfaces. This is the result in flat rendering.
Just the pink ones are mine (and the sledge is actually my bodyboard from San Diego)
I've taught my 8yo how to solve the rubik's cube
Don't forget to watch my amateur theater videos in French and in English
In San Diego, I founded an amateur theater group and they wrote a paper about it (and me):
my other hobbies includes: motorcycles, ping pong, singing, c ontemporary art, rollerblades.