As my character is half bat half man I knew I was going to give him some sort of wings, which meant that I would have to weight and animate the membrane in-between joints. Instead I thought I could use a Maya feature called nCloth which realistically simulates cloth movement and physics. To do this I took my model, cut out each section of wing, making it a separate mesh and converted each into nCloth. Once turned into nCloth the wing membrane would simple fall to the floor when simulating so I selected each vertex that the wing and the main manbat mesh shared and used an nCloth component to component constraint to weld their edges together.
At first testing out nCloth it seemed great and I believed it would give my character a realistic touch, however I ended up running into various problems which made working with it hell. Here are a few of the problems I ran into and the solutions I used to fix them:
When I had first attached the nCloth to my character it felt a little bit too loose when moving legs and arms so I decreased the resting time of the nCloth which caused it be tighter when the wing is fully stretched out. One issue a lot of people run into is that nCloth has a value which tells it when to start simulating which is automatically set to 0 but by default the timeline is set to play from 1 so the nCloth doesn’t simulate, this was easily fixed by setting the start value to -5 which I also used to move my character and start the simulation before frame 0 where my animation starts.
When simulating nCloth it has to check each frame to decide how the cloth should move, what it should collide with, how much it should stretch etc. To calculate all of this requires a lot of processing and therefore time, which meant that every time you wanted to view it back to make sure it looked okay it would have to recalculate each frame.
There were some ways to counteract this such as keeping the wing material low poly so there are less calculations to make while animating or turn off nCloth completely so no calculations were made which I did when solely animating my character.
One of the main issues I encountered was the quality of the nCloth simulation. During the playback of my animation I realised that the wings were scrunching up in places. I originally thought that it was due to large movements over a small number of frames which meant that the simulation couldn’t calculate it properly.
To fix the issue of too few frames to calculate the nCloth I went through all the values reading what they did and found that you can key two values called Substeps and Max Collision Iterations. These values effectively increase the amount of calculations performed per frame so I increased the values where my character was moving fast over a short amount of frames and reduced it afterwards as to not increase the calculation time too much.
At first this helped but it soon became apparent that in certain places the wing mesh would get stuck within itself.
Through a ton of trial, error, sorting through various values, turning collision/self collision off and on and re simulating I finally found two values which fixed almost everything: ‘trapped check’ and ‘self trapped check’. What these values do is check whether or not a mesh has got stuck within itself and realigns itself so it isn’t overlapping.
An Example of broken nCloth.
To fix the issue of having to simulate the wings every frame I found that you can “cache” the data in an nCache which stores all of the simulation data so that you can scrub through the timeline without the delay that calculating brings.
Originally I had planned to use nHair on my character but due to time restrictions with the deadline and the actual simulation/rendering of the hair I had to make the decision to not use it. If I come back to this animation on a later date to render at a better quality I would definitely add nHair before re rendering.