Page MenuHome

Transform: Planar constraints don't work properly with non-Blender key configurations
Closed, ResolvedPublic

Description

System Information
Intel Core i7, 8 Gb RAM, AMD Radeon HD 7700 / Intel i5, 4 Gb RAM, Intel HD
Windows 7 x64

Blender Version
Broken: 2.78.4 67bef6b
Worked: 2.78a e8299c8

Short description of error

  • Planar constraints (shift + drag mouse to perform move, rotate or scale on plane) don't work at all in Maya or any other key config, if you switch to blender keys and back they will work, but very slowly.
  • Planar constraints work very slowly.

Exact steps for others to reproduce the error

  1. Start Blender and switch interaction mode from Blender to Maya or any other option.
  2. Hold Shift and try to drag the default Cube by one of the manipulator's axis.
  • In 2.78a you will be able to drag on a plane just as expected.
  • In 2.78.4 you won't be able to do it - object will slowly move in one axis.
  1. Switch keys to Blender (default) and try to move an object with holding Shift again.
  • In 2.78.4 object will slowly move on plane, much slower than it should.
  1. Switch back to Maya keys, try to move an object with holding Shift again.
  • In 2.78.4 planar constraint will start working for some reason, but object will slowly move on plane, much slower than it should.

I have noticed that Input key controls for 3D Manipulator looks a little bit different in 2.78a and the latest build, perhaps there is some conflict there?
By the way, the same exact thing happened with my own hotkey config - planar constraints doesn't work at all, if I change to Blender and back, they will start working very slowly.

EDIT: I have noticed that after applying the transformation, there is a new field in a Tool Shelf called use_planar_constraint set to 1, should we do something with that field?

Event Timeline

While it is true Shift > grab axis manipulator did work with less precision (larger movements) in 2.78a,
in 2.78.4 the action seems more to fit the description stated in the docs here:
https://docs.blender.org/manual/en/dev/editors/3dview/object/transform/control/precision/introduction.html?highlight=shift%20grab

Particularly in this sentence "Combining with other controls
All of the precision controls detailed on the page can be combined with the Axis Locking controls and used with the different Pivot Points."

So to me, planar locking is under axis locking and adding 'shift' does in fact as stated:
"Holding Shift during a transform operation will transform the object at 1/10th the speed, allowing much finer control."

In summary, it seems to be working now as stated in the docs.

Alex (SpectreFirst) added a comment.EditedFeb 1 2017, 10:01 AM

Well, the documentation is correct and all three modes are working perfectly fine in 2.78a:

  • If you hold Shift and start dragging an axis, you will get planar constraint just as expected.
  • If you start dragging an axis and then hold Shift, you’ll get precision movement just as expected as well and as described in the manual.
  • If you hold Shift, start dragging, release Shift and then hold it again, you’ll get both planar constraint and precision.

In the latest builds planar constraints either don’t work at all or gets stuck together with precision thus making moving or scaling practically useless.

Small update: all right, I think I was able to partially reproduce the correct behavior on Blender’s hotkeys: if you hold Shift, start dragging and then release Shift, you will get proper movement so the proper configuration is inverted. The full problem however is still exist on all other key presets: for example, Maya cannot do planar constraints at all and if you switch to Blender and back, planar constraint will work, but with inverted controls as well. Then if you'll try to use planar constraints and then try to drag an axis without holding Shift, it will stuck at the planar constraint mode permanently.

Bastien Montagne (mont29) triaged this task as Normal priority.

@Sergey Sharybin (sergey) iirc, you changed something regarding transform and its manipulators and options and shortkeys recently-ish? Could have broken Maya key config I guess?

Bastien Montagne (mont29) renamed this task from Planar constraints don't work properly to Transform: Planar constraints don't work properly with non-Blender key configurations.Feb 1 2017, 10:59 AM

@Bastien Montagne (mont29), i only made it so precise transformation is initialized to the shift state at the moment of click. The keymap was changed by @Julian Eisel (Severin). Not sure yet which exact change broke it yet.

Alex (SpectreFirst) added a comment.EditedFeb 1 2017, 11:13 AM

Technically speaking, Blender's key configuration don't work properly as well because when you're holding Shift and dragging an axis, instead of doing only planar constraints it does both precision and constraints together which shouldn't happen (it makes no sense to activate precision movement by default).

Just in case, I've tested the latest official build 2.78b 3c04373 from 2017-02-08 and the latest build from buildbot 2.78 38155c7 from 2017-02-09 and it looks like this problem does not occur in the official build, but still present in the buildbot version. This is very perplexing to me…

Tested 2.78c e92f235283 and the latest 2.78.4 c1012c6 and the situation seems to stay the same – official 2.78c works properly while buildbot version has broken constraints which forces me to stick to the official builds. I want to point out that I’ve found another discrepancy between the buildbot and official – buildbot version has two additional buttons for moving poses up and down in pose library while official build don’t have them which makes it very frustrating because now I have to keep the buildbot version with broken constraints for sorting poses and official version with working constraints for general work. Both of these issues don’t look difficult to fix so could you please fix the buildbot version so it would be possible to use it again for general work? Being able to move poses in official build would also be good, but broken constraints in buildbot looks like a much bigger issue.

2.78c is a fix for 2.78b. The fact that it was release long after 2.78 does not mean it has everything from Git. You can see that in the release notes.

Oh, so that's why some changes aren't reflected in release versions which makes sense now, but as far as I can understand this means that broken constraints will either eventually seep into release build and then every version will have broken constraints or they will never be used in release but buildbot version will stuck with broken constraints for indefinite amount of time (hence why I’m checking every major update in hopes that it will be fixed). In my opinion it would be much better to simply revert the change in buildbot version and make it work the same way it works in official because official version works perfectly fine and I don’t see a reason why it was changed in the first place.

Committed fix which enables planar transform for Maya now.

Unfortunately, it'll be enabled to an "accurate" transform. Don't see quick solution here and revert is not really nice here as well: this was requested by animator's team here in the studio.

Tested latest 8560776 and unfortunately it looks like that one of the main problems (besides the default accurate transforms) is still there: if you switch to Maya right at the beginning and use planar constraints at least once, transformations will stuck permanently in planar constraints mode.

  1. Start Blender and switch to Maya controls at the start screen.
  2. Hold Shift and move or scale the default Cube with planar constraints by dragging one of the axis (releasing Shift will make transformations work with proper speed as currently expected).
  3. Now try to move or scale the Cube again, but this time in one axis (by dragging that axis) – planar constraints will be enabled permanently and pressing-releasing Shift will not disable it.

Just in case, I have also tried to manually add Shift+Left Mouse into 3dsmax, Blender Experimental and my own control schemes (3D View –> 3D View (Global)) and it seems to work exactly the same way – in order for them to work I have to add Shift+Left Mouse first and Any+Left Mouse second and they also get stuck exactly the same way as default Maya controls does.

By the way, since that change was requested by someone in the studio, what was the exact purpose of that change? Perhaps the whole situation can be solved by enabling this mode for some particular command and not for the others? I think there should a way to add precision without breaking the whole transformation controls workflow across the knee.

Committed fix for the "sticky" behavior of planar constraint at rB499faa8.

This was intended fix for the transformation. The usecase is: when you're solving some self-intersection issues in animation you need to use accurate behavior of transform. If you enable it after click, you are risking of doing initial motion too far.

One more thing: committed some more tweaks trying to keep both usecases living side-by-side just happily at rB87f8bb8.

Give it a test!

I’m sorry for the messy report, it’s kind of hard to write down notes while juggling with several different configurations. Testing 810d7d4 with new default presets: for some reason I cannot make Scale manipulator work with planar constraints on all presets including Blender (default), enabling-disabling new “accurate” option doesn’t seem to affect it.

3Dsmax and Blender 2012 Experimental presets still don’t have Shift+ Left Mouse keymap for planar constraints, after adding them manually before Any Left Mouse makes them work as expected for Translate and Rotate, Scale is still not working with planar constraints.

I have also noticed that in Blender (default) it is now possible to hold Shift before using Rotate to get accurate rotations, but in Maya config you still have to press Shift after starting rotation.

Now for the good things:

  • Translate now works the same old way as before by default and it’s also possible to enable accurate transforms via new ‘accurate’ option.
  • I have also tried to enable accurate translations by default on Blender and Maya configs – now it’s possible to set Shift Left Mouse for accurate planar constraints, Shift Alt Left Mouse for accurate axis translations and Any Left Mouse for regular translations (in that order). My guess is that’s what was expected from the initial request – being able to hold Shift before dragging the manipulator to enable accurate transformations. Since Shift Left Mouse is used for planar constraints, I think it makes sense to use another key combination for accurate axis transforms; Blender (default) config now has two Shift Left Mouse keymaps and disabling the second one doesn’t seem to affect transformations (I can still use Shift for accurate translation by pressing it during the drag) so perhaps it would make sense to remap second Shift Left to Shift Alt Left for accurate axis translations.

Overall I think that Shift+Mouse, Shift+Alt+Mouse, Any+Mouse should do the trick of covering most possible combinations of regular and accurate transforms (except accurate planar constraints because Ctrl enables snapping), but since planar constraints can be set to accurate by default ( or just use some random button), I think this should be enough to cover most useful scenarios. I will wait for the Scale transformations fix and then I’ll try to move to the new config and work with it to be sure that there will be no further issues.

Alex (SpectreFirst) added a comment.EditedMar 7 2017, 10:33 AM

Just in case - is this worth creating an additional report to keep track of? Since I can’t make Scale work with planar constraints on all configurations now, it’s not exclusive to non-blender schemes anymore, but it’s still a part of this report so we can still keep working on it here.

I did some additional testing on 15fa806 and found out that on Blender (default) config Scale doesn’t work with planar constraints but uses accurate transform if you hold Shift before dragging, but in Maya and other control schemes neither planar constraints nor accurate transform work when you hold Shift prior to dragging. It’s still possible to hold Shift after you’ve started dragging to achieve accurate transform, but since the point was to be able to hold Shift before the drag, I thought it’s worth mentioning. As I’ve mentioned before, the same thing happens with Rotate – possible to hold Shift in Blender (default) before dragging to make it accurate, not possible in all other schemes.

EDIT: when I enable the new accurate option in Shift+Left Mose config, accurate Scale transforms actually start working before the drag, but checking planar constraints as well seem to turn them off again.

I’m sorry for the messy report, it’s kind of hard to write down notes while juggling with several different configurations. Testing 810d7d4 with new default presets: for some reason I cannot make Scale manipulator work with planar constraints on all presets including Blender (default), enabling-disabling new “accurate” option doesn’t seem to affect it.

Should be fixed in rBca796f872e19.

3Dsmax and Blender 2012 Experimental presets still don’t have Shift+ Left Mouse keymap for planar constraints, after adding them manually before Any Left Mouse makes them work as expected for Translate and Rotate, Scale is still not working with planar constraints.
I have also noticed that in Blender (default) it is now possible to hold Shift before using Rotate to get accurate rotations, but in Maya config you still have to press Shift after starting rotation.

Committed rBaf076031d66 and rBAC6eba8b36a, should all work fine now.

  • I have also tried to enable accurate translations by default on Blender and Maya configs – now it’s possible to set Shift Left Mouse for accurate planar constraints, Shift Alt Left Mouse for accurate axis translations and Any Left Mouse for regular translations (in that order). My guess is that’s what was expected from the initial request – being able to hold Shift before dragging the manipulator to enable accurate transformations. Since Shift Left Mouse is used for planar constraints, I think it makes sense to use another key combination for accurate axis transforms; Blender (default) config now has two Shift Left Mouse keymaps and disabling the second one doesn’t seem to affect transformations (I can still use Shift for accurate translation by pressing it during the drag) so perhaps it would make sense to remap second Shift Left to Shift Alt Left for accurate axis translations.

Actually it was planned to remap the shortcut to enable planar transform first, but I decided against it simple because the shortcut will become redundant in 2.8. We'll likely have a new transform manipulator set then which eventually includes visual manipulators for planar transform, see T47032. It would be a bit weird to change a shortcut for a release knowing it will actually be removed in the next release. Since artists in the Blender Institute really wanted to be able to enable precision before starting the transform, making the shortcuts user-configurable seemed like the best solution for now.

So guess this is a perfect example of how terribly complicated/confusing minor changes in the keymap can be :S
Hope everything is fixed now, thanks for kicking us until that's actually the case ;)

Glad to be helpful! Tested 9e566b0 on all configurations with and without "accurate" option turned on to ensure that "accurate" properly enables precise transformations: so far it looks like everything is OK now, even rotations seem to follow the same rule so it is now possible to hold Shift prior to dragging. I will move to the new setup with the next daily update to test it further. Anyway, thank you both for spending extra time on this topic. By the way, about T47032:

I'm closely following it and the last message there is my own mock-up for new manipulator sets because I've spent the last decade modeling exclusively with universal manipulator (and pretty much still doing the same in Blender now) so this topic is very vital to me. For curiosity sake, have you seen my mock-ups? As I've said, properly implemented universal manipulator is vital to me so I'm trying to be as close to this topic as possible.

By the way, about T47032:
I'm closely following it and the last message there is my own mock-up for new manipulator sets because I've spent the last decade modeling exclusively with universal manipulator (and pretty much still doing the same in Blender now) so this topic is very vital to me. For curiosity sake, have you seen my mock-ups? As I've said, properly implemented universal manipulator is vital to me so I'm trying to be as close to this topic as possible.

I quite like your approach and I'll probably reply as soon as I find the time to work on the project again. I'd really like to get this into the 2.8 branch soon but for that I need the time to finish it, but currently I'm working on some other projects :) (workspaces, new top bar, collection/layer UI, etc)

</off_topic>

I encountered this issue with my own Blender key config. In fact, both of the Shift-Left Mouse commands for view3d.manipulator were somehow missing, although I don't recall deleting them. I added them both of them back in manually to my key config, exactly as in Blender's default config, but they still don't work. They only work in Blender default. I'd really like to be able to use this feature with my custom config as I have some very handy shortcuts I use frequently, namely:

F > Step Forward 1 Frame
D > Step Backward 1 Frame
E > Jump to End Frame
Q > Jump to Start Frame
Shift+E > Jump to Next Keyframe
Shift+Q > Jump to Previous Keyframe
Spacebar > Play / Pause

Alt 1 > Toggle Snap
Alt 2 > Snap Element Menu
Ctrl+MiddleMouse Click (in Edit mode) > Mesh Select Mode

Any thoughts on why Shift+LeftMouse is not working for the 3D manipulator in my config?

Here is the .py file:

Thanks for any advice!

-Adam