Today, we are extremely excited to move a brand new feature from beta to release: new draggers! The new Move, Scale, and Rotate tools are meant to be familiar to Studio users but also to make building a lot more effortless and efficient. They will be rolling out to all Studio users over the next few weeks. Oh, and the icing on the cake? They’re based on a reusable Lua framework available to all of you should you want to make your own draggers.
We had two goals in mind as we embarked on the epic adventure to create the new draggers in Studio.
The design of the new Move, Scale, and Rotate tools are informed by the following principles:
- Minimalism: Tools enhance user productivity and stay out of the way. They use the minimum UI needed to clearly communicate their functions and facilitate user interaction.
- Familiarity: Tools incorporate common design idioms that developers would expect, such as RGB axis colors, arrows for move, rings for rotate, and so on.
- Predictability: Tools should have predictable and consistent behavior so that they work how creators expect.
The new Move, Scale, and Rotate tools are built on top of a framework that can be leveraged by our developer community. Developers can create their own new draggers and manipulators or copy the core draggers and make minor adjustments to their behavior so that they work better for some particular task on one of their projects.
We made a few changes to the draggers to make building with native tools more efficient. The primary improvements to the draggers are in the behavior of the freeform dragging invoked when you click on a part and drag & drop it to a new location in the Workspace with any of the core draggers (or any manipulators you build using the reusable framework in the future!)
One of the issues with the old dragging behavior was unpredictability. It was sometimes hard to know where the dragged parts would end up when you dragged them in a particular way and, conversely, often difficult to know how you should drag them to get them into the desired position. The new freeform dragging behavior is to take the bounding box of the dragged objects, and place it onto the surface which the mouse is hovering over. Furthermore, the surface the mouse is hovering over is the only thing the new dragger takes into account: The dragged objects are free to intersect with other objects in the Workspace. This lets you place the dragged objects at the desired location regardless of what else happens to be around them, without needing to worry about some other object being slightly in the way and bumping the dragged parts out of the desired position.
Model Orientation Option
Naturally, the above point means that models and selections of multiple parts now snap and align to the hovered surface the same way a single part does while being dragged (see the grass model being aligned to the slope above). Choose whether or not you want objects to align to surfaces while dragging by right-clicking on your selection and toggling Align Dragged Objects.
Surface Direction Agnostic Operation
Have you ever tried to position objects on walls or ceilings of a model you’re making? You may have found that that doesn’t work very well with the old draggers. This problem is solved with the new draggers, they work exactly the same regardless of what direction the surface you’re trying to work on is pointing.
Predictable Tilt / Rotate
Using the tilt / rotate keys (T / R) while dragging now has predictable behavior as well. Rotate will always rotate around the surface onto which you’re dragging the part:
Tilt will always tilt the part around the horizontal axis towards the camera
Models and selections of multiple parts are also tilted and rotated around the point you picked them up by, rather than around their centers.
Improved Snapping Control
Freeform dragging now gives you more control over what features snap to what other features when grid snapping is turned on, allowing you to work with objects without grid-snapped sizes much more easily. The behavior is to take the vertex on the selection closest to where you clicked, and snap that vertex to the closest vertex of the part you’re dragging onto. The result of this is that you can pick up an object by the feature you want to snap, drag it onto the feature you want to snap it to, and those features will naturally become aligned—regardless of how off-grid the sizing and positioning of the objects happens to be.
Have you ever tried to build a model floating in empty space? This did not work well with the old draggers, as when dragging onto empty space would often make the objects jump into the distance which was not useful behavior. The new draggers use a virtual surface in this case. When dragging a part onto empty space, the new draggers will treat it as though the last surface you were dragging onto extends into the empty space.
Dragging Into a Gap
Not a feature on its own, but a long standing issue with the old draggers was that it was difficult or impossible to drag a part back into a gap in a model if you accidentally dragged it out. With the new dragging behavior this will not be an issue.
We hope that this new dragger solves some of the key issues that many of you have pointed out and makes building in Studio a lot easier!