Wednesday, 14 May 2014

Tips & Tricks related to Facial Modeling for Animated Productions by Sergi Caballer Garcia

It has been a long while since I have last posted, rest assured for those who are following me, I always keep my blogger page in one of my tabs. The blog will never die, unless I close it or declare it. At the same time, I will be serving the Singapore army soon, so that might or might not be 2 years worth of inactivity. Check back to see any surprises!

Now, I come to you today to offer you some great demo and teachings from Sergi Caballer Garcia. The article was posted on CGMeetup, here, I merely picked it up on my Facebook feed and thought it was great information to share with the good people here.

Picture taken from CGMeetup.com
All of this tips and tricks can be used on any 3D modelling software, as Sergi said, and I quote, "all of the steps and methods showed on these timelapses are the same ones you’ll find in other packages, such as split, insertEdgeLoop, extrude, merge, sculpt, etc.". 

The whole article will touch on topics like workflow, topology, deformations, appeal, hair modeling and all the little tricks you can pick up to improve on any models. Sergi also touches on the Sculpt Geometry tool, not a lot of modellers that graduated from my school that I know uses this tool for creating organic models. I tried it once on an inorganic blanket model (using a mouse), well, I guess I like the control the mouse gives as compared to the pressure that varies on the tablet.

Well, for the rest, the article is pretty self explanatory.

You can check out Sergi Caballer Garcia's website here, it includes a lot of works he had done before, deeply inspiring and impressive too.
http://www.sergicaballer.com/home/
Picture taken from Sergicaballer.com
Well that is it for today then, what a long time for an update.

Friday, 25 April 2014

Dynamic Hair Tutorial Part 4 (Extra, controlling the hair with FK joints)

Welcome to the third part of the dynamic hair tutorial, by me, if you have not checked out part one, two or three of the tutorial, check it out here: PART 1, PART 2, PART 3.

Quick overview of parts 1 thru 3:
made mesh for rig
made joint system to control mesh
made dynamic curves to control the joints
made hairSystem drive the dynamic curves
made collision spheres for the hair curves
create a simple control (NURBS curve) system to control the head and collision spheres

As I said in Part 3, I am going to dedicate this post to the creation of the FK control for the dynamic hair (at least I will show you how I did it).

This can get kind of confusing and technical, if I left it there for a week or two I might get rusty with the details, thus breaking the rig. So I am doing this for whoever wants to learn from me and for me to remember and also to get critics on how can I improve this (or another way to get this done).

Exposition:
It started out as a theory as I followed the control hierarchy (who controls who) when a friend of mine asked for some help with dynamic hair. What started off on the whiteboard became a reality in Maya itself, and I wanted to share this knowledge with those who wanted to learn. Now that the exposition is done, we shall continue.

Next, a few things to take note about my naming conventions because there seem to be a lot of confusion in explaining things with the names (it even confuses me too).

hairSystem = hairSystem

input of dynamic nurbsCurve = inputCurves

 output dynamic nurbsCurve (the ones that move) = outputCurves

dynamically driven joints = dynHairJ_01 (numbers vary)

groups = denoted with a _GRP

groups to be constrained = PARENT_GRP or ZERO_GRP
(ran out of vocabulary, difference will be explained later)

controls = denoted with a _CTRL

skinned joints = denoted with a _skinned

Here is a picture that I made in Photoshop (should have done it in Illustrator) to cover the whole system, it might be useful to those who are more of a visual learner.


You might find something peculiar about my own setup as I continue the tutorial, like there is a missing group in this diagram. Yes, there is a group that is missing from this diagram, which is the CTRL_GRP, it is mainly a group tat I place above my controls (CTRL) to orientate the manipulator of the controls (CTRL) in the direction of itself.

Tutorial here

As explained, doing the group thing keeps values off active controller curves while keeping them in the correct orientation. I did not want to put them inside the flow chart because that will clog up the thing.

With the overall flow chart of the system done, I shall be talking about it in words.
(You can skip this section if you want)


1. You have your hair system here, the dynamic hair is already simulated.
2. The moving hair curve will be controlling the hair joints through the IK Spline.
3. The dynamic hair joints will be controlling the hair groups.
4. The hair groups contain another group which will be controlled by the upper control through a parent constraint.
5. The translations and rotation values will displace and turn the controller that will control the skinned joint that is the child of it.
6. The skinned joint is skinned to the hair mesh and cause the hair to move as well.


OK, now with the theory of it done, I shall proceed with the step by step tutorial of the setup.

First (you would have noticed I do not continue with second or third), get your file ready, either your own file or the file I provided on here:

https://www.dropbox.com/s/yymdtuutf22w2od/Tut0102.ma
I edited the file a little to match the names of the dynamic joints.
Now that you have your file open, create an overlaying/overlapping joint chain of the dynamic chain that you have.



Then next would be the controls, you might want to go through the tutorial about the orienting of the controls.


This part you can go either way, either re-skin the mesh to the overlapping joints and the start of the branch to the dynamic joints or re-skin later after the connections are done, where you have to skin selected joints.

I personally prefer the second way since I like to get my rigs fail proof before skinning anything. I am going to show the skin first and the skin last parts as their respective sections.
(special sections will "*")

1. Detach skin from the mesh.


*1.5. (If you want to skin first) Skin the needed joints.*

 This shows all the joints that I binded.

2. Unparent the joints of the overlapping joint chain (the one in blue)


3. Follow the flow chart and arrange the groups that controls the controllers as they are on the right side of the flow chart.


4. Constraint the the respective stuff according to the flow chart (right side of flow chart first)


5. Constraint the the respective stuff according to the flow chart (left side of flow chart now)

Yep, it is getting larger and larger.
5 Optional Step. Create an attribute to hide all the unneeded stuff to be touched on.

Key the visibility of the items.

5.5. (If you chose to skin the mesh last), skin the mesh.

Though it may look like this, it is totally fine, unless you have other plans.

6. Enjoy your new dynamic hair with FK controls that can control the hair, after the simulation.



I actually had to enlarge (scale) the controllers because they were too small and hidden inside my hair mesh.

https://www.dropbox.com/s/kroicmkcc82wfd7/Tut0102Final.ma
Final file for your reference.
 Please be reminded that this file is for learning purposes and is not to be abused in any matter, if you want to share or improve on it, just a credit will do, thanks.

Hope you really enjoyed this ride with me through the tutorial, I hope that we all learn something from it. That is all for the Hair Dynamic tutorial folks!

Sunday, 9 March 2014

Demoreel~ (21st Feb 2014)

This is my demoreel, updated to 21st of February 2014.
Included are a character from my final year film and some shots from it too.

Vimeo:


Youtube:


QR codes:

Thursday, 27 February 2014

Back again, loads of useful info on some rigging stuff.

It has been like what? 1 month? Yeah, I have been very late with my updates, but not to fear, I come here with something to show. This whole month have been flooded with a lot of simulations and cloth and rendering. Our final film is nearing its submission date and we still have animation unapproved. The best we can do is to make do with what we had and render everything out. Most of the shots are completed but we still have a minority of those which are of substandard quality. 

Rendering was taking a toll since we had to run around opening files and rendering them in school (nope we do not have a render farm, yet[I hope]). Some shots we will split the layers to be rendered in different computers. By the way, the rendering was not headed by me, but the lighting, composting and rendering head, I do not know if I should put his name here, still, blog posts could be updated. It was hectic at first because of the sudden flood in the amount of shots we have to render, however we managed to keep our calm and manage everything, all in a notebook. In the end, bulk shots were rendered overnight and renders are done the next morning (the day of submission).

Well, either way, hectic time is over and we get to polish the final film until the Graduation show, on 13-14 of March Singapore time. This will mean more resim for me and will probably take up a chunk of my time, although I can be more relaxed about the working hours in school.

UPDATE on Dynamic Hair Tutorial Part 4:
Nope, I have not gotten around to creating a video for it, yet, although the main bulk of the tutorial is done. Hope I still can finish it if time permits.

Other information:



The video touches on some key items like node based rigging, included in Autodesk Maya 2013 and onwards (presented in the video is Maya 2014). It also touches on using some of the provided nodes to rig for example the hips of the character to be always in the center of both feet, instead of using scripts to quicken the evaluations.

Maya Set Driven Key Tutorial by Daryl Obert


This video touches on SDK (set driven keys), its basics and its function and tweak-ability using the graph editor. Daryl Obert explained it pretty clear and demonstrated the use of SDKs very well.



 This video also by Daryl Obert, will talk about nParticles in Maya and the fields of nParticles. This video gives an insight to the power of nParticles simulation inside Maya itself. It is a great video if one is interested in effects inside of Maya itself.

Yeap, that is all for today then. I wanted to say that Autodesk really outdid themselves, although each version of Maya has its own bugs and glitches, the newer one is considerably better than its own predecessor. It is great that Autodesk started to build in the node based system interface in Maya 2013 and its future versions. That allows better organisation and quicker workflow, whether one is rigging or doing animations or even effects.

Wednesday, 29 January 2014

Been really busy lately~ V2.0

Been really busy lately V2.0

Yeap, that kind of explains everything, I have been trying to find time to make the video on the Part 4 of the dynamic hair tutorial. However, I have been assigned (pre assigned but now the animation is done, I have to do the effects), more work to do. That left me little time to rest and to do the video and even update the blog.

At the same time, I have to prepare the materials that are going to be used in the Singapore Polytechnic's Graduation showcase. I linked my bio on the website to this blog, and most probably going to link it on my name card too. I have to prepare my demoreel too, so watch out for that.

Well, I have to get back to work now, this post looks like a quickie post, but I cannot help it, it is the truth.

BACK TO WORK!!

Monday, 13 January 2014

Been really busy lately~

OK, first and foremost, I like to apologise for those of you who are awaiting on my 4th part of the dynamic hair tutorial (whoever is out there~), I have been really busy lately.

Busy with what you ask, well, I have been busy in updating the blog's pictures; mainly the pictures on the tutorials. Since I seem to be having a lot of images now, I thought of organising them in my storage device. It started out as a very messy process since all the images are everywhere. I had also renamed the pictures for a better tracking of them and organisation. I changed the tutorial files' names too and created an icon for the download.

Also, it seems as if i went crazy with my watermark, putting them in almost all the pictures in my recent tutorial. I thought it was a good idea to stamp it with my mark, like a signature. I took the blue from the blog itself and made the designs of the icons and signature myself.

Ah! At the same time, if you are a faithful follower of my blog (or if you are new), I would like to say that my blog is intended for desktop/laptop usage on the web browser and not intended to be used on phones. I did not setup the mobile version of the blog since the images are sometimes quite big and it is meant to be like that because sometimes the words are very small and there are a lot of them (example: outliner)

That is all for today, and yes, I am still working on the Part 4 of the tutorial, stay tuned if you are following me.

Tuesday, 7 January 2014

Oreintating Controls Using a Group

I talked about orientating controls in my Dynamic Hair Tutorial Part 4, I did not want to clog up the hair tutorial about other rigging things that I do. I figured I start another post talking about it, maybe I will be linking other tutorials here also.

In this tutorial (I would not really consider it a tutorial, more like a share session), I will be talking about how I orientate controllers (NURBS Curves) to joints/a joint chain; using groups above it and leaving the channels of the controllers empty.

First 3 things to understand, more like 3 situations to understand:


1st situation (top): Curve Oriented
Yay! You got it to point the correct way and the manipulator is pointing the correct way, however, there are values on the channels, which is not animator friendly when they want to animate. Animators would want all the channels to be clean and all to be zeroed out (except for scales).

2nd situation (middle): Freeze Transform
You try to salvage the situation by freeze transforming and killing the values in the channels. Although you killed the values, you have reset the manipulator to its parent (in this case it is the world)

3rd situation (bottom): Group It (new setup)
Since you made a group for the controller, meaning the group is the parent of the controller. At the same time, nothing is done to the rotation of the controller, meaning it will inherit the rotation (not values) from the parent group. In conclusion, you have got the controller to be pointing the correct way but at the same time you leave the channels values empty; best of both worlds.

Next section: I will be showing how I orientate the controllers to a simple rigged mesh and joint chain.

This is a simple FK arm I made up in a few minutes with the mesh following the chain.


Step 1: Create controllers (NURBS Curves) and place them on the place you want the controls to rotate about. In this case, I would put the controls on the same location as the joints. 

Step 2: Group each controller under a group and center pivot (or you can move the pivot of the group to set it the same as the controller).




I cannot show you that I have changed the pivot of the groups, but they are center pivoted.
(meaning same pivot as the controller that it holds.
I turned on the visibility of the local axis of the controllers so you know where are they facing.
Step 3: Either A or B, step A will require building another joint chain above the existing one, for deconstruction (so that you do not mess with the original skinned joints) while step B requires unparenting of the joints.

 Step 3A: Make a joint chain above the original (same position of joints) and orient joints for that, they should be in the same orientation as the skinned joints.
 
Step 3B: Unparent the joints from their parents as shown and note their rotational values in the attributes tab.


Step 4: Note down the joints orient (either the original skinned joint or the specially created duplicate).


Step 5: Copy the values of the joint orients to the group channel.

Values in the groups and no values in the controllers.
 Step 6: Parent the groups to the controls, the controls control the groups which control the control.

I think it is better if there is an image here:


The rest is just orient constraining the controls to the joints and that is all.


In conclusion, your controls will be pointing in the same exact direction as the joints. This works well for FK since the controls will rotate in their local axis transferring the same values to the joints, meaning no mixed values from axis (eg. x and y axis of the controller affecting the x axis of the joint)

I provided a file here if you need it for reference:

https://www.dropbox.com/s/0b6ew7ngl9xipz0/Tut0201.ma

I find this method very useful to orientate controllers in a rig, I do encourage your thoughts and opinions and if you have any critics, I'd be open to it, thank you for your audience and have a nice day.

All materials used were with the intention of education, please credit if you linked it here.