Graphics Reference
In-Depth Information
q
1
q
4
= 0.5q
1
+ 0.5q
2
q
5
= 0.5q
1
+ 0.5q
3
εε
q
2
q
3
Figure 1.8.
Discontinuity of blending two quaternions.
.Let
us consider Figure 1.9. Quaternions
q
1
,
q
2
,and
q
3
specify 0
◦
, 140
◦
, and 220
◦
rotations in the
xy
-plane, respectively. Let us set quaternion weights to
λ
1
=
λ
2
=
λ
3
=
3
. The case where we blend quaternions in order
q
4
=(
λ
1
q
1
+
λ
2
q
2
)+
λ
3
q
3
will differ from the result when we blend them in order
q
5
=(
λ
1
q
1
+
λ
3
q
3
)+
λ
2
q
2
.
Having said that, we do not blend quaternions directly. Instead, we blend
final transformed vertex positions. This, obviously, slightly increases ALU count
in the shader code, but we benefit from a reduced skinning texture size and fewer
vertex texture fetches, as shown in Section 1.8.
Furthermore, blending three or more quaternions is not
commutative
q
1
q
4
= (0.33q
1
+ 0.33q
2
) + 0.33q
3
q
5
= (0.33q
1
+ 0.33q
3
) + 0.33q
2
q
2
q
3
Figure 1.9.
Ambiguity of blending three quaternions.