Maya plug-ins
I’ve created a number of Maya plug-ins over the years: some of them for specific projects, some as a personal research (that were used for specific projects later, nonetheless).
- Jfw: “Joss Framework”. Very shy name for my own set of C++ libraries I’m using in basically each of plug-ins below. Mesh library is one of the parts, allowing developer to “simply add meshes A and B together” (like in 3rd grade), without thinking on underlying structures. It’s a work in progress and evolves over time with tech (and me).
- Pcw / Pcr
PolyCacheWrite / Read.
This set of plug-ins was started almost 2 decades ago, before Alembic, USD and all that. That’s a polygonal cache for meshes with changing topology. Reader is also able to offset/retime cache files with 2 simple controls, and handles changing topology by a simple inter-frame linear interpolation.
Orginal idea was a to have something like “MPEG for meshes” and it was achieved to some extent. Special version of this plug-in was licensed to a German film production company. It’s using earlier version of Mesh framework inside. - ClosestParticle / closestParticleAtDirection / closestPointOnSurface
Low-level helpers for crowd simulation scripting. MEL is “ok” when you have maybe 20-50 agents, but since particle neighbor search time grows exponentially with particle count, it can become very slow and unsuitable to design iterations very quickly (with 100 agents or so). And if we’re talking about thousands – that’s C/C++ only.
So these 3 little plug-ins are taking all the computational complexity off the main MEL script and particle expressions and Maya scene starting play almost in realtime instead of 40s per frame. - ImageBlend / imageDeform
Couple of pretty old plug-ins I’ve done for simple mesh image deformation for movie project (typical “face out of wall effect”). - JObj
C++ STL and pure C versions of Wavefront OBJ parser. Native Maya OBJ importers are pretty unstable, so I needed something better, faster and it can load OBJ sequences without any problems for further re-caching. - NoiseDeformer
Deformers are fun and very easy to implement. And with available open libraries you can make miracles (for example deform meshes with a curl noise, or even simulate them). This deformer is just a testbed platform, utilizing noise library to generate vectors. Still you can achieve pretty funny blobby effect layering 2 or 3 of them. - CurveDeformer
Proper version of a real curve deformer instead of that lattice construction Maya has for 20 years. This one is just deforms stuff along the curve with pre/post continuity (objects are not just “end up” where curve ends, trajectory is extrapolated), all axes twists and scales. Matrix-based. At some point I will probably make a multi-threaded or GPU version to flex a bit. - RippleDeformer
Maya deformers set is pretty limited originally and deformers by themselves are pretty, let’s say, “simplistic”. From the other side, Maya Deformers API is pretty straightforward and fun to use. This one is a simple “wave” deformer with extended practical controls:
wave decays at start/end
number of waves to fit inside of a region
arbitrary axis of deformation - Greeble
I love the idea of generative, “self-evolving” geometry in general.
Greeble is a traditional attempt to “generate complex looking structures en masse”: It scatter a few procedural pre-programmed assets over the polygonal surface. “Assets” are a C++ mesh generators utilizing custom mesh library as foundation. - MeshProxy
is a very simple plug-in doing one important thing: it creates a world-space “proxy” of given meshes. Sometimes it’s a life-saver when you urgently need to convert non-convertable stuff. - Dissolve / Transition
“3D mesh transition effect”. Dissolves the mesh polygon by polygon in an arbitrary direction by a gradient of given width. Just a funny 3D effect. Utilizing my mesh library as a foundation for that kind of mesh manipulations. - Trailer / pTrails / Wireframer
Very simple idea of making trails out of everything: points, particles, CV’s, and different implementation of it:
Trailer and pTrails are creating polygonal trails after mesh points and particle systems.
Wireframer creates polygonal “pipes” along given mesh edges. Mesh pipe generator is pretty flexible and can create funny noises along the edges. Handy thing for quick motion graphics sketches.
All of the above and some more you can see in the video below.
(Titles were generated using pTrails plug-in, everything rendered in Redshift)
Main development tools are: Win7/10, MSVS2008-2019.
Lately I’m switching my old projects to Cmake as well as rewriting and unifying some code for the new set of my Maya tools.