Page MenuHome

Camera can acquire skew that propagates to render
Open, Needs Triage by DeveloperPublic

Description

Win10, Nvidia 1070
Tested in Blender 2.80, 2.79b, true in both.

Relatively minor bug.

The camera can acquire skew from parenting relationships that lead to it inheriting scale that lies outside of its basis vectors. This skew affects renders. This is inconsistent with how the camera handles basis vector scaling, which it removes for render. That inconsistent behavior is why I consider this a bug.

To reproduce, create a camera, parent it to something, scale the camera's parent non-uniformly (different amounts in different axes), make sure that the camera has local rotation, but not local rotation at exactly 90 degree intervals, render.

Suggested fix: either cancel out skew by recreating camera basis vectors on the basis of Z, average X+Y vectors, or allow even uniform scale to affect the render. I would prefer the latter personally, as it would allow greater artistic freedom.

Workaround: give the camera a limit rotation constraint (no axes have to be enabled, and limits of -180,180 are fine.) Which could be it's own bug report, but even more minor-- copy/limit rotation/scale constraints don't seem designed around the possibility for skew, and seem to instead just rewrite the matrix components they assume rotation and scale to have affected without recognizing that inherited non-uniform scale can affect other components of the matrix.

Details

Type
Bug

Event Timeline

Nathan Vasil (vasiln) updated the task description. (Show Details)
Brecht Van Lommel (brecht) lowered the priority of this task from Needs Triage by Developer to Needs Information from User.Sep 13 2019, 9:12 AM

We require a .blend file to reproduce the problem, as well as testing with the latest daily build to confirm it's still a problem.

Bastien Montagne (mont29) claimed this task.

More than a week without reply or activity. Due to the policy of the tracker archiving for until required info/data are provided.

We require a .blend file to reproduce the problem, as well as testing with the latest daily build to confirm it's still a problem.

More than a week without reply or activity. Due to the policy of the tracker archiving for until required info/data are provided.

Apologies, I never got the first message (maybe spam foldered?)

Tested in 2.81 2019/09/25 20:42. hash ee4707544904 . Still occurs. Here's a file saved in that daily build:

Contains four cameras in different collections. Camera in 1, scene active camera, shows inherited skew. Camera in 2 is the same camera, unparented, keep transform (no skew, but pointing the wrong direction because Blender doesn't have a way to keep skew transforms except inherited through parenting relationships, and doesn't rebuild the basis vectors around the Z axis on unparenting.) Camera in 3 is the same as the camera in 2 but reoriented to point at the world origin for comparison with camera 1 (via a damped track, applied transform.) Camera in 4 is the same as the camera in 1, except with a limit rotation constraint (but no limits) demonstrating the workaround.

Brecht Van Lommel (brecht) raised the priority of this task from Needs Information from User to Needs Triage by Developer.