mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 19:01:09 +02:00
Merge pull request #3416 from ZappoMan/fixGlitches
normalize all quats before packing
This commit is contained in:
commit
198b14310f
1 changed files with 5 additions and 4 deletions
|
@ -86,12 +86,13 @@ int unpackFloatAngleFromTwoByte(const uint16_t* byteAnglePointer, float* destina
|
||||||
}
|
}
|
||||||
|
|
||||||
int packOrientationQuatToBytes(unsigned char* buffer, const glm::quat& quatInput) {
|
int packOrientationQuatToBytes(unsigned char* buffer, const glm::quat& quatInput) {
|
||||||
|
glm::quat quatNormalized = glm::normalize(quatInput);
|
||||||
const float QUAT_PART_CONVERSION_RATIO = (std::numeric_limits<uint16_t>::max() / 2.f);
|
const float QUAT_PART_CONVERSION_RATIO = (std::numeric_limits<uint16_t>::max() / 2.f);
|
||||||
uint16_t quatParts[4];
|
uint16_t quatParts[4];
|
||||||
quatParts[0] = floorf((quatInput.x + 1.f) * QUAT_PART_CONVERSION_RATIO);
|
quatParts[0] = floorf((quatNormalized.x + 1.f) * QUAT_PART_CONVERSION_RATIO);
|
||||||
quatParts[1] = floorf((quatInput.y + 1.f) * QUAT_PART_CONVERSION_RATIO);
|
quatParts[1] = floorf((quatNormalized.y + 1.f) * QUAT_PART_CONVERSION_RATIO);
|
||||||
quatParts[2] = floorf((quatInput.z + 1.f) * QUAT_PART_CONVERSION_RATIO);
|
quatParts[2] = floorf((quatNormalized.z + 1.f) * QUAT_PART_CONVERSION_RATIO);
|
||||||
quatParts[3] = floorf((quatInput.w + 1.f) * QUAT_PART_CONVERSION_RATIO);
|
quatParts[3] = floorf((quatNormalized.w + 1.f) * QUAT_PART_CONVERSION_RATIO);
|
||||||
|
|
||||||
memcpy(buffer, &quatParts, sizeof(quatParts));
|
memcpy(buffer, &quatParts, sizeof(quatParts));
|
||||||
return sizeof(quatParts);
|
return sizeof(quatParts);
|
||||||
|
|
Loading…
Reference in a new issue