The FBXReader inverse bind pose calculation can sometimes introduce floating point fuzz into
the bottom row of the matrix. The Transform class checks this bottom row before doing decomposition
into translation, rotation and scale. If it detects that this row is not exactly (0, 0, 0, 1) it aborts.
And returns identity. To guarantee that it preforms the decomposition correctly slam the row to (0, 0, 0, 1),
before conversion to a Transform instance.
(cherry picked from commit 991ba7f195)
The basic dual-quaternion skinning algorithm does not handle non-rigid transformations like scale well.
Because we only use scaling for head cauterization, we special case this by passing in a cauterization factor,
as well as a cauterization position to the vertex shader. If a vertex is flagged as cauterized, we slam it to equal the cauterization position.
Although, not as smooth as the previous method, it seems to work well enough on the avatar's I've tested.
(cherry picked from commit faf8350369)