Maya C++ API: create a progress window


Tensor basic definition


Maya C++ API: write a custom Linear Blending Skinning node


Maya: look up array attribute connections


.MDD file exporter / importer source code (C / C++)


デュアルクォータニオン スキニング チュートリアル・解説 C++


Anki: add syntax highlighting with javascript (highlight.js)


Find a tetrahedron circumcenter


Parking space in Tokyo / Japan


Mistakes to avoid when buying a car in Tokyo / Japan


COM and DirectX


Getting started with DirectX 11


Curvature of a Distance field / Implicit surface


Curvature of a parametric curve


[Maya C++] add control curve/spline attribute

Allow user to customize a 2D curve (spline etc.) to control some parameters such as color, grading and more.


Cyclic Coordonate descent Inverse Kynematic (CCD IK)


SPI personality test - SPI性格検査・SPI模擬テスト・SPI問題集

Sample questions for the SPI personality test which is very popular in Job interviews (questions related to logic, language etc. are not present)


Efficient Maya development environment

How to setup your IDE so that clicking 'build' allows you to test and run your Maya plugin without extra steps or application restart.


Avoid SVD to compute optimal rotation between point sets

Draft note


Definition: Laplacian Matrix for triangle meshes


Definition of the Laplacian matrix and Laplace operator on a triangular mesh. I give an in depth explanation here.


[Maya C++ API] paint weights with MPxDeformer


Distributing Maya plugins


I will discuss various ways you can ship a Maya plugin to users.


Polar decomposition of a 3x3 matrix

Leaving [  C++ code ] to decompose a 3x3 matrix into rotation and scale/shear with polar decomposition.


Diffusing / smoothing weight map over a triangular mesh.

Showcasing simple procedures with C++ code to smooth / diffuse per vertex weights over a triangle mesh.


Inspiration


Normal to an implicit surface


Implicit surface a.k.a (signed) distance field: definition

Render by Elmar Glaubauf (artstation.com)

If I say "implicit surface" you may think of metaballs and marching cube, I'll show you there is more to it!


Phong illumination model (cheat sheet)

$$ f(  \vec p ) = \underbrace{I_a K_a}_{\color{red} \text{ambient component}} + \underbrace{\sum_i^\text{nb_lights} (\vec n( \vec p ) . \vec l_i) K_d I_i}_{\color{green} \text{diffuse component}} + \underbrace{\sum_i^\text{nb_lights} f_{spec}(\vec l_i( \vec p ), \vec v(\vec p)) K_s I_i}_{\color{blue} \text{specular component}} $$

I summarize the Phong illumination model with the above equation and explain all the terms one by one.


Anki tip, inserting furigana (pop up on mouse hover)

Here is how you can make furigana appear above kanjis in your anki flash cards like this: おはし上手じょうずですね!


Learning japanese: a life's journey

Learning a language is quite a challenge, here I will gather some resources and thoughts about learning Japanese.


MAYA_SHELF_PATH not working, empty Maya shelves


[Maya C++ API] Get selected vertices of a mesh


[Maya C++ API] Set skinning weight attributes

Some C++ Maya API code to set skin weights (multi attributes) of a skin cluster node.


Dual Quaternion Skinning with scale

DQS with scale applied on the second to last joint. Left, globally propagates until the last bone, right, scale localized to each joint.


Skeletal animation, forward kinematic


Transforming implicit surface (distance field) and their gradient


[Maya C++ API] Save MPxData attribute on file


Bulge free Dual Quaternion Skinning (Trick)

Left: standard DQS. Right DQS bulge correction (both use same automatic skin weight: "smooth bind" inside Maya).


Laplacian smoothing (C++ code to smooth a mesh)

Dropping a procedure to compute the Laplacian smoothing of a 3D mesh (with cotangent weights).


C++ code for cotangent weights over a triangular mesh


Transform normals given a deformation map


Blender 2.5 - 2.7 tutorial to animate a cylinder


Maya summary

Summary of elementary Maya feature.


Gradient rules

Cheat sheet to differentiate expressions with the \( \nabla \) operator to compute gradients of various functions.


Design of a simple sphere deformer to displace a mesh model


Elastic Implicit Skinning: a Robust Iso-Surface Tracking for Interactive Character Skinning


2D biharmonic stencil a.k.a bilaplacian operator

Draft / notes / memo


Voro++.0.4.5 with cmake for easy compilation under windows

Dropping my code of the cmake version of voro++0.4.5 ]. It helped me to compile the voro++ library under windows with cmake.


Harmonic function: definitions and properties

This is the second part of my tutorial series on bounded harmonic functions. For a quick introduction and examples of use of harmonic functions read the first part. In this part I define harmonic functions and their properties. This is the hard part with a lot of mathematics. But it's a mandatory step to understand how harmonic functions work. This will allow you to apply them in a broader context and understand many scientific papers relying on these. In addition this will be my entry point to introduce Finite Element Method in future posts. So hang on it's worth it!


AnkiDroid: How to solve "Syncing error, type: 409, message: Conflict" problem

I ran into the infamous message "Syncing error, type: 409, message: Conflict" while syncing my AnkiDroid with AnkiWeb on my Nexus 4. Here is the solution:


Contour lines


How to generate bounded harmonic weights on a regular grid


Singular value decomposition of a 2x2 matrix (C++ code)

Dropping some [ code here] to do a singular value decomposition (SVD) of a 2 by 2 real matrix.


Source code for poisson disk sampling of a triangle mesh

2d poisson disk


3D viewer for Hermite Radial Basis Function

This is a simple demonstrator of the HRBF technique presented and explained here. You can visualize and edit the implicit surface generated with HRBF.


Curvature of a triangle mesh, definition and computation.


Defining and giving the formula to compute the curvature over a triangle mesh at some vertices.


C++ code for spline curves

2d spline


Implicit Skinning: Real-Time Skin Deformation with Contact Modeling


Dual Quaternions skinning tutorial and C++ codes

日本語版・Japanese version

In this entry I provide [  C++ codes ] to deform a mesh with the famous Dual Quaternion Skinning (DQS) deformer.


Convert implicit surface defined with global support to compact support


Trackball C++ code without quaternions


Compute Harmonic weights on a triangular mesh

Here I describe the discreet Laplace-Beltrami operator for a triangle mesh and how to derive the Laplacian matrix for that mesh. Then I provide [  C++ code ] to compute harmonic weights over a triangular mesh by solving the Laplace equation.


Building a new culture of teaching and learning

Theories around alternative systems for teaching and learning has always interested me, so I decided to open an entry about that.  My first contribution will be the English transcript of an inspiring video about education. I might put more articles/videos on this topic later.


Recipe for implicit surface reconstruction with HRBF

Compute distance field from point cloud data.

C++ code to emulate openGL old direct mode drawing

glBegin(GL_TRIANGLES);
glVertex3f(1.0f, 0.0f, 0.0f);
glVertex3f(0.0f, 1.0f, 0.0f);
glVertex3f(0.0f, 0.0f, 1.0f);
glEnd();

 [  compact version ] | [  modular version ]

Remember the old days when you were able to simply draw a few primitives with GL_POINTS, GL_LINES or GL_QUADS within a pair of good old begin() end(). Well I'm providing a C++ class which will enable you to do this again under OpenGL 3.1 or higher.


C code for 4x4 matrix inversion

Just leaving some code here to invert either column or row major 4x4 matrices.


Upgrade to CUDA 5.0: cudaMemcpyToSymbol invalid device symbol error

You have just upgraded to CUDA 5.0 and the function cudaMemcpyToSymbol() throws you the infamous "invalid device symbol" error. Here is what to do.


CUDA constant memory, namespace, and weird bugs

Edit: the usage of cudaMemcpyToSymbol describded below is deprecated since CUDA 4.1 (See also my new entry Upgrade to CUDA 5.0: cudaMemcpyToSymbol invalid device symbol error)

Today I want to discuss some issues I had with CUDA constant memory and share some workarounds.


Drag and drop not working in QTDesigner or QTCreator designer

This has upset me for some time and I finally found a forum entry solving this problem.

The problem: I wasn't able to drag&drop in QTDesigner any widgets from the widgets list to the form I was editing.
Solution found here: qtforum.org

You only need to add this entry to your /etc/X11/xorg.conf:

Section "Module"
Load "extmod"
EndSection

Broken F4 shortcut in Qtcreator for cuda files ".cu"

Well I'm using QtCreator to code my CUDA project and there has been a lot of things bothering me. Among them is this F4 shortcut which doesn't work. The shortcut enables switching between the header and source file but apparently the extension .cu is not recognized as a C++ source file. Here is how to fix it.


  • 1