# Wishlist

## Knife and Extrude with Vertex Weights

When knifing edges, the new vertices should properly interpolate their membership and weights. Currently, the new vertex is in no group, so it won't deform at all.

Same goes for Extrude, but it's simpler: just copy the existing membership and weights for each new vertex.

## Physics Bone Constraint

A bone type which lets the tip be pushed around by prevailing forces. This technique was used heavily in almost all of the characters in Final Fantasy X and Final Fantasy X-2. Long thin dangly objects become super-easy to rig in an armature without lots of extraneous Empty objects. Ponytails, earrings, scoop sleeves, skirts, belts, robes, ribbons, chains and other objects just become Physics Bones, making them b-bone is optional.

Issue: most physics forces are 'in the moment.' If inertia is not modeled, then inertia force is not 'in the moment,' and would have to be computed historically.

## Slow Bone Constraints

Compute the constraint forces historically from a few frames ago, and apply them now.

## Regional Materials

(a.k.a. material booleans)

A manifold mesh object with a given material should be flagged as a "region" of space. Any other object within that "region" of space should get the region's material in addition to the object's own materials.

For example, take a complicated object like a paintbrush, dip it into a paint bucket and pull it back out. The region is a simple geometry such as a box, and the region's material represents the paint that sticks to the brush. If the boxy region overlaps part of the bristles and part of the handle, then those areas will look like paint stuck to them.

Also useful for decals which span multiple objects, and replacing/augmenting materials temporarily.

## Volumetric Raymarching

Given a function f(tx,ty,tz) or an affine set of scalars[tx][ty][tz], march rays through the box and compute material properties throughout the space.

timmeh provided this draft example, which uses a voronoi marble texture for the f(tx,ty,tz):

## Material-Controlled Dupliverts

Orientation, scaling, and positioning of duplivert entities should be controlled by the materials on the duplivert parent. A forest of trees can have many unique trees if each copy is altered by a painted or procedural texture on the hidden ground duplivert master object.

# Developments

## DupliMats

See DupliMats for my recent proposal in its new page location. As it turns out, Ton's new "noodle" node-driven materials system will probably far exceed the DupliMats concept.

In the future I hope to help bring that noodle power to scene design (positioning objects and dupliverts) as well as materials design.

## Transmissivity

See BlenderDev/Transmissivity for my patch to implement material transmissivity, and to correct the raytracer's behavior with total internal reflections.

COMMITTED as of April 2005 for upcoming 2.42 release.

## Low-Cost Subsurface Scattering

I am working out details for an SSS approach which will not be as slow as AO but give flexible and reasonable results.

## Smart Keystrokes

The idea here is to make the existing keyboard commands smarter by trying to accomplish what the user intends. It's important to note that it doesn't change the meaning of the command, just that the command is a bit more context-sensitive.

An existing command which is already context sensitive is the AKEY (Select All / Select None) command. If the user hits AKEY, the code actually has to decide which action to take, depending on whether any elements are already selected. Users are very comfortable with the notion that sometimes it takes an AKEY to select all of their elements, and sometimes it takes an AKEY, AKEY sequence, because some element was selected out of sight. So in this regard, AKEY, AKEY is already an idiom for context-sensitive keyboard commands.

### Edit Mode: Deselect All While Boxing: BKEY AKEY

It seems common to hit BKEY to start a box select, but realize there's already something selected which you don't want included. To deal with that mistake, you have to hit Escape to quit boxing, AKEY to unselect, BKEY again to start over.

Proposal: Let the AKEY and AKEY AKEY toggles work while BKEY is active. Saves a couple keystrokes and doesn't make the user feel stupid when they make a mistake.

### Edit Mode: Merge Vertices: Alt+MKEY

When you select two or more vertices and hit Alt+MKEY, it will pop up a menu, then pull the two vertices together, discarding any and all edges or faces between them, and doing other bookkeeping to reduce would-be doubles faces, edges or vertices.

However, there's no easy "Merge Edges" option, where two edges can be equalized in length and orientation and merged. To do so, you have to select one appropriate endpoint of each edge, merge those (with the required popup and results messages), and repeat the process for the other end of the two edges.

Proposal: Let Alt+MKEY merge edges if exactly three or four vertices are selected, comprising exactly two edges. This should work in both Edge or Vertex selection modes identically. To assign which end matches which, just merge whichever way would take less translation to find the new endpoints. This should be suitable to avoid making bowtie quads elsewhere. The new single edge is just the edge halfway between the two original edges. Once the two edges are merged, leave the edge and its two endpoint vertices selected.

If the user really did select four vertices and wanted just one vertex as the result, the user can just press Alt+MKEY again. Since the first keystroke left only two vertices behind, repeating the command will then yield the identical behavior as the original version. With this, in these few cases, the first Alt+MKEY doesn't do what the user wants, but a second Alt+MKEY improves the "power" of the merge successively and intuitively.

(Also, the trailing results popup needs an extra click or mouse-swipe to dismiss. I think results messages could be handled differently.)

### Edit Mode: Make Face: FKEY FKEY

This one may require a diagram.

The gist of the idea here is to allow FKEY to make a new face, and if it results in a triangle, then in certain situations, a second FKEY would convert that triangle into a quad by actually creating a fourth vertex. This is handy when building and modifying organic meshes, one row of quads at a time, where there isn't always four vertices to select ahead of time.

More coming soon.

### Edit Mode: Split Quad to Tri: Ctrl+TKEY Ctrl+TKEY

Ctrl+TKEY splits a quad into triangles. You have to guess which way it will be split, to the user it's a random choice of two possibilities. If you don't like it, undo and hit Ctrl+Shift+T. In either case, both tris are selected when you're done.

Proposal: If Ctrl+T sees that two tris are selected, then it makes sense to just put the quad back together and split it the other way. Whenever you want two tris, either Ctrl+TKEY or Ctrl+TKEY Ctrl+TKEY would do what you want. No undo. Free up the Ctrl+Shift+TKEY for something else.

It was pointed out that the command 'Rotate Edge CW' or 'Rotate Edge CCW' does about the same thing. My reply to this notion is that the Ctrl+EKEY, 2KEY is not particularly a graceful sequence to do, especially for several quads that need breaking. Offering a doubled-keystroke doesn't burn up any new key combinations, and can work more fluidly for a common case.