Just recently I was again in the need for a displacement deformer, but since Maya lacks such a basic deformer in it’s toolset I planned to use the great DisplaceD deformer, available on creativeCrash. Unfortunately the plugin doesn’t support Maya 2013, even though we are already halfway to Maya 2014.
Since I needed a solution I took the chance in looking into the Maya SDK and write a deformer myself. Being somewhat familiar with Python it seemed like a good idea to write a Python plugin, especially because it wouldn’t need a recompile for future versions of Maya. But it turned out that the performance was not as expected and so I took the hard way and rewrote the plugin in c++.
It was not easy but eventually it worked out fine. The first version was nothing big and lacked some features but eventually it has grown into some nice tool. Having the ability to see the displacement in the viewport and not just at rendertime is a great helper at times. Especially when working with environments.
The deformation can be based either on a 2d texture which uses the uv map of the mesh object or a 3d texture node. Additional attributes allow for setting the scale of the displacement and the offset. The dropoff function can be used to limit the effect of the displacement based on a locator position that gets it’s shape from a curve ramp in the attribute editor.
The plugin is comparable to DisplaceD, but it seems that DisplaceD isn’t maintained anymore or at least it hasn’t been compiled for Maya 2013.
If your are looking for a simple displacement deformer, that helps you apply your DEM height map data to your geometry, iDisplace might be the right choice for you. It’s also great to interactively model some fractal shapes based on a 3d texture.
Update for Maya 2015: Since Maya 2015 now has it’s own texture deformer iDisplace almost becomes obsolete. However, iDisplace still features dropoff points and curves, which makes it the more versatile choice if you need better control. On the other hand, the default Maya texture deformer supports vector displacement which is a huge advantage. So, depending on your work you might favor one over the other. But that’s up to you…
iDisplace will be maintained for future versions of Maya as soon as they are available.
Supported Maya Versions (OSX, Windows x64 and Linux x64): 2012, 2013, 2013.5, 2014, 2015
If you have used iDisplace before it’s necessary to completely remove the old version in order to make iDisplace work as expected. The old version came with three files, the plugin and two scripts. Simply delete the old files and install the new version.
If you load the new version of the plugin and the old files are still visible to Maya you will receive a warning to remove those files before successfully loading the plugin.
Also note, that the behavior of the plugin can lead to different results compared to the old version. If you use the current version of the plugin with an old scene that was built upon the previous version the displacement result can differ. This is due to some bugfixing regarding the displacement strength and the offset value.
Just copy the plugin to your users plug-ins folder
After loading the plugin from the Window -> Setting/Preferences -> Plug-in Manager, the plugin is available through the Animation Menu -> Create Deformers -> iDisplace and Animation Menu -> Edit Deformers -> iDisplace.
Select your mesh object to deform and go to Animation Menu -> Create Deformers -> iDeform -> iDisplace to create the deformer.
Only mesh objects are supported up to this point.
- Texture: Links your file texture or procedural texture to the deformer.
- Use UV: Uses the UVs of the object when working with 2d texture nodes.
- Local: Useful when working with 3d texture nodes. Only the placement of the 3d texture is calculated and the position of the object is ignored.
- Scale: Define the amount of displacement applied to the geometry.
- Offset: Moves the affected vertices along their normals to produce an offset effect.
- Type: Defines the direction of the displacement. ‘Normal’ uses the vertex normals for the direction, ‘Placement’ uses the first placement node found in the connected shading graph to modify the ‘Direction’ vector, ‘User’ takes a connected matrix plugged into the directionMatrix attribute of the deformer to modify the ‘Direction’ vector.
- Use Colors (experimental): With this enabled the color of the texture is taken into account for modulating the normals and displacing the vertices. In the current version, there is no real use for this feature but implemented anyway.
- Use Dropoff: Enables the use of either dropoff locators or dropoff curves.
- Dropoff Type: Defines the type of dropoff, which can be ‘Point’ (dropoff locator) or ‘Curve’.
- Radius: The radius of influence when using the dropoff function.
- Dropoff Curve: Defines the amount of displacement originating from the dropoff object within the dropoff ‘Radius’.
- Curve Falloff: Defines the amount of displacement along the U value of the used curve when using dropoff curves or a locator chain.