I am working on a new addon, it has a lot to do with precision modeling and custom transformations. See below for the description and mockups.
In any mesh model, there are relationships between primitive parts of the mesh (verts, edges and faces).
- A particular feature might be repeated radially, at a distance, around an imaginary axis
- A feature might begin one third of the way between two other features (a conceptually simple location, but tedious to actually determine and input for practical usage)
- Certain features might repeat at specific/precise distances from one another
- Two or more sets of faces might be coplanar and not aligned to any major grid axis
- There may be a precise regularity to the position of certain edges (or even whole features) that is difficult to achieve with existing tools. These could be angular or distance relationships, for instance, and the relationships could be linear, geometric, logarithmic, etc.
During the modeling process (edge modeling is the target), it is sometimes difficult to construct desired geometry (especially precise geometry) for a given area, because it is difficult to directly access and exploit the relationships between mesh elements in a practical/precise way (to get a resulting unique transformation).
We are left with a series of workarounds and intermediate transformations that allow us to get the results we actually want, and certain things really aren’t practically possible (unless you want to get vert coords and do lots of tedious math).
The addon I am building will allow you to construct custom transformations from existing or imaginary geometry data that you can grab directly from your mesh. So, if you want to rotate a portion of your mesh around an imaginary axis, you can do that (just specify the line by grabbing two points, or an edge, or the cursor, or input the coords yourself). Or if there are two distant, disconnected flat features in your mesh, and you want to align them so the flat parts are coplanar, you can do that without interrupting the surrounding geometry (you just apply the transformation to the selected portion of the mesh…the transformation is based on the flat part you specified though).
Plans for how it will work:
Right now, I plan to let users create special “primitives” like “point,” “line,” “plane,” “transformation,” or “math/calculation.” The geometry primitives will allow you to grab coords in a variety of ways, as mentioned above (3d cursor, direct input, grab from geometry). A “math/calculation” primitive will allow you to get intermediate calculations (like the angular difference between two lines or the distance between two point primitives) or to input numbers or perform basic math operations like division. Transformation primitives will allow you to apply your transformation (it will generate a transformation matrix that you can multiply with other matrices). There will be a variety of built-in transformations, like “make lines collinear,” “make planes parallel planar,” and simpler transformations like translations, rotations, etc. You can apply your transformation to a portion of a mesh, an individual mesh elements, or to an entire mesh object (if you want to align objects in this way, for instance).
I am working on the data handling portion of the addon now, so here is my only mockup so far (it shows the main list of the user’s primitives, with one point selected):
Please let me know if you have any feedback on this concept so far.