Thursday, September 25, 2014

Visual Effects II

Hello again,

This post is about my VEF2 class at Full Sail University.  Since starting the Visual Effects classes, I've really shifted toward wanting to choose visual effects as my focus for finals. I've decided I can make the most visually impressive and diverse reel with visual effects over the other disciplines.  As far as the topic of the class, I've been greatly excited, but the only word I can think of for the execution of the class...anticlimactic. I'm going to get into how the projects went, but first I'd like to talk a little bit about the class structure- or lacking thereof. (Feel free to skip to the projects section if you don't care to hear anything about how the curriculum could have been improved.)

This month we had 3 main project assignments. The class is designed so that we do most of the research and figure out how to do everything on our own. There were two lectures that were taught by the students, each giving an hour presentation on a specific topic. The instructor was ensuring that the students covered everything important, but this is still a potentially dangerous way to teach the class. We students are paying thousands of dollars for the class to be taught, not to teach the class for the majority of the month.  Students were more focused on their own presentation of their specific topic than learning the topics of others- because that was the part that effected their grade the most.

 I would have much rather had the instructor teach us more about certain very important parts of the Houdini software than have students half-effectively attempt to teach basic topics for two lectures (and a third lecture with a 'research project,' which was essentially a condensed version of the same thing) With additional instructor-guided lectures, we would have had a much more comprehensive understanding of Houdini.  As a result of this class, I feel like I learned about as much as I would have in my own free time, for free, while taking another class. That's not how a class is supposed to impact a student.  I would say that I'd do a better job teaching the class than the instructor, but since the students were the instructors, it would be a cyclical statement.

The projects were pretty liberal, letting us pretty much do whatever we wanted within the inset parameters,  which allowed for more freedom of creativity. This part of the class design is generally a good thing, but comes with certain caveats as well.  The lab instructor was there when we needed specific help, but at the same time, we were not allowed to be told certain things before our research projects were presented. This is an incredibly cumbersome stipulation for us students to deal with, and inhibited the effectiveness of the learning process overall. So on top of the students teaching the class for half the time, we also were forced to research most everything on our own... so what exactly was the instructor there for?

I don't know the process of the curriculum design specifically, but I would suggest a total re-hauling of this particular class design.  As far as the instructor himself goes, he's a great guy and seems to know what he's doing.  I didn't get a chance to see his demo reel, but from what I've heard it's quite impressive.  Except for the simulation waiting times during lecture (which are unavoidable with a demonstration on visual effects) his lectures were engaging and informative, for me at least. Again, I just wish there was more of that, and less of students awkwardly/quietly speaking of a subject they just learned about the night before for an entire hour, where everyone involved doesn't really learn much that they couldn't have already.

Now for the good stuff- the projects...

Project 1- Maya Fluid Flame 

For the first project, we had to simply make a fire effect with Maya Fluids. They were looking for something on the scale of a campfire, trash fire, etc. Of course, the first thing I thought of was a fire tornado. Those actually exist, in case you didn't know. Google search fire tornado or fire vortex, and you'll likely find some videos I used for reference. I wanted to make a nice column of rotating fire, and started out with a default fluid with a vortex/volume axis field to control the pillar.  The problem I had with this was that I could not control the shape or direction of the vortex, and lost all detail in any artistic value the vortex had.  My solution- rigging the vortex.

I started with a joint chain on a vortex-shaped NURBS surface, bound and added controls. Attached to the surface, I added expressions for vortex-like motion. My solution to this was a sine deformer. In the offset of the sine deformer, I put the expression: sine1.offset = -time;  This made the sine move automatically over time, upward through the vortex to give the wiggling effect. Then, in the sineHandle rotate Y attribute, I added the following expression: sineHandle.rotateY= time*100; Since the number in this field is how many degrees rotated, you need a higher value in here for a noticeable change.  Together, these expressions made a rotating upward spiral deformation on the surface, which on it's own looks pretty convincingly like a tornado. The controls allowed for me to move parts of the column where I wanted to, to get the motion of the vortex that I was looking for. I emitted particles from this NURBS surface, with multiple volume axis fields attached to sections of the controls, so when you move the main column, the particles followed.  From these particles, I emitted fluids, and they had their own separate volume axis fields to control the motion, so they could have different values than that of the particles.


The rig worked really well, and was a learning experience for rigging fluids, but I had an issue with the fluids that effected the result of my final product. I couldn't get the volume axis fields to rotate the fluids while getting a thin-enough column of flame. I spent days on this specific problem, alone, and I still didn't get it how I wanted. Right after the project was turned in, I found something that would have solved everything.. What I didn't realize was that the particles I created were emitting a density of 1000 x greater (not exaggerating) than I needed for the vortex. I had scaled down the dissipation and opacity to compensate for this, which made the size that I was looking for, but killed my fluid rotation and fluid detail. I also added a texture and animated it to make the flame look like it was rotating more than it actually was, but it didn't do enough to pull off the effect.  I quickly turned around and made a stronger rotation after I figured out this issue, but it was too late as the project was already turned in.  So here's my final video...


as you can see, the rotation is really weak, looking more like a little spinning flame instead of a fire vortex, as it should have been. The texture came off nicely though, and now I know what I did wrong so next time I can make it better.

Project 2- Houdini Pyro

Project two was focused on learning the pyro nodes in Houdini, and the overall visual effects simulation-> caching-> rendering process in Houdini. I really like how Houdini handles flames and simulation, it's very efficient for sure, and wish I could have learned much more about the production process.  My idea was to create greenish-blue ghost-snakes, coming out of an explosion of ghost flame, themselves being on fire as well. The concept was really cool, and I thought I knew exactly how I was going to execute it.  I modeled a quick ghost-serpent thing in ZBrush in about an hour, and brought it into Maya for animation.'

 I used a skeleton, splineIK, and motion paths to animate the snakes 'swimming' upward in a spiral, and it looked pretty cool as far as I am concerned. Like in the tornado-rig, I added expressions for the sine offset for the snakes, but I needed to go a step further to make the seven snakes have a more random look to their motion. instead of simple offset=time expressions, I needed things like offset=time*2; time*3; 2/time*3, etc... when you divide a number by the time, the reciprocation of the time expression has the effect of speeding the sine offset over time, and that was really cool for my ghost-snakes.  I just used my knowledge of mathematics and expressions to play around with the snakes until I got a look that suited me. After all that was done I performed a geometry cache for exporting into Houdini, and deleted all the clutter to keep things simple- or so I thought.  I thought I could export a .obj sequence from Maya, or at least a .fbx for the animations, but when I tested them out in Maya, Nothing would animate when re-imported. My solution was using .abc alembic import/export and as far as Maya was concerned, it worked out smoothly.

When I brought the alembic files into Houdini for adding ghost-fire coming off of them, it simply would. not. work. I tried everything I could think of, and did much research online about the issue and came up with nothing. The fluids would not follow the motion of the snake, and I could not even parent an object to the alembic file effectively. The closest I could get to making the snakes on fire was a slight- twitchy- white smoke outline that did not move, and it was not resolution dependent or anything. So it was not useful for anything, essentially. The lab instructor spent days on the issue as well, and she could not find a solution either.



 In the end, I turned in the animations I had for the snakes separately to show what I did, but my focus shifted toward making the Houdini ghost-explosion.  I used a huge green explosion from Game of Thrones and ghosts from the Lord of the Rings and Hobbit movies for my references, and based on those references it's pretty accurate. I wanted it to be slowed down, for dramatic effect like in the Game of Thrones reference, and ghostly looking fire, kind-of like the Lord of the Rings references. I had not learned enough about the rendering process in Houdini at this point and there were a lot of issues with that so there is some noticeable noise in the explosion- but beyond that it was exactly what I wanted.

I utilized advection of the fluid to make the explosion roll like I wanted it to, along with various other things like fuel, temperature, density, smoke, etc.  I wish I could go through the entire process of creating the explosion for you, but to be honest, I took it setting by setting and moved sliders until I noticed a difference. I plan on getting better at Houdini in the coming months so I can utilize it more efficiently for effects in the future.

There's not much more to say about this project beyond the issues I was having, so here's some video for you to ingest.



Project 3: Whatever we want (sandman for me) 

As it says in the project title, we could do whatever we wanted (as long as it wasn't fire) for project 3. I loved that, and immediately came up with an idea that I really wanted to do... Which was... you guessed it..... a lava monster.  wait wha.... but he just said... sand... wha.. uh.. ok..  Yeah, my initial idea was a lava monster.

 I did a lot of research online and found many examples of terrible looking lava, and a few awesome ones.  I learned that I could add in temperature to control the viscosity of the fluid, so that over time it moves slower as the lava 'cools.' Ok sounds simple, right? Well, that part was pretty easy to grasp, but the hard part was the SHADER.  I thought, yeah, colour- based temperature, added in with displacement, a little noise, yeah I can do this in two weeks.

Well I found a shader online that looked really awesome and opened it up to see how it work, so that I could have some tips on creating my own and it was... extensive to say the least. (at least for me, just now learning how to make a custom shader in Houdini)  If you'd like, there's a video on Vimeo on Variable Viscosity lava, that includes the shader for you to open up in Houdini, and take a look at this shader on your own time. I'm going to be dissecting it in the next couple of weeks to figure out how it works and use that knowledge to develop some shaders that I've really wanted to make. We'll see how it goes.

 I had this back-up, sort-of simultaneous plan for my project 3, uh, project...  Making a sandman. It's been done before, man of sand, of course... (spiderman 3, anyone?)  But I thought it would be really cool to see if I can make it, because sand is a nice visual effect skill to have, in case you have to work on an uh, sand movie or something.  I wanted my sandman to be a little drier than Spiderman 3's amazing sand man transformation, and I don't have the resources that they did there, so I needed to stick with something a little simpler (especially after spending a week trying to get lava to work, only one week left before turn in). This sandman idea was partially influenced by Spider-man and also partially influenced by the song Mr. Sandman, by the Chordettes. I <3 that song. Yes. I love it so much that I 'left arrow, three' it. I have a few other ideas for songs like 'Jeeper's Creepers, Blue Moon, you get the idea.

I had about a week to develop this sand look, but I also had to do the research project, which took out a couple days of my time, so it was more like 5 days. The first day, I was looking at sand references all day, trying to decide how I would approach the creation of the sand, and looking into different programs to see which was the easiest to pull off.  I decided on using Maya Fluids because I needed to bring in animations for this one and did not have time deal with another issue like the previous Houdini-alembic fiasco.

I started with a NURBS plane. As you can see I've used NURBS mostly for my projects in this class, and there's a good reason for that. You wouldn't believe that I normally despise working in NURBS because it's counter-intuitive to me on how the surfaces work... But yeah, I hate it.  For deformation with waves, sines, etc, however, NURBS has much smoother surface transitions and allows for many less divisions than polygons allow for.

 So. I created a NURBSplane and used 3 sine deformers and 2 wave deformers to create a blobby, blobish blobbing blob. It was basically like a flowing surface effect, like sand coming out of the ground and flowing down, but on a single surface. I thought this would be a good basis for the ground effect of the sandman coming out, and it turned out really nice.  When I emitted fluids from that puppy, (once I figured out based on my scale, inherit velocity factor had to be 100 x greater than default) it worked like a charm.   I used a negative buoyancy of something around 10 for the fluids to make the sand fall nicely and look like it had weight to it, and forward advection attribut was used to give the sand a little bit more of a push (pun intended).

For the sand man himself,  I took a game character model that I made for a personal project and threw in a humanIK for animating him. When I say threw in I really mean threw in. I popped it on there, bound the character and just dealt with the terrible default weighting (partially because the bones were hardly in the right spot on the body). Sometimes you have to do things the 'wrong way' to save on time. Since I knew that I was going to hide the body anyway, and only use him as an emitter, I didn't bother spending time painting weights and making the binding perfect.

 Rigging and animating this guy took me 5 mins the wrong way, and would have taken me 3 hours the 'right way.' I needed those hours to work on fluids, so I opted for the quick way. Besides, our project was required to be a minimum of 90 frames, and mine was only 200, so for the amount of time he was on screen, I needed only a simple quick animation of him moving slightly for my purposes. I honestly would have made a more interesting look, with a well animated shot of him moving his hands, fingers, mouth, etc, if I had time for it. But by the time I brought this guy into Maya, I had 1 day to finish my project. 1 day. So I worked with what I had.

I emitted fluids in a separate 3d container for this guy, and with similar settings to the ones in the ground bubbly container. There were some changes, like the amount of buoyancy, inherit velocity, density, etc. that I had to work with to make it look right. I was planning on putting wind in there, but with the time I had, a windless desert seemed favourable over an unfinished project. Render time was also a concern of mine, so I had to decide how to do my lighting without making the renders take forever.  I used the self-lighting on the fluid for lights because they looked almost identical to real lighting, with a drastic reduction in the render times because I didn't have to use raytracing.

After I got the fluids looking how I wanted, I wanted to try to give a little bit more detail in the sand, with sparkling, grains, etc. I used particles for this, but I ended up taking it out because it wasn't working in the render and I didn't have time to figure out why. This may have been an issue with Maya 2015, because I only have Service Pack 3 for it and I've seen others people have issues with various parts of rendering in 2015 so far... more research needed on this subject.

The particles on their own were looking pretty good- I used opacityPP and RGBcolourPP combined with a random range on the lifetime of the particles to make the illusion of the sand "sparkling" I was going to fiddle with the colour a little bit more, but since I couldn't get it to render properly, I playblasted it to show what I produced. I used an inherit factor on the particles to get them to follow the motion of the sandman as well, and it looked fairly natural.



I threw that sand guy into after effects, matched it to a sandy background with colour, brightness, hue, etc... then took it into photoshop for adding text and sound. Of course, I used Mr. Sandman by the Chordettes in my video because, how could I not?



I wish I could have gotten the particles working along with the fluids, because it would have created a really cool effect, but just because the project is turned in, that doesn't mean I can't do more research and really hone my sandmaking skills and come up with something cool.

Overall, despite issues I've had with this class, and some unspoken misunderstandings as far as my grades went, I have really learned a lot, (however much on my own that may have been.) I've enjoyed the process of learning different applications of VFX creations. I look forward to my next months in developing my skills to become a VFX wizard, all great and powerful and junk.

Thanks for reading, if you did, and hopefully I'll post a little more often on here... not just as a requirement, but also for my own documentation and your information (and possibly entertainment.)

Until next time~
Have a sandy afternoon.

Brad Bailey.

1 comment:

  1. AWESOME Stuff, you know, you could use the green fire to recreate the wicked witch appearing in the munchkin village in the Wizard of Oz.

    ReplyDelete