godotengine / godotengine/godot
Having zero in any component of Transform3D's scale causes error spam and a cascade of other editor bugs
- Dominant language
- C++
- Stars
- 117k
- Forks
- 26.8k
- PR merge metrics
- PR metrics pending
Description
### Tested versions
Reproducible in 4.3.beta1
### System information
Godot v4.3.beta1 - Windows 10.0.22631 - Vulkan (Mobile) - dedicated NVIDIA GeForce GTX 1660 SUPER (NVIDIA; 31.0.15.5212) - Intel(R) Core(TM) i7-10700F CPU @ 2.90GHz (16 Threads)
### Issue description
Having zero in _any_ component of a `Node3D`'s scale causes the following error to be spammed continuously:
```core/math/basis.cpp:47 - Condition "det == 0" is true.```
Any following attempts to interact with the node with the transform gizmo will fail, and will also reset the scale to `(0, 0, 0)`.
This should not happen, because having a zero scale is a perfectly legitimate case.
### Steps to reproduce
- Make any `Node3D` in a scene.
- Set any component of its scale to be 0.
- Observe the ensuing error spam.
- Now try to move, rotate, or scale it with the transform gizmo.
- Observe that the entire scale gets set to `(0, 0, 0)`.
### Minimal reproduction project (MRP)
N/A
Contributor guide
Research direction
Start with core/math/basis.cpp and reproduce the zero-scale case in the Godot editor using the listed Node3D and transform-gizmo steps. Trace the transform-gizmo path that follows the determinant error; done means zero scale no longer spams errors, resets the scale, or prevents moving, rotating, and scaling the node.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, godot
- Domain
- computer-graphics, game-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100