Rotations calculations are wrong if parents' scale is negative

Sample project:
https://playcanvas.com/project/1047289/overview/negative-scale

If an entity is a child of an entity with negative scale, the transform is calculated wrong.

Steps to reproduce:
Test 1 (Editor):
Parent the second box of the red cubes to the first bnox of the red cubes.
Result: The second box somehow changes its rotation. Undoing via shortcut does not correctly restore its previous state.

Test 2:
Press play. The white as well as the second green box have a script applied which rotates the boxes.
Result: Only the white box rotates. Green box does not.

I’m unsure if negative scales are supported at all. Can someone elaborate?

I also had some weird issue where if I rotated the child it somehow scaled down.

This looks like an engine bug where getRotation and I guess getEulerAngles aren’t correctly calculated if a parent has negative scale. I’ve created a ticket for this:

1 Like

What would be the use case, where a negative scale needs to be used?

We use it to easily mirror a checkpoint lane

2 Likes