Dear Creators,
We’d like to inform you that as of now, the internal engine in Overdare Studio does not yet fully support the XYZ rotation order for CFrame. Functions like CFrame.Angles(...), CFrame.FromEulerAnglesXYZ(...), and CFrame:ToEulerAnglesXYZ() are currently not producing reliable results, and may internally behave as if they are using the YXZ rotation order instead.
To ensure consistency and avoid unexpected behavior, please review the following guidelines:
Key Usage Guidelines
-
Avoid using the XYZ rotation order.
- Functions like
CFrame.Angles(x, y, z)andFromEulerAnglesXYZ(...)do not currently guarantee correct XYZ behavior. - Using them may lead to incorrect or unexpected rotations.
- Functions like
-
Use the YXZ rotation order instead.
- The only verified and currently supported rotation order is
YXZ. - Please use
FromEulerAnglesYXZ(...)andToEulerAnglesYXZ()for all rotation-related logic.
- The only verified and currently supported rotation order is
-
For systems requiring precise orientation
(e.g., camera rigs, IK systems, visual editors),
make sure to explicitly use the YXZ rotation path to avoid discrepancies. -
Upcoming improvements
- Support for true XYZ rotation order is planned in a future update.
- Until then, YXZ should be treated as the default and only trusted rotation order.
Recommended Usage Example:
local x, y, z = math.rad(30), math.rad(45), math.rad(60)
local cf = CFrame.FromEulerAnglesYXZ(y, x, z)
Not Recommended:
local cf = CFrame.Angles(x, y, z) -- Internally handled as YXZ, not true XYZ
We appreciate your understanding and encourage you to follow these practices to ensure a more stable and predictable creation experience. If you have any questions, feel free to reach out through our forums or support channels.
Thank you!
— OVERDARE Studio Team