## Transforms at all levels

In past couple of days I uploaded a set of features that allows manipulating objects at different granularities.

Let me put the design thoughts that went into it.

A 3D model is fundamentally a collection of vertices scattered in space along three dimensions. So in theory, all a designer needs to do is place the vertices at right places.

In practice however, a model consists of large number of vertices. So manipulating each of them is almost not possible. So the natural solution is to create abstractions. We pair two vertices and visualize them as a single edge, group more than three vertices and visualize it as a face (that’s the 3DTin teminology for a polygonal surface of a geometry). A big model can then be created by manipulating these higher abstractions. To make it more easier we create even higher abstractions. So we create a library of most frequently used 2D and 3D shapes (circle, cube, cylinder, sphere, etc.). By putting these higher abstractions together, the designer can now compose any complex model.

The task of moving each and every vertex can now be done by applying some higher level transforms to these abstractions. The ones most frequently used are translation, rotation and scaling. By applying a series of these basic transforms on library of abstractions one can create a wide variety of models.

So far you must have seen that when you click on a geometry in object mode (the mode in which the geometry appears solid, and not like a skeleton), a context panel shows up around it. This panel gives you options to translate/scale/rotate the entire geometry. With the recent changes, you will be able to access this context panel in wireframe mode too. In this mode you can apply these transforms on individual faces, edges or vertices. You could already manipulate them, but those manipulations were only triggered by mouse. That doesn’t give any precise results. With the context panel you have access to the step controls that work independently along each dimesion. So for instance, now you can move a face along the z-axis in precisely 0.2 units OR you can shrink it towards it centroid by 50% OR you can rotate an edge along its centroid axis by 10 degrees.

With these features the designer can manipulate the model at various granularities – entire geometry, faces, edges and even individual vertices.

Thoughts welcome!