Gearing up for opensource film making using blender

blenderlogo

Finally, an end to the silence.For those of you who paid visit to this page more often, I hope the passive state that existed for more than two weeks didn’t disappoint you. Been there at the python conference that was conducted for the first time in India, the enthusiasm from the open source fraternity urged me to explore new realms of film making too. The days that followed were spend at the doors of google with just one goal; To come up with the best available tool set for open source film making. And all the doors led to one ultimate tool, BLENDER!!!. Even though I used to keep track of the recent advances in this wonderful animation package, the enthusiasm couldn’t be carried over to the next level since once you get back to work, you were always provided with the ones from software giants like Autodesk. But Pycon ignited a new fire in me to explore more in this direction and come up with a feasible solution for use in production. It was quite inspiring to find lot of actvity going on in this direction in online forums. Among those the one which caught my attention the most was the Blender to Renderman Artist Tools. I had a tough time getting a copy of the same since there were torrent links that were having very few seeders and also the ISO link that was provided was not working at all. Anyways now that I got a copy with me I thought it would be better to make it available for the ones who are already looking for a copy.Below listed are the contents of brat .5 rc2.

Compiled and sources of Blender 2.48, Aqsis 1.4.2, Pixie 2.2.5
Mosaic 0.2 Beta
Python 2.5.4 (installation for Windows – Linux already has it)
CGKit 2.0
Shaderman 0.7 and ShadermanNEXT
SLer
Shader sources (hundreds of them!!)
Shaderman shader projects
OpenEXR 1.4.0 (Windows install, Windows and Linux source)
OpenEXR 1.4.0 sample images
Dr. Queue (compiled and source)
Cutter
GIMP
Cinepaint (Linux only!! There is no recent Windows build)
Documentation from Pixars Online Research library as well as SIGGRAPH papers
Crimson Editor (Windows code editor)
Dev C++ and MinGW (Windows only, Linux has gcc which is the basis for all Linux builds)
Python scripts for Blender (various usefull ones not released with Blender)
Voodoo (for visual effects camera matchmoving)
Blender files (examples and test files)
Some usefull textures

You can download the ISO here or using the  the widget  on the sidebar

Pycon India 2009-day2

The main attractions of the day 2 were the talks on .NET and Python and also the Road to InPycon 2009. The talk on .NET gave an overview of the use of IronPython, thus utilise the best of both worlds. The talk covered what Dynamic Language Runtime and Common Language Runtime meant in .NET and how they could be put in to use while dealing IronPython. The second session turned out to be quite inspiring one for the python fraternity in india with a presentation on what went behind the making of Pycon India 2009 a success. The conclusion was that there needed to be more regular user group meetings and time in order to organise an event like this. The message was clear. We need to keep this going in the coming years also.

On the other side of the globe, with just two days left for the Pycon US 2010 proposals, pythonistas around the globe are awaiting the conference to be held at  the Hyatt Regency Atlanta in downtown Atlanta, Georgia from February 17 through 25

Pycon india 2009-day1

Before I go in to the details of the talks of day1 of Pycon India 2009, I would like to congratulate the volunteers for putting the effort to make this event  a success by bringing in professionals and students across the country for this wonderful event held at CSA Lecture Halls, Indian Institute of Science, Bangalore. The main attractions of the first day included talks on buildout, design patterns in python and also on the idioms and several language features that very few people were aware about. There were other sessions also which received considerable appreciation from the audience, but since those were conducted simultaneously in other halls, I had to make a choice between them so as to make sure the day1 turns out to be beneficial enough for me.

The talk on buildout turned out to be quite an informative session for me with the speaker shedding light on the various features and also the process of setting up a successful build system for develpment and deployment of application from multiple parts, some of which may be non-python based.

Most of the slides of the day1 have already been uploaded in the Pycon India 2009 website.You can browse the slides here.

ak_rgbMatteTool.mel

ak_rgMatteTool

This is the tool I created for easy assignment of RGB Mattes for the objects in the scene during the maya render process.For those who havn’t used RGB matte passes in render, RGB matte passes help in extracting individual 3d elements from a maya scene render containing multiple objects. This handy tool helps in creating mattes for ambient, diffuse, Incandescence, and reflect channels with the click of a button.

The usage of the script is as follows
source ak_rgbMatteTool.mel;
ak_rgbMatteTool();

you can download the script here

MADAM Login dialog using PyQT

loginUI

One more addition to power up MADAM.But this time in the form of a GUI.Ok, I am not claiming this as a considerable achievement.But this being my first dialog in PyQT, I thought I should post it here just in case someone who is new to PyQT might find it useful. After collecting inputs from my colleagues regarding MADAM, everyone had the same opinion that they don’t want to type in to a console at any cost.They needed a neat and tidy interface that would be comfortable working on. So started off with a dialog, with just a QLabel, QlineEdit and two QPushButtons to get the job done.The next step was to set the echoMode for the QLineEdit to prevent the keyboard entry being echoed in the field. I couldn’t get it working in the initial try since I was trying to pass a string to the setEchoMode method while on the other hand it was supposed to enum.This is the format for setting the echo mode.

passwdTxField = QLineEdit()
passwdTxField.setEchoMode(QLineEdit.EchoMode(2))

Finally a QHBoxLayout for the two QPushButtons and a QVBoxLayout for the main dialog, the loginUI was ready to use.

Maya Muscle Smart Collision Test

This is one of the demo videos from the Maya muscle smart collision test, which I  have been doing for the past few days.My initial plan was to start of with the skinning using Maya joints itself and convert it to Maya muscle system.But later I changed my mind and decided to go with rigorous testing of all the options provided by the Maya muscle menu set.Even though I had a glimpse at the options during the release of maya 2008 extension 2 itself, this was the first time I got to explore the skin weight options provided by Autodesk. Believe me, Autodesk has packed a lot of options keeping in mind the immediate need of a character setup artist that you will never want to go back again.

This one is the image of the muscle setup I used for testing the deformations.I didn’t spend much time on sculpting the muscle shapes.The target was to simplify various muscle groups in to one which would provide me enough options to test out the deformations.

maya_muscle_arm

Of course there were some bugs here and there which I found quite irritating, I was fortunate enough to find some solutions to them.

1.Maya was retaining the selection of the first muscle objects created showing some garbage values in the channel box.Unless you undo the first muscle and start it all over again, Maya wont show any signs of defeat.

2.Maya would end up in a fatal error if you ever happen to scrub the time line once the muscles have been bound to the mesh.This can of course be fixed by caching the geometry, But users like me who got accustomed to  skinning the models by setting keys on the joints, are left with no choice other that creating floating GUI to control the joint rotation without deselecting the geometry.

Overall the collision feedback is fairly good with lot of skinning options  to control each invidual portion of the geometry.

Managing user accounts inside MADAM

This was the first task I thought that should be done in building an application that is being accessed by multiple users from different departments.Even though  setting up the database and creating user accounts with MySQL administrator was not a difficult task, I didn’t wanted to overload the system with too many user accounts.Instead, I designed a table with a unique user Id and a Password entry.The next step was to create a dummy user who will have SELECT,INSERT and UPDATE rights.The basic idea was to compare the entered password against the existing entry and it it turns out positive, use the dummy user to enter data in to the database.

madam_login

The next step was to store the password in an encrypted format.Thanks to the wide variety of encryption and compression functions offered my MySQL. Decided to go with the Advanced Encryption Standard which can be accessed through two simple functions AES_ENCRYPT and AES_DECRYPT.With encoding support of 128-bit key length this one is the most robust algorithms available today.The syntax for the command is as follows:

AES_ENCRYPT(myPassword,key_string)

AES_DECRYPT(string,key_string)

The next step was to provide the functionality of changing the password by the user.Since I was still relying on the console for the password entry, it was too inconvenient to have the password being typed displayed on the screen.The problem was I was still using the raw_input function to get the user input which was not advisable especially when it comes to passwords.So had to seek out another means to get the user input and here I was crawling through the python manuals to get the job done.Fortunately, I came across the in-built getpass module.This allowed to get the user input without showing on the screen what the user was typing.The syntax is as follows:

myPassword =getpass.getpass(‘entered password’).

The interesting thing about the user account section was that I found myself drifting towards encryption standards and algorithms used in practice.Having read Digital Fortress by Dan Brown recently, I found topics related to encryption so fascinating that my I found it hard to close the google search pages.So now its time to get back to MADAM and proceed to the next phase.

MADAM development kickstarted…

MADAM…that’s the name I chose for my new assignment.Although it may sound confusing at the very first place what sort of an assignment that could be, its nothing more than a handy(or the way I expect that to be) application for asset management.You guessed it right, MADAM stands for nothing other that Modular Animation Digital Asset Management.This one stands out from whatever I have attempted in my entire career in terms of the scale of the project. I havn’t set a deadline for the proposed finishing of the project since I am not sure about the free time I will be getting from my work schedule.Another reason is I am still through the learning phase of application development.But that doesn’t mean that this will be in a work-in-progress stage for years to come.

Here is a list of the tasks which I am planning to handover to MADAM:

1.Job Tracker for assigning and keeping track of the tasks.

2.Daily Publisher for publishing the work for daily review.

3.Integrated messaging system for easy communication.

4.Customizable home page to favor easy access to frequently accessed data.

5.Message board for sharing useful resources.

6.Project wide report generation at any stage

These are some of the tasks which I have planned to implement as of now.Gotta see how far I can go in to implementing these features.

Coming to the technical aspects,The core of the application will be powered with  python2.5 for the programming part along with pyQt4 for the interface design.The database will be MySQL ofcourse I had to choose this one among its opensource counterparts(had planned for PostGreSQL in the beginning, but switched over to MySQL since there was limited documentation available for the PyGreSQL module.).Thats it for the time being.Hope that will help me carry out most of the tasks which I have planned so far.

Reinvigorating weekend

I couldn’t get a better tag to define the last weekend, off the city limits.Had a long ride to a coastal village along the shores of Bay of Bengal.Kickstarted the journey on saturday morning.In a couple of hours we were outside the city limits, thanks to the relatively less traffic.Got down at Nagarjuna Sagar Dam on the way and took some snaps.In a few minutes we were cruising through the countryside.The climate became more pleasant with the advance of the journey as it started pouring in.It was quite surprising to see heavy rains in that part of the state while the city was still torrid.Got down at one of those punjabi dhabas along the NH5 stretch.Got our bellies loaded with enough stuff.Reached the sea shore by around 7, just missing the opportunity to get the snaps of sunset.But the good part was that we had one more day left to explore the place.The next day proved to be even more interesting with the whole day being spend in the sea.By evening we started off from there reached city in the wee hours.

Its quite common that you feel you are missing good things in life when you come across such pleasant moments in you life.But the good part is that if you come across them quite often you fail to realise the worth of those.

Duty calls, and now its time to get back to work.And here too things are  going to get interesting(or even more interesting ) in the coming days.This time the task is to setup a proprietary tool for Digital Asset Management.So thought of starting a development blog for the same.But confused at the point whether to start a new one exclusively for that or to stick on to pragmatic artisty only.

I couldn’t just get away without putting any visuals, ofcourse it gives me a heartburn when it comes to text-only posts.Just posting some random snaps taken during the journey.

And this one, a panoramic image taken by my friend.Got all the images stitched up in photoshop.There are some artifacts here and there.But considering this one was taking without a tripod setup,it certainly deserves appreciation.

nagarjunasagar

strechy ik with variable autostretch tutorial

This tutorial will demonstrate the procedure to setup a stretchy ik setup in maya using utility nodes.The procedure involves the use of maya utility nodes (clamp,addDoubleLinear and multiplyDivide) to setup a stretchy ik chain with custom attribute autostretch that will allow the animator to predefine the extend to which the joints get stretched.

you can download the example file here


Follow

Get every new post delivered to your Inbox.

Join 28 other followers