Yet another preview from the upcoming APEXvj release. This time the good old rock hand from Jonny Ree got some special treatment.

Basically what happens here is that I take every triangle of the model and turn them into tetrahedron by adding one more vertice. In order to move them away from the model I calculated tangent angle of every triangle and use that as a move vector.

Vector.Normalize(Vector.Cross(pos2 pos1, pos3 pos1));

The extra vertice is placed in the middle of the triangle and moved backwards using that tangent. The middle position is quite obviously an average of three triangle vertices.

var mid = (pos1 + pos2 + pos3) / 3f;

In order to get nice variations between move distances and to keep the model identifiable enough I made another calculation based on triangle size.

var len = (Vector.Length(midpos1) + Vector.Length(midpos2) + Vector.Length(midpos3)) / 3f;

This gave me a rough value of how large the triangle is. I could now decide to move large triangle a bit less. Obviously this apparatus contains a lot more then just that, but that’s one neat trick discovered while working on this.

Whole geometry + animation is one draw call, one for 512×512 shadow map and one for post processing. Pretty much everything happens in GPU so it’s quite optimized for performance. I’ve made a lot of fine tuning since the last post, especially with post processes.

You can go fullscreen with F-key (in windows just press F11) and if you like, you can still drag with your mouse.

Song is Noisia – Machine Gun (16bit Remix).

WebGL export via UNO in Realtime Studio