Sign in to follow this  
danielgamedev

spline deformers are all the rage, with good reason

Recommended Posts

Hi guys, To all the pros out there, it seems that spline deformers have suddenly found their ground in 3d apps. Pixar developed their spline deformer and used it in the making of The Incredibles. Comet Digital just released their phenomenal muscle plugin for Maya and it is based on a spline deformer. Cinema4D has used spline deformers for a while now. From a beginner's point of view, I thought that if I could get the position, normal and tangent of an arbitrary point along the curve, I would be able to calculate the position of surface cv's relative to those values. But upon dissecting Comet Digital's spline deformer, I realized that there is more to the spline deformer. Comet Digital's implementation as I understand it up to now: 2 nulls (END NULLS) are parented under a parent and child joint respectively. Any number of nulls are aim constrained and position constrained between the 2 END NULLS forming a perfect line of control nulls as the child joint rotates. Under these control nulls are CHILD NULLS that can be translated and rotated. The worldMatrix of each CHILD NULL is fed into a node which uses these matrices to create and control the points of a b-spline. By rotating a CHILD NULL in any axis, you are rotating the spline handles. Here is the tricky part. In my implementation, a row of surface cvs would be manipulated by the values of a single point along the curve ( the closest point to the row in this case ). In Comet Digital's implementation, the relationship between the surface and the spline is not as stringent or at least it doesn't seem to be. I could rotate A CHILD NULL 90 degrees in x, the spline handles will rotate accordingly, the spline will bend in a zig zag BUT the surace cvs affected most by this region of the spline deformer will only rotate about 60 degrees in x. My questions are: How is the spline affecting all the points on the deformed surface??? I'm wondering if anyone knows a little bit more about this type of deformer and or where I could find information. Thanks in advance, daniel

Share this post


Link to post
Share on other sites
Quote:
Original post by y2kiah
I think what you mean to say is node, not NULL... but then I would call them CPs (control points)


no... I meant "NULL". He uses the worldMatrix of a null to define a b-spline. The null consists of a shape node and a transform node. The shape parented under the transform.

d

Share this post


Link to post
Share on other sites
Quote:
Original post by danielgamedev
How is the spline affecting all the points on the deformed surface???


I assume that the original positions are weighted to the spline by their position projected to the original spline's parameter axis. The relations of the positions against the spline are the same no matter what the spline looks like, as long as the spline has defined axis systems at each node (that is, defined xyz orientation).

The most intuitive way (in my opinion) to establish an axis system for a spline node is that x and y define the cross-section space, and z runs tangent to the spline's positive direction. The x and y direction are arbitrary to begin with, but should stay consistent to some logic anyway.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this