Page MenuHome

Camera Movement along an axis issue
Confirmed, NormalPublicBUG

Description

System Information
Operating system: Windows-10-10.0.17763 64 Bits
Graphics card: Radeon RX Vega ATI Technologies Inc. 4.5.13559 Core Profile Context 26.20.12001.7006

Blender Version
Broken: version: 2.81 (sub 3), branch: master, commit date: 2019-08-24 15:59, hash: rB6bb2912704ba
Worked: (optional)

Description of error
While moving my camera along the y-axis, I noticed this bug. I have made a video and uploaded it to youtube, to demonstrate it. Here is the link to it: https://youtu.be/get9_hMZXDQ

Basically when I move my camera along the y axis .. beyond 300m mark, it suddenly jumps to -10000000m or something.. and the screen goes blank. Also, I have not tested it along the X axis or Z axis so far.

Revisions and Commits

Event Timeline

William Reynish (billreynish) changed the task status from Resolved to Unknown Status.EditedAug 26 2019, 8:49 PM

This issue was not fixed by the above commit - must be a mixup. I can still reproduce the issue in this bug report. It's not related to gizmos or DOF - this is about translating the camera inside camera view.

Mixed this up with T69140: Can't move Camera Limit widget.

This may be a bug in windows mouse input handling, on Linux (X11) there is a similar bug with mouse coordinates being clamped to a 16bit integer.

Jeroen Bakker (jbakker) changed the subtype of this task from "Report" to "Bug".Feb 4 2020, 11:15 AM

This is happening when moving any object (not only camera) along a axis and moving it very far away without releasing it. Specially happens in the negative direction for me.
This is the exact part of the code where the issue is happening:

File: source\blender\editors\transform\transform_constraints.c
In "axisProjection" function from line 263 (currently):

/* give arbitrary large value if projection is impossible */
    factor = dot_v3v3(axis, norm);
    if (1.0f - fabsf(factor) < 0.0002f) {
      copy_v3_v3(out, axis);
      if (factor > 0) {
        mul_v3_fl(out, 1000000000.0f);
      }
      else {
        mul_v3_fl(out, -1000000000.0f);
      }
    }

If the if condition is true, the issue happens.
I have a rough idea of what is doing and why but I don't think I can give it a proper solution. Hopefully someone have a good idea.