Which is faster, the classic rivet or djx's rivet?


#1

I’m about to create a character with a joint facial rig for the first time and I decided that I will want to use the rivet MEL technique.

In my travels, I found a post on djx’s blog where he wrote his own version of the rivet MEL.

To refresh everyone’s memories, the classic rivet script uses two edges of a mesh to create two curves, which then are lofted together, the resulting NURB is read with a pointOnSurfaceInfo and the parameter UV coords from said node define the position of a locator. He uses the pointOnSurfaceInfo node, along with a modified aim constraint, to achieve proper orientation for the locator so that it follows the orientation of the mesh face.

In contrast, djx’s rivet uses a Maya follicle node to constrain two objects together. One object contains the follicle and the other is driven by said follicle.

I don’t need the advantages of djx’s rivet over the classic rivet so it really comes down to speed. Which of these two systems, if used hundreds of times, would evaluate faster? Would either of them make a noticeable difference?


#2

The follicle method is much cleaner in your scene (especially if you are talking about hundreds). Also the setup time is instant (well almost) instead of doing each one by one. You can select all the things you want to attach and then select the target surface and run the script and a few seconds later you’re done.

The only downside (and usually this is trivial) is that you do need good uv’s that are non-overlapping. Since you would usually have good uv’s anyway, the only extra consideration is making them non-overlapping, and even if you need the shells to overlay for texturing reasons, you can simply offset each shell into the next uv quadrant and djRivet will be happy. Or you can take advantage of djRivet’s support for multi uv sets and do it that way.

Maybe I’m biased though.

David


#3

Wow, David himself! I really appreciate your blog in addition to your posts, each visit has always been rewarding to read. I’m still a MR man so I’m still a bit sad about your Vray switch. That said, as a student independently learning 3D in high school, your posts have been extremely helpful, thank you.

I’ve only ever considered your djRivet on character meshes so, of course, my UVs would be properly set (and overlapping has never been a consideration because I offset by default). If you believe it would evaluate faster then I believe you, biased as you may possibly be :P. Thank you for the explanation, I’ll be sure to post what I do with my project on CGSociety once I’ve completed what I plan to use it for. (But that won’t be for a while).


#4

A couple of other small things to note: I believe the follicle is only for Maya unlimited. If you think you may need to run the scene in Maya complete, I don’t think it will work. (I can’t confirm that at the moment, but it was the case a few years back.)

On the flip side, the follicle method is MUCH faster. I’ve done tests with a couple hundred follicles vs rivets, and the rivet won hands down. The follicle is also much more stable on large scale scenes. If you take a rivet far from the origin, it will start to jitter. (Very large distances.)

Short version: If you aren’t worried about licensing, use David’s script by all means.


#5

Is no one using the “surface attach” tool found in the bonus rigging tools under the Maya Muscle menu? Its a locator that attaches to the uv coords of a nurbs surface, very similar to the original rivet workflow. Its always been really fast for me …


#6

Anyone tried the Point on Poly constraint in Maya 2011? I suppose if backwards compatibility is an issue then it’s obviously not an option, but I’m curious how it compares to djRivet.


#7

I’m using a polygon mesh (so no surface attach :/) and I’m using a Maya 2010 educational so I can use follicles. I’ve used it for ribbon rigs, hair, and dynamic joint rigs a lot. Also, in response to jipe, I don’t have 2011 so I couldn’t tell you but, from what I’ve read in forums, it’s still not as refined as the original rivet or the djRivet method.


#8

does the follicle metod works if you smooth the geometry? i mean with classic rivet if you create the rivet on a low poly then smooth your rivet was moving away


#9

Yes, follicles remain in position when geo is smoothed.

David


#10

surface attach works with polys too


#11

The surface attach has been working pretty good here too. I doubt many people are aware of it though, kinda oddly placed for being such a useful thing.


#12

“muscle / bonusRigging / surfaceAttach”

is for me also a great alternative for follicles .

the maya-Muscle method is a direct adaption of the classical rivt-concept , put together in one single node . which means you dont need a UV_layout and can simply attach a group between 2 edges ) - so maybe this is the best method , for meshes without a UVlayout.

up to maya 2010 there was no follicles in the complete-maya-version ( just unlimited feature ) ,so i never used follicles before maya2010, but since my maya2010 now has all the unlimited features, i like to use follicles a lot . but right now , i more and more use surfaceAttach-Nodes ( be sure to “turn on the mayaMuscle.mll in the plugin-manager”! )


#13

Interesting stuff! I’ve yet to touch Maya’s built-in muscle system and have never heard of surface attatch. It looks like I need to crack open 2011 and see whats new


#14

Maya 2011 also has a new constraint (at least I think its new, I hadn’t seen it before) that constrains your object to a vert on a poly. Its named “Point on Poly” constraint. Essentially it snaps an object to a selected poly vert, and voila. On paper it sounds great, but I’m not sure how much control you have over the orientation of the constrained object once snapped to the vert (which is why I still like using the surface attach tool with a nurbs surface).


#15

Maya 2011 also has a new constraint

i guess it will take me at least until maya 2013 or 2014 until i will effectively use this in rigs … else people ( now ) using maya 2009 or 2010 will have problems , opening my files .

btw. when you set the UV-information of of the surfaceAttach to 0/0 or 1/0 or 1/1 , it will also attach to a vertex ( although it will not use the vertex-normal for rotation , so not exactly the same ) . by default UV is set to 0.5/0.5 ( in the middle of a face )


#16

Just wanted to give a massive thanks djx!!!

This script has just saved me literally hours in on click :slight_smile:

You are the man.

Can’t post what I’ve used it for yet (NDA!) but will once it’s out there.

L


#17

This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.