This blog has been moved to cesarsaez.me, sorry for the trouble.

Nov 17, 2013

cesarsaez.me

Hi guys,

In case you didn't notice, this site has been moved to cesarsaez.me, there's no automagic redirection in order to not break links but all post has been migrated.

This blog will not receive any update anymore.
Sorry for the trouble.

Sep 26, 2013

Why python?

Hey guys,

Yesterday night my brother (who is a 'real programmer') asked me 'why someone would use python?' and I didn't know how to answer.

I think python is awesome, an object-oriented programming language with 'batteries included', open source, great for prototyping (no boiler plate, mostly crossplatform, with a lot of convenient features and clever built-in types).... But in a broader context, well, it's a tough question.

Perhaps python's best feature is its Zen, it's the glue that holds it all together.

  1. Beautiful is better than ugly.
  2. Explicit is better than implicit.
  3. Simple is better than complex.
  4. Complex is better than complicated.
  5. Flat is better than nested.
  6. Sparse is better than dense.
  7. Readability counts.
  8. Special cases aren’t special enough to break the rules.
  9. Although practicality beats purity.
  10. Errors should never pass silently.
  11. Unless explicitly silenced.
  12. In the face of ambiguity, refuse the temptation to guess.
  13. There should be one– and preferably only one –obvious way to do it.
  14. Although that way may not be obvious at first unless you’re Dutch.
  15. Now is better than never.
  16. Although never is often better than right now.
  17. If the implementation is hard to explain, it’s a bad idea.
  18. If the implementation is easy to explain, it may be a good idea.
  19. NameSpaces are one honking great idea — let’s do more of those!

What do you think? What makes python so awesome?

Cheers!

Sep 10, 2013

Animation is concentration... and organization (slides)

Hi guys,

I'll be giving a lecture this weekend at San Luis Digital (San Luis, Argentina). I'll talk about how we use agile software development methodology on the rigging department during my adventures at Kandor Graphics and some basics of pipeline in animated films.

Here is a link to the slide deck (spanish only), there're plenty of animated gifs, memes and graphics so I don't think that language is such a big deal on this one.
LIVE (heavy on images, might take a while)
Repo

So, if you're going to be in San Luis this weekend please join us at SLD, it'll be fun :-)
Cheers!


By the way, reveal.js rocks!

Sep 9, 2013

Softimage.tv

Hi folks,

Some time ago Cristobal told me about his idea of a website showcasing the best work created with Softimage, I liked it and we started working on it until last week when we launched softimage.tv

There're a lot of amazing works done with Softimage but they are scattered all over the place, we want to fix this through a community-driven website showcasing the best works out there and making things easier for newcomers (not to mention producers, agencies and decision makers).

The community response has been HUGE (thanks guys), we have a lot of ideas to improve the site and add new stuff, but we still need your help.

If you ever created a tutorial for softimage, uploaded a test, done an amazing tool, have a showreel to show off, finished a good looking job, please help us by submitting it.

We would love to know what you guys think about it, and how we can move things forward.

Cheers!

Jul 19, 2013

Git For Softimage

Hi folks,

I've been working with Git as version control system on my developments for a while and thought it might be useful add some version control abilities to my softimage projects.

https://github.com/csaez/gitforsoftimage

It implements:

  • Commit history
  • Branching
  • Remotes

If you don't want to continue the 'incremental save' madness, or if you are looking for an easy way to collaborate with others in small projects, give it a try, it's free and open!

Let me know what you think,
Cheers.


By the way, if you're not familiar with distributed version control systems there are a few key concepts that must be considered, don't forget to check the documentation.

Jun 30, 2013

QuickLauncher

Hey folks,

Today I want to share a tool I've been using for a while, it's a simple menu to search and launch softimage commnads and scripts (you can set the script directory on the preferences).


In order to make it fast I'm caching the commands and script paths (just the paths, the script itself is loaded on runtime), so if you add a new script file or connect/disconnect workgroups please make sure that the cache is reloaded (there's a command just for that) and everything should be fine.

The menu requires PyQtForSoftimage and is available here.

Give it a try and let me know what you think :-)
Cheers!

Jun 25, 2013

RigIcon goes open source

Hi folks,
Do you remember rigicon? now you can get it from github!


There's also a brief documentation and a pre-packed xsiaddon in case you don't want to mess with the source code, dependencies and so on... if you have no idea what I'm talking about take a look at the old preview.

You will need PyQtForSoftimage installed in your system, other than that everything should work fine OOTB.

Cheers!

May 23, 2013

Justin and the Knights of Valour - Official Theatrical Trailer


Hi folks,

There's a new trailer for Justin and the Knights of Valor, a Kandor Graphics film where I had the pleasure of working as Rigging Supervisor.

Working on this project was an AMAZING experience, I was able to jump into the project from the beginning and participate in the design of almost everything rigging related, help shaping the character pipeline and work with some of the most talented/clever guys I've ever met (well done guys, you rock!).

I can't wait to see it in theaters... and don't forget to watch the trailer in HD ;)


Cheers!

May 7, 2013

Time to move on

Hey folks,

Just wanted to say hello, been a long time without news here :(

Well... where to start... I came back to my hometown (Santiago, Chile) a month ago or so, my time living in Spain was AWESOME but the project is over and it's time to start moving again.

In the meantime, my father passed away a couple of weeks ago. I don't wanna talk too much about it here, but it was a hard news to swallow.

Anyway... I have to move on and start doing things again!
I have a lot of unfinished personal projects waiting for a spark of motivation and a demo reel to make in order to start a job hunting. 

Let me press the reset button and I'll get back to you with better news soon.

Cheers!

Feb 11, 2013

RigLab: Preview #001

Hi guys,

Today I wanna share an early preview of the rigging framework I've been working on, there's still a lot of work to do but I think the core concepts are there.

Let me know what you think about it :)
Cheers!


Jan 10, 2013

RigLab: Naming Convention


Hey folks,

I've been working on the naming convention side of the rigging framework and I wanna share my take on this problem.

I know, this isn't the hotest subject to talk about, but as it's a so general problem I thought could be interesting for you too.

First of all: a disclaimer...

A lot of things I'm developing for this project are influenced by the way I'm used to work. I'm not trying to steal ideas from anyone, it's inevitable carry with me some concepts that I found interesting and make them mine.

Thanks to all who shared their thoughts on pipeline/coding with me along the years. Lots of inspiration comes from those talks!


What's a naming convention?

As you may know, a naming convention is just an agreement about the information and the format we will be using to define a name.

So, what's the big deal?


Well, let me break things up a little bit...

On the user side it's just a convention and we are clever enough to remember it, so it's completely up to the user assign names properly. Some studios provide sophisticated tools to help them on the task, but in my experience a simple renamer tool (string operations) with some batch capabilities is enough in most cases.


On the code side it's a completely different story, code/software is not smart enough to figure out a naming convention so we have to be very explicit about it.

One way to tackle the problem is just hardcoding names, we all have been there at some point. It just works, but turns out to be a really bad idea in the long run.

The conventions usually evolve/change between projects/clients, if you hardcode things then all your tools become useless unless you revisit the code and change everything name related.


The other way is create a layer to solve the names using the conventions and work with those names on your code, this way you have a centralized place where set the new naming requirements and all your tools becomes name independent.

I obviously recommend the second approach.

What has been done in the framework?

If we go back to the project goals, there is a specific one about naming convention, let me quote it.

The system will be based on metadata rather than any specific naming convention. The naming convention will be based on a config file in order to integrate the system on any pipeline (the same is true with colours, animation controls and all the standard rigging conventions).

At first I worked in a metadata API to store everything, but as the project progresses, I realized that access metadata is not user-friendly at all and it would be very difficult to trust the data if it's not updated by the user... and the system must assign a name to new objects anyway!

So in an unexpected turns of events, I still use metadata to store specific things but I also worked on a system that allows me use the data stored in the naming convention (which are much more likely to be updated by the user).

A cool thing about the new manager is that ended up being software agnostic, so it can be used in mixed pipelines too.

You can see how it works in the video below.



API Design


When it comes to naming convention is really dificult design an easy-to-use API, it's difficult because we have to specify every 'token' value but at the same time we shouldn't be typing any longer than the name itself.

In my experience if you're working with a too intricated API, the temptation to hardcode names tend to be too high (especially in scripting) and the whole system becomes meaningless.

Here are a couple of simple concepts that helped me to create an easy to use design.

  • Manager

If you don't want to be too explicit you are probably looking for a way to share 'global' information, in my case I decided to work with a manager as a layer for the 'naming resolution' stuff instead of just at a module level, this way I can work with some 'global' values instead of specified them each time.

  • Active Rule

The manager expect an active rule to work with, you can set/get the active rule at anytime. Using this way to deal with rules allow us be a lot less explicit on each name solving and let the manager do some clever stuff to figure out how to arrange the name using the incoming arguments.

  • Override

We can override default values at a manager level at any time, this becomes really handy when you're working on the same context and don't want to be explicit about every token on every name.


I hope this make sense,
Cheers!

Jan 3, 2013

RigLab: RigIcon tool

Hey folks,

This time I wanna share a preview of some rigging tools I'm working on. They're highly inspired by Softimage null's implementation but with some advantages that you can see in the video below (sorry for my english :P).


The csRigIconEditor GUI was a really nice exercise, it's a simple UI but as Softimage has no native PyQt implementation we have to handle the sincronization with the selection by ourselves. At the end was a lot of fun and I learned a couple of new tricks :)

I will be sharing this and all my tools with the first public version of the rigging framework, so they should be available soon.

Cheers!

Nov 23, 2012

Justin and the Knights of Valour - Official Teaser Trailer

Here it is... check out the first teaser trailer for the film in which I've been working on, has been a blast! :)

More at http://justinandtheknightsofvalour.com

Nov 13, 2012

RigLab: overview

I'm finally working on my rigging framework, I've been thinking about it for a long time and I finally have a clear picture of what I want as end result... and even more important, why I want it that way!

There will be plenty of new problems to be sorted out as I go with the development, but the overall design and workflows are clear on my mind now.

So, why a framework?

I already programmed 3 autorigs for different productions, 2 of them on 3dsmax (for advertising projects and a TV series) and the latest one on softimage (for a feature film)... The "autorig philosophy" allow us to work faster and helps to standarize things, but at the end it's not enough.

If you limit yourself to make a rig-builder/autorig, at some point it will be obvious that you're leaving a lot behind, the solution tend to be specific to the nature of the asset (bipeds, quadrupeds and so on) and sometimes it's difficult to update/expand it without refactoring the system. So we end up creating new autorigs to cover unexpected requirements (props, vehicles, environments, facial rigs, whatever) rather than unify and keep them under the same roof.

A framework lives in a much more general level and represents that roof, describes the way you manage/work-with rigs. The autorigs (I call them solvers) are built on top, so you always have control over your rigs no matter how they were built (including by hand).

Goals

In order to get this done in a reasonable time frame I've to set some goals for the project, the following list represent the main ones (in arbitrary order).

Metadata:

The system will be based on metadata rather than any specific naming convention. The naming convention will be based on a config file in order to integrate the system on any pipeline (the same is true with colours, animation controls and all the standard rigging conventions).

Multipose support:

The framework should allow us to define a rigging pose (by default will be the same as the binding pose). This is important because the binding pose isn't always the best for rigging/animation purposes (nonorthogonal limbs and stuff like that).

Macro support for solvers' creation:

This is HUGE! When you're on production and there's a need for a new kind of rigging solution, code it and update the rigging system isn't the fastest solution (sometimes it's not even possible). Support a sort of macro to facilitate the solver's creation will help to keep the rigging system alive and updated.

Non-linear workflow:

The rigging process is an iterative one, the system should allow us go back to the creation state for editing/updating. A rig is never really finished and we need a bidirectional way to work with them.

Robust API (application programming interface):

From my point of view the system has 2 clients: the gui (graphic user interface) and another programs/tools, the system should be able to work with both (this include batch processing).

Current status


The overall design and the workflow are finished (I'm still documenting, but I have a clear picture of how everything should work). Right now I'm working on the metadata manager and starting the multipose part.

There're a lot of work to do in order to get it up and running, but this time I really want to materialize these ideas into something useful, I will be working actively in the coming months to complete the project as soon as possible.

Hope to have something interesting to show in the next post, we'll see ;-)
Cheers!



Oct 29, 2012

DevManager: yet another plugin manager for softimage


Hi folks,

I've been working on a manager for my developments, something like softimage's plugin manager but better suited for my workflow (python modules for the logic and pyQT for GUIs).

When I was working at Kandor Graphics we had some similar tools (much more robust and sophisticated, of course), was one of the first things they tackled and turned out to be an excellent decision on the long run.


So, lets see some features...


csDevManager has 2 modes, the basic one works like a launcher for all my custom commands, nothing too exciting here.

The developer mode is where it gets interesting, in this mode you can see all the Addons/Developments and their plugins (including properties, events and almost everything you can register on softimage).

Through the context menu you can access the reload function, this allow you reload all python modules used in the addon, recompile the QT stuff and reload the softimage's plugin in one click (big time saver).

You can also edit UI files (using QT Designer), explore directories, create new addons, plugins and remove existing ones.

Another nice addition is a new sdk wizard with updated templates, this makes really easy create new plugins.

And at last but not less, you have access to an API that allows you do "everything" related to your addons, every you see in the GUI is doable via API in a OOP way.




I've to do some clean up in order to make it completely generic, I'll make a github repository with all my tools and share them as open source ASAP.

Next step: work on my rigging framework using all I've learned in the past years :)


Cheers!

Oct 5, 2012

Thoughts on editing

Just a quick tip...

When you make a tool, don't think about it as a 1-time procedure, editing will take most of the time and you should provide support for it.

I see this a lot!
Almost every autorig out there do not offer any control over the setups already created and rebuild is the only provided solution (which is not realistic in many cases).

So, think about it and make your next tool much more useful!
Cheers

Sep 24, 2012

Convex Approximation

Back to the basics!

I've been thinking about how to use a convex approximation to improve "volume preservation" on enveloped meshes and I finally had time to do a proof of concept.

There's a lot to do in order to make it usable in a production environment but seems to work!




More to come...
Cheers!

Sep 18, 2012

Holymonks' face rig

Hey guys,

I did this one a while ago but I never share it here, it's a custom tool designed to quickly wire up facial rig for an animated tv series.

The rig itself has nothing special but it worked fine for their needs/schedule constraints, so everyone happy :-)

Sep 17, 2012

fStretch-like deformations

Hey,

Some time ago someone asked in si-community.com about how to replicate some deformations seen in a nice demo from Clovis Gay (who is also inspired by the fStretch plugin for Maya) so I decided give it a shot and here are some screenshots.




There's nothing faster than ICE for this kind of prototypes, love it! :)

As a side note, I'm working on some personal projects mostly for Softimage but I'm also giving a closer look at pyMel (not as bad as I remembered). Still early but seems possible make them cross-platform, imply some extra work but seems like a nice oportunity to learn a lot about Maya, we'll see...

More updates soon, stay tunned
Cheers!

Aug 26, 2012

Back to work


I think I have enough sun and beach this summer and it's time to get back to work!

Unfortunatelly I can't show anything from kandor graphics (my last 4 years of work are "production locked" until next year), so the plan is start to work on a RnD reel since September until the end of this year.

But it isn't a bad thing at all, it's a great oportunity to develop some ideas and tools I have in mind since long time ago, when you're in production it's really difficult try new things and now I really wanna take that oportunity. I have a good feeling about this :)

So I hope start posting again here and on my vimeo channel like in the good old days.
RnD, there I go!

Aug 16, 2012

Honda Oddysey

I just found a TV commercial in which I've worked long time ago, I did the generic character rig and the jellyfishes.

It was a remote work for Gizmo, good job guys!


Jun 20, 2012

Closing cycles

Hi folks,

Long time without any update, sorry about that :-(

As you may know i was working on Kandor's next feature film... and yes, 'I was working' because I decided to take a break on my carrer, at least for a few months, and try to find myself again.

In the last years I learn a lot as rigging supervisor, my role changed from be working on technical stuff to work with people's motivations and manage crisis on a production environment... the downside is I'm not sure if be 'a manager' is what makes me happy. I really miss the old days being the 'smart guy', looking for clever solutions to some rigging related thing or whatever... I don't know, lately I wasn't having fun with my job anymore and I felt lost.

Anyway... it's too early to make any conclusions, the only thing sure is that the last 3-4 years at Kandor have been awesome and I'm really thankful to everyone for that!

I'll miss you guys :-)


Plans for the future?
I don't know, right now I just wanna rest and take some time to think about all this... maybe in the next entry.

Cheers!

Feb 13, 2012

RollUp Prototype

I love ICE!

It's so fast/easy make a prototype for a custom deformer (or whatever) on it, it's so powerfull... I think just for that Softimage is one of the best 3D softwares in the market... a true life saver :-)




I really wanna start to work in the rigging framework/pipeline for our next project, ICE Kinematics will be our rock star for sure! :)

Feb 6, 2012

When was the last time...

Last week we had a very interesting talk on this issue. Seems like when you're working on a project for so long, sometimes it's easy to feel lost and this question comes to the surface quite often...

So, when was the last time you felt proud of your work?

At the end, we all agreed it's all about "can't see the forest for the trees".
You have to get out of the forest to see it, because while you are in the forest, you only see the trees that comprise it; but you can't see the forest as a whole.


Yes, I know what are you thinking... really basic, right?
And I agree with you, but sometimes is good to know we're not alone and if we continue doing our best, tomorrow we'll be proud of today's work :-)

Cheers!

Jan 29, 2012

Rigging lecture at UGR

Hey folks,

The last weekend I gave a lecture on rigging at UGR (Granada University), was a nice experience even though prepare the program and the class material was not as easy as I thought, but in the end everything worked fine and everyone learned something new :-)

Lately I'm really busy at Kandor (crunch time) and find some time/energy to do CG related things at my spare time is harder than ever... but I'm trying and maybe this week I finally finish/release a little tool for Softimage.

Nobody said this was going to be easy, right? ;-)
Regards

Nov 3, 2011

OneUndo decorator

Hi folks,

I'm posting another entry from my old blog, this time it's a decorator for Softimage that help us to wrap all the calls inside a function in an unique undo.

The decorator itself should look something like this...
And a basic example...

Have Fun!

Sep 30, 2011

Demo Reel 2008

Hey folks,

My old demo reel ... there are some things I would do differently but this comes from the me of 2008 ;-)

Me and myself


Me me me me me... and myself.

Just kidding.... I'm rescuing old posts (you know, restarting the site once again) and found this interview from the guys at Eje-Zeta.com in which I share my experience as a self-taught (so far).

By the way, spanish only...

LINK

Blog hacked, again...

Hi folks,

Yes, it happened again and I still don't get it :(

It doesn't matter... all I can say is that I'm going back to Blogger for the safety of my post, right now I'm not so motivated to write my thoughts anywhere but who knows, maybe things will change...

Cheers!