Tension Modifier


Tension Modifier

Tension is a modifier that compares the current deformation of a mesh with a reference pose, and generates relative compression and expansion data of the edges in the mesh. It dumps the data into either the vertex colour channel or standard mapping channel, where it can be used for display, selection (using volume select and a vertex color map) or at render-time (using a vertex color map, usually as a mask).

In Addition to Tension (Expansion and Compression) there is the option of using surface (edge based) convexity, either absolute or relative to the captured pose, to generate data.

Tension works with edges - testing edge lengths and concavity/convexity, and modifies vertex colours or the mapping channel of your choice.

NEW As of 1.11, it can also work with dPdu and dPdv (change in U and V, per face) as well, for the expansion and compression calculations. Slightly different, not necessarily better, and you will need at least basic mapping. ie a cylinder with default capping will not work as the cap mapping is not great. Add spherical mapping and it will then be fine (better mapping is recommended, but just as an example). Note that face selection is what is used in this mode to mask, not edge selections.

It works with the epoly data structure, so incoming trimeshes are converted to epoly (which is slower - feeding a poly mesh in will be faster, though it is not especially slow).

It uses Green for Expansion, Red for Compression, Green for Convexity, Red for Concavity.

In addition to working with the 99 mapping channels, it also can work with the Vertex Color channel: the advantage of this, and also where being a modifier is an advantage, is that the results can be seen interactively in the viewport as you work.

It can be used to produce data to drive different maps at render time based on stresses, but it is also ideal for surface evaluation: you can see if morph targets are unevenly stressing a surface, or if skinning at a joint is unevenly deforming the mesh, and interactively modify your model underneath the tension modifier and see the result in the viewport as you work. It can be used to generate data fed into a Volume Select modifier (via the mapping type), genrating a soft selection of verts, to do stuff like relax just the compressed areas, or push stretched areas.

I hope to have some quicktimes up of usage some time soon.

The Tension data can be baked out using Render To Texture (RTT), making it useful for even high res meshes where performance becomes chuggy.


Most of the UI stuff should be fairly self explanatory, but until I get time to put a help file together what you need to know is:

If you have compression and expansion set to the same mapping channel as the convexity stuff, what happens is that Red = Compression, Green = expansion, and Blue = convexity AND concavity, with the channel being the combined values, where 0-0.5 is one part and 0.5-1 is the other part.

What I recommend is using different channels for tension and convexity; most visually rewarding is using the vertex colour channel for the data you want to work with, and toggle the show vertex colours.

Individual channels determines whether each data channel is blurred separately, or if the values are blurred as one dataset: what this means is that you will not get overlapping colours if blurred together, which may or may not be desireable.

The mask stuff uses EDGE masks coming up the stack - so use a poly select to select edges below this modifier. (Note that the dPdu/dPdv stuff uses FACE masks. I could support either but since it works with face data, it is much easier just to support that...)

Since this plugin works with E.poly data, it is faster when working with incoming E.poly from the stack since it does not have to convert it.

If the vert count changes, the solution will be invalid. If the 'Lock Reference Data' is on, this will stop it doing anything until the vert count is once again what it was, if this checkbox is off it will automatically recapture the default pose at the current frame: you can manually recapture the pose by going to the frame you want and hitting the 'Recapture Pose' button.

The Compositing stuff is so you can use multiple tensions together in the stack and combine the results in interesting ways.

The 'Do Delta' shows which way the surface tension is changing - becoming more stretched or more compressed. It uses an external node, usually a pointcached version of the same mesh, but is labelled experimental as currently it is very slow (it puts the data into the blue channel, above .5 is moving towards tense, below moving towards compressed, and the value is how fast). Might be useful for some subtle effects, but overall probably not terribly.

The 'Use External Reference' allows you to use an external mesh to define the rest pose rather than capturing from the stack of the object itself.

Limitations - No support for Patches or Nurbs. Supported types are TriMeshes, (ie regular editable mesh stack), and PolyMeshes.

Demonstration Quicktime - 4.3 megs. Just a quick demo on my old ape scene.

Demonstration Quicktime - 6.3 megs. Showing interactively editing skin envelopes and seeing the vertex colours update.

Quicktime - 1 meg. Cloth Sim 1

Quicktime - 1 meg. Cloth Sim 2

Quicktime - 125K . Showing using volume select modifiers + vertex color maps, along with Tensionin the stack in a max viewport preview

Screenshot of a head model displaying the convexity data.

Same model showing the tension on the surface of the current morph pose.


Tension Modifier is not freeware (but it no longer has any licensing as of 1.1)

For licensees of RPManager and RPManagerLite, commercial or personal use is freely permitted. For everyone else there is a US$20 fee for commercial use per site. Personal/Academic use is permitted without payment.

There are no licenses, limited/demo versions or what-not - the version you download here is the full unlimited plugin- just this button here:

which will get you a Thanks! email and the knowledge you are both supporting a tool developer and legitimately using the plugin, and this link here:

Download Tension for 3dsmax6-8/9/2008/2009 - version 1.2
32/64 bits installation options are available for R9/2008/2009

Tension for 2010 is available as zipped plugins - copy the unzipped plugin to your plugins directory:

3dsmax2010 32 bit
3dsmax2010 64 bit

3dsmax2012 32 bit
3dsmax2012 64 bit

3dsmax2013/2014 64/32 bit



Version 1.11 - old build
Version 0.3 - old build
Version 0.13 - old build

Installation instructions
Run the Tension installer downloadable above, which puts it into your plugins directory and then start 3dsmax. It is a modifier, so will appear in the modifier stack.

For the 2010 version unzip and copy to your plugins directory.

Contact bugs@rpmanager.com with any bug info. Scene files demonstrating problems are much easier to troubleshoot.

Credits: Tension was written by Grant Adam.