# Tutorials

Organized list of blog posts and tutorials. Note that not all posts are present here, especially minor notes in "Jumble".

## #Skinning

- [ slides (161MB) ] Introduction to character animation (skinning)
- Linear blending cheat sheet
- Dual Quaternion Skinning ( 日本語版 )
- Dual Quaternion Skinning and scale
- Bulge free Dual Quaternion

*Other Sources*

## #Geometry Processing, FEM

Harmonic functions

Triangle meshes

- Accurate vertex normals
- Cotangent weights
- Laplacian mesh smoothing (Iterative, implicit, explicit)
- Harmonic weight diffusion
- Harmonic weights (Direct solving)
- Bi-Harmonic weights
- Bi-Harmonic weights (diffusion)
- Laplacian matrix & Laplace operator (Definition)
- Curvature

Regular grids

- Harmonic weights
- Bi-harmonic stencils (1D, 2D)

Tetrahedral meshes

Curves

- Curvature of curve
- Deriving the curvature formula.
- C++ code to evaluate nD spline curves
- Deriving Bézier 1st, 2nd and rth derivatives

Misc

## #Mesh deformation

- Simple repulsive fields
- Deformation map: infer the object's normal transformation
- Jiggle deformation explained

## #Implicit Surface / Distance Field

- Introduction
- Contour lines
- Global and compact support
- Normal of a distance field
- Transformation
- TODO: Common blending and advanced blending operations
- ...
- [ code ] [ subject (FR) ] Labs on Hermite Radial Basis Functions (HRBF) for point cloud reconstruction
- HRBF tutorial
- Iso-surface curvature

*Other Sources*

- Íñigo Quílez. Co-creator of shader toy provides astounding tutorials on distance fields/implicit surfaces modeling. (Implicit snail shader example)
- Other tutorials on compositions
- Introduction to ray marching distance fields (implicit surfaces) and boolean modeling.
- Introduction to implicit surface modeling
- Ray marching (sphere tracing) in Unity
- Sphere tracing paper
- Easy antialising
- Advanced antialising
- A librarie with simple implicit surface blending operations.
- Clayxels -- implicit modelling plugin for unity
- MagicaCSG -- Standalone implicit SDF modeller
- Womp -- In browser (chrome) implicit SDF modeller. (presentation video)

*Material from my former PhD director Pr. Loïc Barthe (mostly in French)*

- Slides on the foundation of implicit surface.
- Seminar on implicit blending (and also gradient blending etc.)

## #Maya

General development:

- Setup IDE / environment development to develop C++ plugins.
- Maya programmer cheat sheet
- Maya math nodes cheat sheet
- How to distribute Maya plugins
- Some MEL commands and procedures
- Iterate over elements of an array attribute with MEL & Python

C++ API tutorials:

- Allow user to paint weight for a custom deformer node (MPxDeformer) via C++ API
- Get currently selected vertices via C++ API
- set skin weights of a skincluster via C++ API
- Save node attributes (MPxData) on file via C++ API
- Display and set per vertex color of a mesh via C++ API
- Control curve/spline as a node attribute
- Custom Skin Cluster Node via C++ API
- Add progress window or bar via C++ API

Minor tips:

## #Unreal Engine

- [C++] what are delegates and how to use them. (a.k.a event dispatch)
- [C++] TArray doc sheet
- [C++] TMap doc sheet
- [C++] FMatrix doc sheet
- [C++] USkeletalMesh doc sheet
- [Deformer graph] A break down of direct delta mush sample
- [Deformer graph] How to add custom nodes

## #General 3D Graphics

### OpenGL 3.0

[ Tutorials and C++ code (FR/EN) ] to get familiar with OpenGL 3.0 (Qt 5.0 and CMake project).
You'll also find assignment instructions with very detailed comments inlined in the code to learn step by step OpenGL functions.
(usually taught to 4th year university students).
Although you should not need them *you can ask for answer sheets (solutions) by email*.
Some assignments may miss English translation, please ask if you think you want to try and do them.
To dive deeper into OpenGL and graphic programming take also a look at open.gl or learnopengl.com.

### OpenGL 2.1

Old OpenGL 2.1 Tutorials (Master1 pdf, slides, code, assignments and corrections)

Related post: emulate direct drawing mode of OpenGL 2.1 using OpenGL 3.0

### DirectX 11

Posts to get you started.

- [ My C++ sample ] to setup a basic window with Windows API; every line of code is explained with comments and links.
- Getting started with DX11: List of online tutorials/youtube playlist documentation
- COM pointers and DirectX
- [ DirectX Error Library ] to make the return value 'HRESULT' human readable.

### Misc

- The book of shaders
- C++ code to move objects by grabbing a virtual trackball in the scene with your mouse pointer

## #Math

- Introduction aux problèmes de minimisation (optimisation) [French article]
- All my notes on curvature (curve, surface, function graph etc.)
- 4x4 matrix inversion code
- 2x2 singular value decomposition code
- How to avoid SVD (fitting point sets together)
- 3x3 polar decomposition code
- Gradient operator: cheat sheet
- Tensor definition
- Unusual interpretation of the cross product
- Maxima: operator cheat sheet
- Geometric interpretation of the inverse theorem

## #Japan

- Learning Japanese
- Learning Japanese: list of resources
- Starcraft 1998: Interactive Terran transcript
- Job interview: SPI personality test (question samples)
- Buy a car in Tokyo
- Find a Parking space in Tokyo

## #Miscellaneous

- MDD exporter (Lightwave Point Cache)
- CCD (Cylcic Coordinate Descent) IK algorithm
- HRBF distance field viewer
- Orbit / Trackball emuation for 2D mouse pointer.
- Skin a cylinder in blender