Skin is back

Forum for users who have migrated or are migrating to Maya
User avatar
Mathaeus
Posts: 1708
Joined: 08 Jun 2009, 21:11
Location: Zagreb, Croatia

Skin is back

Post by Mathaeus » 17 Jul 2016, 23:56

Hello

thing on Vimeo is let's say workable result of learning Maya in last few months. After a number of trials of any alternative to skin in Maya (LT), like lattices, DQ skin, blend shapes and so, finally ended with just an ordinary linearly blended skin, plus of course a lot of deformers to drive the thing, around 150 for now. I think I deserve a small medal for making the skin in Maya LT :D , as it doesn't allow plugins like ng Skin Tools, has no even a component editor, built in paint skin was everything I had. Anyway, reached this state much faster than I expected.

Thing follows same concept as before, that is, once there is enough strong feature, just 'ride' only on that and nothing else. Here this is Maya Node Editor for everything, heavily (ab)used to replace out-of-the-box constraints (too much connections and options). Even IK chains and sort of 'half Soft IK" are created 'manually', by math nodes. Almost complete thing is let's say parametric, proportions are animatable, so, relative easy to fit to another model. There is no one driven key, on 'nothing else' side. Skin cluster is only one deformation operator.
Beside parts of Node Editor making me mad, and Maya at all - this app has a unseen talent to make a damage whenever it tries to help - performance of all that crap is amazing. For around 700 transform nodes, 150 deformers, around 2.5 K nodes at all, subdivided model, it's still running at 90 FPS, on home toy machine, 4 core I5 and GeForce 750 Gtx TI.

Generally I'm planning to share some details of this wonderful and horrible :) experience in next weeks. My choice are custom node setups, anyway if there is another idea, considering great interest and love for Maya :D here on forum, I'm listening.

Image
The renderer "turtle" used by this scene, is not currently available. The "turtle" renderer will be used instead.

User avatar
Rork
Posts: 1272
Joined: 09 Jul 2009, 08:59
Location: Close to The Hague, Netherlands

Re: Skin is back

Post by Rork » 18 Jul 2016, 12:50

just curious, but after your extensive testing/working in Houdini and Maya, what is the easiest to rig/skin in regarding SI?

rob
SI UI tutorials: Toolbar http://goo.gl/iYOL0l | Custom Layout http://goo.gl/6iP5xQ | RenderManager View http://goo.gl/b4ZkjQ

User avatar
rray
Moderator
Posts: 1546
Joined: 26 Sep 2009, 15:51
Location: Bonn, Germany

Re: Skin is back

Post by rray » 18 Jul 2016, 16:24

To hell and back. Medal awarded for sure ^:)^

Without access to any kind of scripting, I wouldn't dare to touch Maya. If this whole node thing would be some common standard (like part of FBX) then maybe.
Softimage Resources section (formerly known as rray.de/xsi) updated Oct 01 2017

User avatar
Mathaeus
Posts: 1708
Joined: 08 Jun 2009, 21:11
Location: Zagreb, Croatia

Re: Skin is back

Post by Mathaeus » 18 Jul 2016, 21:36

Rork wrote:just curious, but after your extensive testing/working in Houdini and Maya, what is the easiest to rig/skin in regarding SI?

rob
Maya by all means. While it has bad moments, no topology changes when skin is there and such, it's not big deal to workaround this in GATOR style, and btw Maya transfer attributes options are a way better than they were, long time ago. The rest, like parenting or constraints, behaves in more or less same way, so not big deal to get the first, acceptable result. Paint skin and hammer/smooth skin has missing points too (no smooth 'all at once' painting like in SI), but 'stepped' hammer skin weights worked enough good. Stepped = select a row of polygons, hammer, grow selection, G for repeat. And, of course there are tons of resources for Maya, also, people don't hesitate to talk about bad points (nicely to say), so it's easy to get picture what's f..d up, and do not waste the time for nothing. Maya has... moments, but this is concentrated around setups, while animating is really smooth, a bit more snappy and protective than in SI.
In Houdini I've tried to build completely custom deformations, it was 'all ICE' or, VOP thing, didn't even played with Deform SOP and such. This was more an experiment I wanted to do in ICE but never had a time. By 'nature' of such per point deformation, it's more precise than interpolated skin, but also it's slow, in any case of any optimization I think it has no chance against parallel evaluation in Maya 2016.
The rest in H, especially kinematics, looked like mix of rudimentary and completely unusual features, so didn't even went anywhere further of plain skeleton with a few built in IK chains. Interaction wasn't 'shiny', too, things like accidental K key over input field is taken as expression that can't evaluate, causing H to crash - that is, whenever I felt relaxed it was H to put me back into reality. And so on...

rray wrote:To hell and back. Medal awarded for sure ^:)^

Without access to any kind of scripting, I wouldn't dare to touch Maya. If this whole node thing would be some common standard (like part of FBX) then maybe.
Maya LT, in few last versions, has support for MEL, has no support for Python. Exactly that means, everything of old scripts on CreativeCrash is available and generally works (if doesn't, there's another site with adaptations for newest Mayas), including Michael Comet scripts. For Softimage forums, Michael Comet was a sort Mayan's Helge Mathee.
MEL support includes a custom runtime scripts, created directly in Hotkey Editor, for custom command sequences and such. Script editor and drag drop from there to shelf is present, too.
Anyway been able to utilize hierarchy to get selectable parts in SI Synoptic style, arm and legs are parented to root of entire rig, then just constrained (by nodes) to appropriate parts. For bone carrier rig, managed to have no one deformer at same position, which allowed Maya symmetry to work flawlessly. At this point only scripts are sequences for IK/FK matching. Found some docs, how to create MEL based interface, does not looking complicated.
The renderer "turtle" used by this scene, is not currently available. The "turtle" renderer will be used instead.

User avatar
Mathaeus
Posts: 1708
Joined: 08 Jun 2009, 21:11
Location: Zagreb, Croatia

Re: Skin is back

Post by Mathaeus » 08 Aug 2016, 03:16

Just to add a few node setups used here, I've found interesting. Of course nothing new here, while I think these small tricks are still not so well known.

First one is sort of common reverse setup, but this one is 3d, let's say if someone wants a reverse spine setup. Second chain is driven by first one, rotations are just parallel multiply by -1, last joint of first chain is driver of first (or second) joint in driven chain, so on. I think anyone who tried 3d variance of this setup, already noticed that rotation does not match, due to additive nature Euler rotations. So, there's simple trick to get them to work properly - rotation order of driven chain has to be 'reversed', too. Here, XYZ order on driver chain is ZYX on driven one, and that's it.

Image

Image

Here is how this is looking in Maya Node Editor - it won't display hierarchy, but it is able to connect anything related to transforms, which makes it ideal for making any sort of additional connections. Also, whatever you do, using built in utilities, it seems to be blazing fast to evaluate.








Second is 'hand-made' point and orient constraint. They are simplifications, no offsets or such things, while is still possible to blend them with local transforms, Maya seems to create the PairBlend node in same way, just by setting the key on driven transform. However I believe they are always evaluating, making it easier to keep the basic structure of rig always on predictable state, even there is no any animation. Let's say in case of resetting the transforms of driven objects, on scene load and so. Used these setups frequently, whenever wanted to override translation or rotation. I think the pattern is pretty much the same as with Maya built-in constraints: transform of driver is firstly converted to local transform space, then there is override or blend.

Image








This one is probably more interesting. I call it 'Half of Soft IK'. It tries to avoid a typical 'snap' at low angles when bones are driven by IK, by small change of bone length at low angles. It's not good for transition into plain bone stretch as Soft IK is. At maximum distance between first and last element of chain, it just stops with rotation, but, it is trying to provide as much linear change of angle between the bones, as it is noticeable from Graph Editor's snapshot.

Image

How it works - distance between first and last element in chain is used for exponential blend between desired maximum and minimum bone length . "Bone stretch fraction" is a maximum negative stretch of bone, here it is 1/20 of bone length. For use in real world, perhaps is good idea to keep the maximum bone length value, by something more resistant to deleting than used AddDoubleLinear node, like custom attribute, of transform value of some locator. To make it simple, bone lenght is defined only by X distance, all 'joint orient' values are set to zero. It was preferred angle to tell how bone is rotated.

Image








And, one not used here, but have plans about it. It's smooth Blend Shape blending. While smooth interpolation of relative Blend Shapes is added to latest Mayas, it seems it's possible to create it only as 'internal' shape, buried somewhere in BlendShape node, allowed to edit only through the new Shape Editor. Not so nice in case the targets are imported. If I want to use Shrink Wrap as editing operator, result is a sort of funny, but completely undesired effect.

Image

So that's just a classic, not relative Blend Shape, where weights are driven by nodes. Sort of effect that looks easy to do manually with function curves, but in reality it is only machine who is able to do it properly. This one works only with two targets, no more or less. Blend will pass exactly through first target.

Image








Finally, Shear. In Maya, that's easy to use transform option, nicely understood by skin operator, too. When it comes to skinning, I think everyone noticed that many deformations from reality are looking more like shearing, not really as plain rotation. Hand - arm, body - leg or head - neck interface and more. Caveat is, that not everyone else is able to perform Maya style of shearing, and that includes FBX. Shear is simply ignored FBX, and by a lot of game engines or 3d apps. Anyway it was a so strong helper with skinning, enough strong for me to take look, how to export a complete deformed mesh instead of skinned skeleton. In Maya LT bounds, that's old school, plain snapshot of all deformations, utilized as sequence of relative BlendShape targets.


Image

However, how to get angles between bones to drive Maya shear, properly. Usually it is Tangens trig function, but no one of this kind that comes with Maya. So, 'workaround' is to build the function, like in screenshot. We want to split transform between arm and hand, here, that's reason for half of input angle. Rotation along Z axis, driving the along Y aligned vector is completely arbitrary (axis just needs to be orthogonal to vector), could be used anytime. Finally, divide of two vector components is exactly what tangens function is doing. On higher angles closer to 90 degree, thing can go into something really undesired, forcing an infinite shearing. If so, there should be some additional clamp (not added here). From my small experience, it's good to clamp the thing before, somewhere around input angle.

Image
The renderer "turtle" used by this scene, is not currently available. The "turtle" renderer will be used instead.

User avatar
Rork
Posts: 1272
Joined: 09 Jul 2009, 08:59
Location: Close to The Hague, Netherlands

Re: Skin is back

Post by Rork » 08 Aug 2016, 08:50

Great follow up on this!! :-bd

Thanks for the detailed explanation and pics :)
SI UI tutorials: Toolbar http://goo.gl/iYOL0l | Custom Layout http://goo.gl/6iP5xQ | RenderManager View http://goo.gl/b4ZkjQ