Page 1 of 2

Suggestion for transform widget debate

Posted: Thu Apr 07, 2005 10:34 pm
by gendou
Hi, I was going to post this on one of the "testing build" threads but I was concerned it wouldn't get many views, so I decided to open a new thread. I was just reading over the transform docs in the wiki and I saw some things in there that I haven't seen in the bf builds thus far and thought of a way to have the old transform and new manipulators coexist without sacraficing functionality on either.

Remove the Ctrl (move, rot, scale) transform toggle present now but leave the hand button in the header to toggle manipulators on and off. Remove the move, rotate and scale buttons. They wouldn't be needed by using the following transform widget.

I saw this combo manipulator pictured in the wiki but not used in a build.

It's nice because the different handles are spaced enough (almost, perhaps a user pref to adjust the spacing?) to grab without grabbing the wrong one, plus the sphere at the axes intersection isn't present so it doesn't interfere with selections or seeing what's selected. It shoudl also be a 2D helper, not a 3D shaded object. You would use them by click-dragging on the handles and releasing to confirm a transform. This would probably be preferred by people who like manipulators since that's how most of them function. Retaining the method "hotkey to enter transform mode, move mouse, click to confirm" is better left to the mode with manipulators turned off. Switching between local/global axes, could be Shift+MMB (or one universal hotkey) for both maniuplator mode and hotkey mode. Hold Ctrl when clicking an axes handle to constrain to planar movement, as it is now.

To retain the old transform, the G, S, R hotkeys would still function and the MMB axis toggle would work the same. Press Shift+MMB to switch between local/global axes. The Ctrl + axis key would still lock to planar constraints.

I think that instead of making the manipulators have multiple modes requiring multiple hotkeys or a mode toggle, create a switch for global/local transform so the old transform doesn't change and use a multi-functional widget for manipulator transforms.

I hope that I explained that clearly enough without any missed points or contradictions.

Posted: Thu Apr 07, 2005 10:44 pm
by SamAdam
you got my vote!

Posted: Thu Apr 07, 2005 11:32 pm
by -efbie-
1) this kind of thing is already in current build, just shift-activate the different manipulators, just as you can activate simultaneously the different select modes.That's why you need those different buttons.

2) Tottaly agree about the ctrl shorcut to change modes. Not only it is totally counter intuitve, but it isn't practical because when you hit ctrl for any reason (and there is a lot of shortcuts with ctrl) it changes the manipulator... :?

3) shift mmb is a good idea but since manipulators are created for beginners, why hide it in a complicated shortcut ? clicking the center again is nice :) and i don't like the fact that it has been removed in tuhopuu for grab.

randoms ideas / comments about widgets.

4) the shading i prefer is from tuhopuu. The specular shading in bf make it look like a regular 3D object, and the manipulators made of lines(let's call them the 2D ones) are too cheap. and the 'rotations" ones are awful. (the one with handles is unusable, and the one with circles is confusing because all the lines have the same width.)

5) The center dot is annoying but useful. I like the shading it has in the 2D widgets. You still can click it and it is transparent so it doesn't block the view.

6) I would like to be able to grab the arrow lines too. Not only the arrow heads.

7) an little shading overlay on the selectable parts would make them easier to click.

8) I don't really like the shift shortcuts for plane constraints. It isn't newbie friendly at all. what would be easier is a diagonal line between axes. Like the 3DMax widget in fact.

that's all :)

Posted: Fri Apr 08, 2005 3:09 am
by matt_e
Hi gendou,

You might like to read these notes that I wrote: ... sformNotes . After testing, I don't think that previous rotate manipulator mockup is a good way to go any more, though I definitely like to have it easy to fit all on the screen at the same time (well, at least move and rotate anyway, they're probably the most used together)

In tuhopuu, I added some alternative hotkeys to change manipulators - Alt Shift G/R/S. Some feedback on how this goes would be nice. It's a bit uncomfortable for me, but I'm using a laptop keyboard here. Need to get a proper full size one... :/
-efbie- wrote:clicking the center again is nice :) and i don't like the fact that it has been removed in tuhopuu for grab.

5) The center dot is annoying but useful. I like the shading it has in the 2D widgets. You still can click it and it is transparent so it doesn't block the view.
Well, I guess you probably read my doc, but if not, the reason I took it out is in there


It's absolutely infuriating when doing anything with vertices or small objects. That screenshot is a real world case on a job I was doing with a curve object. Not only did it make it impossible to see where the verts are, but it was also impossible to select other verts nearby, because it would interpret the click as a click on the center ball.

I see this as a very big no-no. The manipulators should supplement and aid what a user's working on. They should definitely not become the primary focus.

There's got to be better ways to choose between local/global/etc. Another minor problem with the current bf situation is that you don't actually know whether it's local or global or whatever. Sure, you can see where it's pointing, but if your object hasn't been rotated, it may be confusing/annoying when you select another object and realise that the manipulator is pointing a different way.

William suggested to me in an email about putting a small menu next to the buttons on the header to choose local/global/etc. This would be good because it would solve the above problem, and you could make it work to set the default for the middlemouse click constraints. Currently there is no way to visualise local axes there, you have to just press G, X, X, or whatever, and guess. I do like the fact that the center ball is a nice and visual way to do it, I guess we need a solution that combines the positive aspects of these ideas without the terrible 'covering up my work' aspect.

Posted: Fri Apr 08, 2005 6:31 am
by gendou
Hi, I did read most of that link you posted, broken, that's where I got the idea. I was mostly saying that I think something *like* that multi-widget would be nice and taking the center ball away (what about making it an outline of a circle instead, like a border? Then you could see what was under the center.) If the center was an outline, then you would need some kind of other toggle for local/global transforms since the line making up the circle would be too thin to click on. Regading the shortcuts you added, having too many modifier keys + the action key becomes unintuitive.

I quickly mocked this widget up while replying:

The scale blocks could go away but then a mode button or hotkey would be needed to get scale mode. Most other apps make you change modes by a button or a hotkey for move, rotate and scale and yet another for switching local/global transform. In the mockup, I removed the mode button beside the hand and added a Local switch button (unpressed=Global, pressed=Local). It's like that in Cinema 4D and 3DS Max.. I don't think the local/global switch even works in C4D.

Best possible solution?
In my opinion, keep the mode buttons in the header and add a Local/Global switch button. Lose the hotkeys for manipulators unless one can be chosen to toggle through the modes (like Crtl, but NOT Ctrl). I think that the Hand button should be a toggle, it turns the whole widget mode on and off (if possible). When it's on, the G,S,R buttons don't activate transform modes. The G key would toggle through the different modes like Ctrl does now (placement on the keyboard is nice, right in the middle) or use the S or R keys, but make it one key because G is too far from S and R (always been a pet peeve of mine for switching modes, it makes me look down from the screen). When the hand button is unpressed, the G,S,R keys and MMB work like they've been working. This way, people who don't want the widgets won't have to change their way of working.

Just some thoughts.

Posted: Fri Apr 08, 2005 7:47 am
by matt_e
Some thoughts and philosophy on the hotkeys:

I understand what you're saying and know that other apps do it that way, but I think it's something we should avoid if we can. The Blender method of transformation is very quick, wit the G/R/S hotkeys starting a transformation immediately, rather than just changing mode.

This ties in with something I see as being something inherent in Blender on a higher level, they way that I physically interact with the software. When using Blender, I find my actions to feel far more 'fluid' than in other software. When I'm using Blender, my mouse is nearly always moving, left, right, across window space borders, all over the place. This is due to a few things: 1) the keyboard+mouse philosophy, 2) the 'context sensitive' design that causes different hotkeys to mean different things when the mouse is over various window spaces, and 3) the hotkey based transformation system. One thing that I love about Blender's G/R/S transformations (and in general, the idea that selection is separated from editing) is that the mouse doesn't necessarily need to be anywhere near the object that you're transforming.

It's like rather than trying to maximise efficiency with Fitt's law, getting your mouse to a certain point quickly, it completely sidesteps the issue and makes the location of the mouse irrelevant. This means that I can click something to select it, move the mouse away, move/rotate/scale the selection, confirm the transformation, and continue on to the next selection, all the while my mouse is constantly moving, so that by the time I've finished transforming something, my mouse is ready, or already moving towards the next thing I want to work on. Of course this way of working suits some things like freeform modelling, more than other things, but it's a very fast way of working.

The trouble with manipulators in other apps is that they require you to constantly have the mouse on what you are manipulating. This favours an approach where you concentrate on one object at a time, when you're finished, move on the the next selection and do your stuff. When the manipulators in Blender, I've found it very handy to (for example) have the rotate manipulators on screen for nice precision, but then quickly nudge the object with the G key to get it to line up correctly. This instant access to transformations is something I really think should be kept.

The other issue is that in my mind, we should be doing more to integrate the transform tools into something that feels much more unified and streamlined. Right now, the structure of their isolated development really shows - there's the hotkeys, separated from the middlemouse click constraints, which are again separated from the manipulators. They don't have much consistency between them and it makes it feel like you're using 3 separate systems, rules, and idiosyncrasies. This leads to things like I've seen written on the forums implying a division between "people who use manipulators" vs "people who use hotkeys". IMO, there should be no division, we should present a unified transformation system that lets people easily flow between the different methods available, depending on which particular method is best suited to the individual task at hand (ie. speed? convenience? precision? predictability?). I think changing the meaning of the G/R/S hotkeys depending on whether the manipulators are showing would create another 'mode' and segregate these tools even further, when we should be bringing them in closer, making it more flexible.

Posted: Fri Apr 08, 2005 10:40 am
by joeri
I personaly have no problem with the ctrl as widget-mode flipping.

But,... Why not use the TAB ? Is going in and out of edit mode more important then having an modifier?
If the ctrl is used as grid snapper then it does not seem logical to use ctrl for changing the widgets.

Posted: Fri Apr 08, 2005 11:10 am
by -efbie-
I feel the same way when i use blender :)

well maybe you are right about the center dot. And it is also true that it is not the best way since we can't change easily the 'space' when using regular constraints.
When i was thinking about restoring the GRS hotkeys to change the manipulator type i was in the perspective that the user would use either the manipulators or the regular constraints, not both at the same time, but now i see that it is obviously not the case.

using Ctrl to switch is IMHO a thing to be changed,

What i find also disturbing is that the manipulator has quite different hotkeys than the regular mode. It doesn't seems consistant, and that's why i like in blender, consistancy. Now that i "know" the general rules of blender even if i don't know a feature i know that i wouldn't be lost if i try it, I will quickly find my way. This isn't the case in Max where every menu is different.

So here is my advice.

for both widgets and regular mode :
* Ctrl MMB - cycle the axis mode (global, local, selection)

With widgets
* MMB cycles the widget type.
* remove the center dot, and also remove the unused arrow head in 2DView since it also blocks the view.

I also have an extra idea that could be useful.

with widgets, Ctrl MMB changes the axis mode (global, local, selection)
but this shortcut could be mouse location aware :
if the mouse is over the void or an unselected object, it goes directly to global axis, then clicking again would cycle.

if the mouse is over an unselected part of the object, or a selected object, it goes directly to the local axis of the selected object where the mouse is pointing (not necessary the active object), then it would cycle.

if the mouse is over a selected part of the object in edit mode, it goes directly to selection axis, then it would cycle.

Obviously if the widget is already in the targeted mode, it would imediately cycle.

the advantages that i see is :
- changes modes faster and in a more controled way.
- still works as usual if the user don't know the feature.
disadventages : too complicated ?

Posted: Fri Apr 08, 2005 4:31 pm
by William
I'll throw in my suggestions...


I think the hotkey for turning widgets on/off should simply be the T key.
This is quite an accepted standard as a hotkey for transforming stuff. Photoshop uses Ctrl-T, although apps like Modo just stick to T.
Remember: Switching manipulators on and off is a very basic thing - people will use this generally for transforming. Move, Rotate, Scale. This should not be hidden away behind some obscure triple-key hard-to-reach shortcut.

Changing between manipulators:

While in widget mode, it should be as fast and easy as possible to change between movement, rotation and scaling. Therefore, I'd suggest to use, very simply, G, S and R - the same keys the are used outside of widget mode.
Now, the argument against this is that it blocks the old-style transformation, but by having an obscure way to switc manipulators, the useability of the manipulators themselves are blocked, hidden away, making them fairly pointless. The idea is, mind you, to be able to perform operations easier and faster.

Orientation modes (Global/Local/Normal/View)

i don't hope Matt minds that I reuse one of his images:


This shows a perfect example of how the centre ball can obscure your work. Just as Matt says, not only can you not see the connected vertices, but you can't select them either, because there is a ball in the way.

The ball should be removed. However, the ball is used for two things:
* CLICK: Switching orientation (global/local/normal)
* DRAG: transforming along the view plane (and for rotation: trackball)

These functions can be incorporated much more cleverly than in that ball. Here's how:

Ill address the DRAG functionality first. Quite simply, the same functionality could be incorporated by dragging anywhere in the 3D window. Although, for rotate, the trackball rotation could be enabled by a dragging the larger ring, which is now used for view-plane rotation (we'll come to this later)
On to the CLICK functionality - changing the orientation mode. Currently, the way this happens has a number of flaws. Basically, you cannot see what mode you're in, and it only works for the widgets, so it's not a global setting that could be set for all kinds of transformation.

The solution could be a dropdown menu next to the Pivot menu. This would also make the orientation modes far more apparent.


As you can see, 'View' is also an option. This would make the widgets appear perpendicular to the view, so the one could move something in the view x or y. Also, this can free the rotation 'ring' for other stuff (as described above). The Normal mode would only appear in Edit mode, as this is the only time you get access to face normals anyway.

Now, the current orientation modes only apply to widgets. The dropdown menu would broaden the useablity: When constraining movements using the classic G/R/S method, the only way to translate anything locally, is using the dated G key -> X/Y/Z method with double tapping (ouch!). Plus, outside widget mode, constraining along normals is not even possible.

The menu would allow a nice global, consistent way of changing orientation modes. And on top of that, with a menu, you can always see what orientation mode you are in.

So to sum up, the advantages of this system are:
* easy hotkey for turning manipulators on/off
* easy hotkeys for changing manipulator types
* global, non-obscuring way to change orientation mode (global/local/normal/view)

Posted: Fri Apr 08, 2005 7:09 pm
by gendou
I agree with broken on the point of the widgets and classic transform being able to work together (his G key + rotate widget is a nice example) and I also agree with William on needing a system-wide transform orientation switch. His Orientation menu (w/ View, Normal, Local, Global) options is nice. The classic transform method doesn't have a clear way to get into these modes and I've found, on occassion, that the local constraint doesn't work for moving.

Using another app example, Maya has a little square outline at the pivot of the current selection. When you click it (I can't remember the exact mouse or key press) you can switch to a planar constraint which is illustrated by the square becoming aligned with the plane of constraint. Maya also has a nice feature for constraining to an axis(es) while not needing to keep you mouse on the widget. You MMB click on the axis you want to constrain to, then click+drag anywhere in the view to transform. Works the same with the rotate and scale modes. XSI just implemented widgets in version 4. Previously, you would press T to enter transform mode (much like blender) then hold down the X, Y, or Z keys to constrain to an axis. For global, local, planar, normal, view and other orientations, XSI has a popup menu, much like William's example.

In my opinion, the two apps that have the most intuitive transform systems are Maya and XSI. Maya still uses modes for mv, rot, scl as does XSI, but once you're in the modes, the methods for controlling the transforms is easy.

Here's a good tutorial on the Maya UI, it covers the transform methods about half-way down. ... Page1.html

Here's a Maya to XSI quickstart tut by Ed Harriss ... kstart.htm

Here's a good quickstart tutorial for XSI straight from Softimage (warning! pdf download) ... _alley.pdf

Maybe comparing some of the transform features of these two apps while maintaining the classic blender transform method could bring us (blender users) the overall best system. The system in blender has needed a little improvement, and not just adding widgets. It would be nice to expand the classic mode to be more functional with added transform orientations and constraints. I also agree with broken on the way you can manipulate an object from anywhere on the screen. However, I have noticed when using the new widgets, especially Scale, when performing a uniform scale (having to click on the center ball) there's a problem. Currently, to scale down, you move the mouse toward the object's pivot point. Well, when using the widget and clicking the center ball, you're already on the center, so instead, you (I) get flipping or scaling up. This is one example of things that need more planning for the new transform system.

I'm not complaining at all about the work that's been done so far. Everyone developing this system is making a profound difference in the way blender is viewed by non-users and making an easier path for those just starting out. Thanks for your hard work and dedication.

Posted: Fri Apr 08, 2005 9:32 pm
by SamAdam
i definitely think the center ball is bad, if I want to move it, i can press G.

I think that the best thing to change the manipulators would be maybe MMB scroll, each click on the wheel changes it.

and then have a display like to show what is current, up, and down:

Code: Select all

 /R \
|   |
| S |
|   |
 \G /

Posted: Fri Apr 08, 2005 11:01 pm
by gendou
SamAdam, the MMB scroll is a great idea, quick and always under a finger. The only problem I could see with this, of course, is systems with 2 button mice, one button mice and systems that don't recognize the scrollwheel. My debian system doesn't see the scroll wheel on the PS/2 mouse and my boss's G4 Mac doesn't see the scrollwheel on his 3 button USB logitech mouse, however, my Mac sees my Elecom mouse's 3 buttons and the scrollwheel.

How about a Shift+MMB popup menu, like the Vertex/Point/Face menu? That's sort of the same thing.

Posted: Sat Apr 09, 2005 9:23 am
by matt_e
gendou wrote:Currently, to scale down, you move the mouse toward the object's pivot point. Well, when using the widget and clicking the center ball, you're already on the center, so instead, you (I) get flipping or scaling up. This is one example of things that need more planning for the new transform system.
Excellent point! Another reason why an alternative would be a good idea. But, what, though. Hmm, that's the tricky part :)

Posted: Sat Apr 09, 2005 12:06 pm
by William
For the manipulators, it seems that moving the mouse DOWN scales down. However, when you move it far enough it surpasses zero and starts flipping.
It'd be nice to have a good consistent way of increasing/decreasing values using the mouse. Is it just me or is it getting slightly messy?

Posted: Sat Apr 09, 2005 6:17 pm
by Rickylev@r
Uh... I'm kinda new here :oops: (I'm new to blender too!!) but I've been following blender's development for a while now.

With this whole widget thing why not use MMB click to change the widgit or go back to the normal G, R and S (which is quite fast) Just my thoughts..