IKまで完了

テクスチャと表情モーフィングとIKを実装

IKのひざの特別処理で回転をオイラー角に分解してから、角度に制限を加えた後でオイラー角を回転に戻す処理があるのだがそこで使った
core::matrix4::setRotationRadians

core::quaternion::quaternion(const core::matrix4 &rotation)
の動きが怪しかった。Irrlichtの数学ライブラリに疑心暗鬼になりつつw
代替コード。

static core::quaternion constraint(const core::quaternion q)
{
	core::vector3df euler;
	q.toEuler(euler);
	// Xの回転角度の制限
	euler.X=clamp(euler.X, static_cast<f32>(-M_PI), -0.002f);
	// Xの回転のみのクォータニオンを作る
	float radianX=euler.X * 0.5f;
	float sinX = sinf(radianX);
	float cosX = cosf(radianX);
	return core::quaternion(sinX, 0, 0, cosX);
}

x軸1軸の回転だとわかっているのでこんな感じに。
次は、Bullet組み込み。