Wednesday, September 22, 2010

MEL: Delete Targets From A Blendshape Node

Cleaning up a blendshape node in Maya can be a nightmare. It makes it really difficult to remove targets from the node and even when you do it leaves ghost indexes that can only be removed if you know what they are. The script below allows you to highlight the targets you want to keep in the Channel Box and remove all of the others. Clean and simple. It does this by building a new blendshape node with only your highlighted targets and reconnecting everything exactly the way it was originally. This includes ordering the input stack in the same order it found them.

Code Can Be Found Here: jgRebuildBlendshapeNode.mel

A smart man (or woman!) might wonder why Maya has such a difficult time simply deleting some blendshapes. A discussion for another day I suppose.

This script utilizes the jgReturnMeshDeformers procedure from yesterday's post. Read about it here.


  1. I tried this and I get the error "Highlight the targets you want to keep" but I have them selected in the blendhsape node in the channelbox.. so what gives?

  2. @Adam
    Do you have the actual blendshape node selected? If you select the mesh and then just open the bs node through the inputs it won't work. You have to have the actual BS node selected by grabbing it by name or through the hypergraph.

    Beyond that, this would be the first time someone's had trouble with it so I'm curious what's up. Let me know if it works.

  3. thanks! that was my problem.. however i'm still getting some issues and errors. It doesn't seem to like Tweak nodes going into the base mesh. It also seems to be complaining about a mesh that the model is actually blendshaping into. Yeah its a blendShape into a blendShape.

    Also I imagine there is no way to do this without breaking all my connections? :) I have controllers for each blendShape i'd love to not have to break ties to.

    Here are a couple of my errors at various stages...:

    // Error: geo_proxyModel is not a deformer.

    // Warning: blendShape1 and tweak18 are already in the specified order. //

    Thanks so much!

  4. This comment has been removed by the author.

  5. Also, when I get to the point where I get this error:

    // Error: geo_proxyModel is not a deformer.

    It has rebuilt my blendShape with only the shapes listed that I need but none of the shapes actually work... and it hasn't actually created the shapes...

    Where are the shapes supposed to go?

  6. here's another one i'm getting // Warning: blendShape1 and tweak18 are already in the specified order.

  7. Could it have something to do with me using painted weightmaps for the blendShapes?

  8. It does break all the connections but if there are no errors it completely reconnects everything when it's finished. The reason it has to do that is because it's actually creating a new blendshape node from scratch and applying all of your data to it, then deleting the old one.

    Because of the '**** is not a deformer' error though it's stopping you half way. I'm afraid I'm not sure why that's happening though...haven't encountered it before.

    Is there a way you can send me your scene and I could take a look?

  9. Hey, thanks for this script I found it very useful but it breaks the connection to the GEO when it rebuilds the node. Is there a way to maintain this connection because the shapes are no longer editable after running this script?


Scripting Topics

MEL (41) Maya (39) Scripting (32) Scripts (21) programming (14) Free Mel Scripts (8) MaxScript (7) Coding (6) Rigging (5) tutorial (5) 3ds Max (4) Python (4) Tricks (4) faceware (4) image metrics (4) Learn (3) Namespace (3) Namespacing (3) animation (3) facial (3) webinar (3) Code (2) GDC (2) Game Developers Conference (2) Multiple Namespaces (2) Print Selected Objects (2) Recursive (2) Removing Namespace (2) Return (2) Set Driven Keys (2) TOkenize (2) Tips (2) Toggle Background Color with MEL (2) animation tools (2) animators resource (2) deformers (2) learning (2) maya tools (2) mesh (2) modeling (2) nodes (2) procedure (2) script swell (2) transforms (2) Animschool (1) Attribute (1) Background Color (1) Beer (1) Blur (1) Character Setup (1) Check if an object exists (1) Class (1) Command Line (1) Constraints (1) Create SDK (1) Create a directory with mel (1) Data (1) Export (1) FilterString (1) Fix (1) Floating Slider Time (1) Functions (1) Get Maya Version MEL (1) Get Parent (1) Google (1) Holiday (1) How To Write To A Text File (1) Import (1) Incremental Save (1) Index (1) Joint Chain (1) Make Set Driven Keys (1) Maya Version (1) Modules (1) Objects (1) Orient Constraint (1) PYMEL (1) Parent (1) Parent Constraint (1) Point Constraint (1) Position (1) Print (1) Print Current Selection (1) Print Random Quotes (1) Print Selection (1) Print Vertices (1) Progress Bar (1) Progress Window (1) PyQT (1) Removing Spaces From Names (1) Scene File Name (1) Select Connections (1) Select Outgoing Nodes (1) Split Bones (1) Split Joints (1) St. Patrick's Day (1) String Array (1) System (1) Transfer UVs (1) Viewport (1) White Space (1) Windows Username (1) Zero Out Attributes (1) animButtonState (1) arrays (1) articles (1) auto key (1) better (1) blendshapes (1) break (1) confirm dialog (1) continue (1) convention (1) e3 (1) efficiency (1) error (1) eval (1) executable (1) fclose (1) fopen (1) fprint (1) games (1) improving (1) infinite loop (1) joints (1) listHistory (1) listRelatives (1) logic (1) loops (1) milestone (1) nodeType (1) objExists (1) recursion (1) rotates (1) rotations (1) schools (1) sculpting (1) setAttr (1) shout outs (1) source (1) source a script with a variable (1) speed (1) (1) translates (1) video (1) warning (1) world matrix (1) worldMatrix (1)
Script Swell - Blogged