Massive Artist Log # 1
29 September 2008 06:20 Filed in: Work-การงาน
Introduction and
the Story So far
The Introduction
Hello. This log is an informal and very much so, a personal way of keeping track of using Massive in visual effects production. It may grow (up?) to be a more formal tutorial/escapade of Massive usage with illustrations and some such, but that is no guarantee. I'm lazy, and that's the way I am, but I might get inspired if I can see a real use of this in my job or enough demand were made from customers, we will see.
And, oh, this log, has nothing to do with Massive Software. This is me, my opinion. period. Don't get things mixed up and complicate issues. If you have a tendency to do that, interpret personal opinion as company policy, please go away, I don't like your mouse and keyboard.
Alright, now that we got that cleared up. Let's move on how this log come about.
Since I started working with Massive, I have dealt with all the VFX productions whom are our customers (which essentially are most of them). I have learnt about their problems, big and small. With my experience in production and Stephen's help in explaining how Massive should be used, and how Massive works (literally, internally and conceptually), I have helped answering and solving the issues these productions are facing while using and integrating Massive into their pipeline.
I have used Massive in my work at Massive Software, testing and validating the support requests and bug reports. I have travelled to various countries and taught people how to use Massive and gleaned from it an even deeper understanding of the program. But, and that's a bada-big BUT, I have never used Massive in real VFX production, as a Massive artist.
That changed right when a VFX production enlisted my help for a Hollywood film project which requires close to 20 Massive crowd shots. I agreed to help out in the project.
For the sake of NDA, I'm not going to mention which VFX company that is, what film project it is, nor even give details on the job, I'll be vague about those, but rest assured, I'm gonna be talking about the necessary stuff in details. When the project is done, the movie is in the theaters (or out of the theaters), I might come back and revisit this log, updating it with proper name, illustration, screen grabs, etc. But don't get your hope up high, I'm lazy.
I also assumed that you are familiar with 3D packages and Massive enough to know what the heck I'm talking about. I am not going to explain to you the basic and humdrum of interface and tools. This is *not* a tutorial, it's a walk-with-me-through-production-fire log.
I did not start this log coincidentally with the time I started the production, so I will summarized what I have done so far in the following section. After that the log will be a day-to-day basis accounting of production happenstances.
The Story So Far
Let's start with the project requirements :
- Time frame for the project, 4 months give or take a few days
- Shots needed Massive agents, 18 shots
- Maximum number of agents in the shots, 250 agents
- Most of the shots are agent running from point A to point B
Technical requirements :
- Base 3D package : Maya
- renderer of choice : Mental Ray
- number of Massive license : 1 Prime
- Motion provided by keyframe animation from Maya
The Massive usage in this show is supposedly simple, and I approached it as such. I simplified everything possible, on the brain side, I planned to do only necessary agent avoidance using sound, and terrain adaptation through ground channel and ik adaptation.
I have a pretty good idea what my work entailed and the time frame is very possible to pull this off. This is considered with padded time allowing for the production hiccup (reading: fuck up) common to all VFX production. This is also the first Massive production for this facility so most of the staff involved are new in the way of Massive.
The first two weeks I was here, I was twiddling my thumbs waiting for the assets to come through the production pipeline to me. I have stated what I would like to get specifically and hope the producers and people in the front part of the pipeline miraculously make it happened. I also gave them guidance on how to do the right thing for Massive. Here is the list :
- Skeleton rigged in the Massive friendly way, all Z axis of the joints pointed forward, either X or Y axis of the joint pointed down towards its child joint.
- As small number of joints as possible.
- OBJ model of the agent with proper UV laid out, that way, I can use the texture used for hero character on Massive agent as well (tamed down the resolution, of course, no point using 4K texture map for Massive agent).
- Smooth binding of the model to Massive rig. I use my Maya to Massive weight transfer MEL script, written about 3 years ago to do the job, it still works well. (massiveWeightsWriter.mel, downloadable from Massive forum)
- Camera tracking and virtual set (especially the ground plane) of the shot. This available to me as a Maya file.
- Animation cycles for running and direction changing.
Issue # 1 : Rigging
I'd have to say that this is off in a good start. The rigger for this show who rigged both the hero character and the Massive agent is quite good. He has experienced rigging and providing connection between Maya and Massive in other shows at another facility before, so he's familiar with what is needed.
He has created a proper skeletal set up with all the Z axis pointing forward, all joint zeroed out at bind pose. He essentially got the rigging and animation exporting to Massive part worked out. Unfortunately his Massive rig is too simplified and the VFX supervisor demanded proper skin deformation on the Massive agent, which means volume preservation and great looking shoulder and hip deformation on this semi-low resolution skin.
The rigger then have to add more and more joints to help with the deformation and ended up with more than double the number of joints he intended for Massive agent at the beginning. Most of the extra joints were there simply to keep volume and allow for better skin deformation, and has little to do with real animation. To his credit, there is no other way around it, there is no muscle system in Massive so any muscle system or corrective joints he may have access to in Maya, do not translate to Massive. He will have to make do with basic skin/joint weighting.
To top that off, the agent used in this show sports both quadruped and biped stances and motions, creating even more challenge for the rigger to get the skin deformations right on both forms.
This revision process has been going back and forth for almost 6 weeks and that is a delay I have not anticipated. I was pressed for time at trailer shots delivery simply because of this delay alone.
Technically, his rig is excellent, the animator has puppet controls and can artistically manipulate the character. The rig's muscle system, IK system and all other voodoo are well hidden away and work properly. If anything, I'd say the rig is a tad overly complicated and tend to create (and had created) technical problems down the road. Don't get me wrong, I'm not a better rigger than he is, I am speaking this out of my experience as a rigger, but more so as a technical director who oversaw the whole pipeline. I am of the school of simplicity, so take my words with a grain of salt.
When the animation is done, it is baked to the Massive skeletal set up using constraints and key baked simulation in Maya, the standard procedure used by all the rig everywhere (character/camera) for animation export/import outside of the package.
The animation baking script is triggered by animator, one button push on Maya shelf, initiate the process of cleaning up the scene removing all but the Massive skeleton and its baked animation. This scene then saved out as Maya ASCII ready for me to import into Massive agent as a motion.
There was one hiccup in the animation export process where the elbow and knee joints got exported with three degree of freedom (in rotation) and it allowed for weird IK solution. The rigger turned around, tweaked his script and I got them in one degree of freedom as they are supposed to be, in no time.
Another problem is sub frame key baking, which I will elaborate in the animation section.
Anyway, I finally got my final Massive rig after 6 weeks and I considered the rigging problem solved... for now.
Issue # 2 : Animation
This issue is dealing with educating the animator how to animate for Massive correctly. It is, actually, quite straight forward. the root need translate and rotate keyframe, other joints down the hierarchy need rotations. Some interesting tidbits had came up while the animator were animating for Massive run cycles.
First, one of the veteran animator would like to put in translation keys for other joints as well, spine contraction is one of his main pet peeves. So I said he should try and I will see if it works out well in Massive or not. As it turned out, Massive can take all the translation keyframes fine, as long as they are consistence throughout all the motion imported. For example, if motion1 have keys for A rotate, B rotate and translate, it won't work with motion2 that has A rotate and B rotate only. Massive motion blending and transitioning won't work in this case.
The problem is solved by animation export script, the rigger make sure his script bakes all the same attribute set for all the animation. In this case, all the translation for all the joints are baked as well to ensure consistency.
Another interesting problem is the tangent of animation exported. When the keys are baked, Maya tangent between those frames turned spline and introduced wobbling in animation, in this case, it's very noticeable when the feet of the agent hit the ground, it's not sticking to the ground, but instead wobbling up and down due to the spline interpolation. I noticed this and have the rigger get rid of it. He uses two-prong approach, one is to turned baked animation curves linear and another is to bake the animation subframe (step of 0.2). This will ensure that most of the animator animations will come across perfectly.
The animators sometime like to animate between frames, because these run cycles for the agent are quite fast, it makes all the sense, and that support the sub keyframe baking solution even more.
The only catch for this is that we found a Maya bug which crash consistently when playblast in subframe steps.
Issue # 3 : Mental Ray
I was intended for this issue to be included in my catching up with current production, because during these past weeks, a big part of my time was spent dealing with Massive to Mental Ray integration. But accounting for this issue will just be too long for my one sit writing and I'll have to postpone it to the next log. Until then...peace out.
The Introduction
Hello. This log is an informal and very much so, a personal way of keeping track of using Massive in visual effects production. It may grow (up?) to be a more formal tutorial/escapade of Massive usage with illustrations and some such, but that is no guarantee. I'm lazy, and that's the way I am, but I might get inspired if I can see a real use of this in my job or enough demand were made from customers, we will see.
And, oh, this log, has nothing to do with Massive Software. This is me, my opinion. period. Don't get things mixed up and complicate issues. If you have a tendency to do that, interpret personal opinion as company policy, please go away, I don't like your mouse and keyboard.
Alright, now that we got that cleared up. Let's move on how this log come about.
Since I started working with Massive, I have dealt with all the VFX productions whom are our customers (which essentially are most of them). I have learnt about their problems, big and small. With my experience in production and Stephen's help in explaining how Massive should be used, and how Massive works (literally, internally and conceptually), I have helped answering and solving the issues these productions are facing while using and integrating Massive into their pipeline.
I have used Massive in my work at Massive Software, testing and validating the support requests and bug reports. I have travelled to various countries and taught people how to use Massive and gleaned from it an even deeper understanding of the program. But, and that's a bada-big BUT, I have never used Massive in real VFX production, as a Massive artist.
That changed right when a VFX production enlisted my help for a Hollywood film project which requires close to 20 Massive crowd shots. I agreed to help out in the project.
For the sake of NDA, I'm not going to mention which VFX company that is, what film project it is, nor even give details on the job, I'll be vague about those, but rest assured, I'm gonna be talking about the necessary stuff in details. When the project is done, the movie is in the theaters (or out of the theaters), I might come back and revisit this log, updating it with proper name, illustration, screen grabs, etc. But don't get your hope up high, I'm lazy.
I also assumed that you are familiar with 3D packages and Massive enough to know what the heck I'm talking about. I am not going to explain to you the basic and humdrum of interface and tools. This is *not* a tutorial, it's a walk-with-me-through-production-fire log.
I did not start this log coincidentally with the time I started the production, so I will summarized what I have done so far in the following section. After that the log will be a day-to-day basis accounting of production happenstances.
The Story So Far
Let's start with the project requirements :
- Time frame for the project, 4 months give or take a few days
- Shots needed Massive agents, 18 shots
- Maximum number of agents in the shots, 250 agents
- Most of the shots are agent running from point A to point B
Technical requirements :
- Base 3D package : Maya
- renderer of choice : Mental Ray
- number of Massive license : 1 Prime
- Motion provided by keyframe animation from Maya
The Massive usage in this show is supposedly simple, and I approached it as such. I simplified everything possible, on the brain side, I planned to do only necessary agent avoidance using sound, and terrain adaptation through ground channel and ik adaptation.
I have a pretty good idea what my work entailed and the time frame is very possible to pull this off. This is considered with padded time allowing for the production hiccup (reading: fuck up) common to all VFX production. This is also the first Massive production for this facility so most of the staff involved are new in the way of Massive.
The first two weeks I was here, I was twiddling my thumbs waiting for the assets to come through the production pipeline to me. I have stated what I would like to get specifically and hope the producers and people in the front part of the pipeline miraculously make it happened. I also gave them guidance on how to do the right thing for Massive. Here is the list :
- Skeleton rigged in the Massive friendly way, all Z axis of the joints pointed forward, either X or Y axis of the joint pointed down towards its child joint.
- As small number of joints as possible.
- OBJ model of the agent with proper UV laid out, that way, I can use the texture used for hero character on Massive agent as well (tamed down the resolution, of course, no point using 4K texture map for Massive agent).
- Smooth binding of the model to Massive rig. I use my Maya to Massive weight transfer MEL script, written about 3 years ago to do the job, it still works well. (massiveWeightsWriter.mel, downloadable from Massive forum)
- Camera tracking and virtual set (especially the ground plane) of the shot. This available to me as a Maya file.
- Animation cycles for running and direction changing.
Issue # 1 : Rigging
I'd have to say that this is off in a good start. The rigger for this show who rigged both the hero character and the Massive agent is quite good. He has experienced rigging and providing connection between Maya and Massive in other shows at another facility before, so he's familiar with what is needed.
He has created a proper skeletal set up with all the Z axis pointing forward, all joint zeroed out at bind pose. He essentially got the rigging and animation exporting to Massive part worked out. Unfortunately his Massive rig is too simplified and the VFX supervisor demanded proper skin deformation on the Massive agent, which means volume preservation and great looking shoulder and hip deformation on this semi-low resolution skin.
The rigger then have to add more and more joints to help with the deformation and ended up with more than double the number of joints he intended for Massive agent at the beginning. Most of the extra joints were there simply to keep volume and allow for better skin deformation, and has little to do with real animation. To his credit, there is no other way around it, there is no muscle system in Massive so any muscle system or corrective joints he may have access to in Maya, do not translate to Massive. He will have to make do with basic skin/joint weighting.
To top that off, the agent used in this show sports both quadruped and biped stances and motions, creating even more challenge for the rigger to get the skin deformations right on both forms.
This revision process has been going back and forth for almost 6 weeks and that is a delay I have not anticipated. I was pressed for time at trailer shots delivery simply because of this delay alone.
Technically, his rig is excellent, the animator has puppet controls and can artistically manipulate the character. The rig's muscle system, IK system and all other voodoo are well hidden away and work properly. If anything, I'd say the rig is a tad overly complicated and tend to create (and had created) technical problems down the road. Don't get me wrong, I'm not a better rigger than he is, I am speaking this out of my experience as a rigger, but more so as a technical director who oversaw the whole pipeline. I am of the school of simplicity, so take my words with a grain of salt.
When the animation is done, it is baked to the Massive skeletal set up using constraints and key baked simulation in Maya, the standard procedure used by all the rig everywhere (character/camera) for animation export/import outside of the package.
The animation baking script is triggered by animator, one button push on Maya shelf, initiate the process of cleaning up the scene removing all but the Massive skeleton and its baked animation. This scene then saved out as Maya ASCII ready for me to import into Massive agent as a motion.
There was one hiccup in the animation export process where the elbow and knee joints got exported with three degree of freedom (in rotation) and it allowed for weird IK solution. The rigger turned around, tweaked his script and I got them in one degree of freedom as they are supposed to be, in no time.
Another problem is sub frame key baking, which I will elaborate in the animation section.
Anyway, I finally got my final Massive rig after 6 weeks and I considered the rigging problem solved... for now.
Issue # 2 : Animation
This issue is dealing with educating the animator how to animate for Massive correctly. It is, actually, quite straight forward. the root need translate and rotate keyframe, other joints down the hierarchy need rotations. Some interesting tidbits had came up while the animator were animating for Massive run cycles.
First, one of the veteran animator would like to put in translation keys for other joints as well, spine contraction is one of his main pet peeves. So I said he should try and I will see if it works out well in Massive or not. As it turned out, Massive can take all the translation keyframes fine, as long as they are consistence throughout all the motion imported. For example, if motion1 have keys for A rotate, B rotate and translate, it won't work with motion2 that has A rotate and B rotate only. Massive motion blending and transitioning won't work in this case.
The problem is solved by animation export script, the rigger make sure his script bakes all the same attribute set for all the animation. In this case, all the translation for all the joints are baked as well to ensure consistency.
Another interesting problem is the tangent of animation exported. When the keys are baked, Maya tangent between those frames turned spline and introduced wobbling in animation, in this case, it's very noticeable when the feet of the agent hit the ground, it's not sticking to the ground, but instead wobbling up and down due to the spline interpolation. I noticed this and have the rigger get rid of it. He uses two-prong approach, one is to turned baked animation curves linear and another is to bake the animation subframe (step of 0.2). This will ensure that most of the animator animations will come across perfectly.
The animators sometime like to animate between frames, because these run cycles for the agent are quite fast, it makes all the sense, and that support the sub keyframe baking solution even more.
The only catch for this is that we found a Maya bug which crash consistently when playblast in subframe steps.
Issue # 3 : Mental Ray
I was intended for this issue to be included in my catching up with current production, because during these past weeks, a big part of my time was spent dealing with Massive to Mental Ray integration. But accounting for this issue will just be too long for my one sit writing and I'll have to postpone it to the next log. Until then...peace out.
|