godotengine / godotengine/godot

Having zero in any component of Transform3D's scale causes error spam and a cascade of other editor bugs

Open
#93,007 5 comments 0 reactions 0 assignees View on GitHub
bug needs testing topic:3d topic:editor
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.