12#include <glm/gtc/quaternion.hpp>
28int syncModeFromString(
const std::string &mode) {
29 return mode ==
"body" ? 1 : 0;
33glm::quat nodeQuaternion(
const SceneNode &
n) {
35 return glm::angleAxis(
n.yaw, glm::vec3(0.f, 1.f, 0.f)) *
37 glm::angleAxis(
n.pitch, glm::vec3(1.f, 0.f, 0.f)) *
39 glm::angleAxis(
n.roll, glm::vec3(0.f, 0.f, 1.f));
44void decomposeWorld(
const glm::mat4 &
w, glm::vec3 &
pos, glm::vec3 &euler,
46 pos = glm::vec3(
w[3]);
48 glm::vec3 c0(
w[0]), c1(
w[1]), c2(
w[2]);
49 scale = glm::vec3(glm::length(c0), glm::length(c1), glm::length(c2));
54 glm::mat3 rot(c0, c1, c2);
55 glm::quat
q = glm::quat_cast(rot);
56 glm::vec3 e = glm::eulerAngles(
q);
57 euler = glm::vec3(e.y, e.x, e.z);
std::array< double, 10 > q
std::array< float, 3 > scale
int findLinkKind(const char *kind)
Finds link kind.