Thursday, September 29, 2011

Having fun with Pinocchio

So Pinocchio is a really fun tool. I've been playing around with it, and I'm surprised at how quickly it processes everything. Basically Pinocchio, which is the auto-rig tool I'm going to try and incorporate into my project, takes an OBJ file, takes some really complex txt files (that define the movements) and creates the rig and walk-cycle for different models. The code I downloaded comes with two models, a low resolution model with about 900 vertices and a higher resolution model with 4000 vertices. They both run pretty quickly, so I'll be interested to see if a more complex model works as well. I am currently searching around for more models to test the rig tool with. Here's a short video of me testing out the different models.


I've realized from this that it is very important that the movements and rig fit the model. Because while the cheg model (the weird mouse-ish model in the middle section) moves exactly like the lower resolution model, it looks very strange to see it try to hop around with one leg. The model is all floppy, and it just creates a very creepy and unrealistic movement to me. Even though the low-res model is not that great to look at, I would rather watch him walk and jump around than the cheg model. So doing these demos has really reinforced that idea for me, which I think is good, because now I have a clear direction to head when it comes to rigging the models.
Also, I realized that I need to get a better video of actually watching the rig set up. When I find some new OBJ models, perhaps I'll get a chance to see more of the auto-rig in process.

Besides playing around with Pinocchio, I've been setting up my framework for Maya. I'm currently writing my code in a OSX system, but I'm wondering if I should move everything to Visual Studio (since Pinocchio is set up for VS2008) since it'll be easier. However, I'm not too certain how that works with compiling Maya. I've generally compiled and built the .so files that Maya imports as a plug-in through linux, so I'll need to quickly decide on how structuring the files is going to work out in conjunction to Pinocchio. I'm guessing I will be able to create a function within my plug-in that calls the auto-rig functions found within the .h/.cpp Pinocchio files, which will go around the whole process of compiling in Visual Studio. That's probably the best idea.

This coming week I'm going to continue with research and try to get in contact with Nancy Pollard, who has been doing research in a very similar area to this project. I would love to hear her input on my work. Also, I'm going to start to gather actual data for this project that will be the basis of the walk-cycles.

Good night, folks!

Tuesday, September 27, 2011

Design Pipeline

I designed the general pipeline for the project's interface. Check out the picture below for a visual representation. Basically, the code will be divided into the Maya part, where the values are inputted by the user. From there the data (a bunch of numbers) will be processed by the Maya API and inputted into the algorithms I've created (C++ as well) to determine which data to call upon. At the same time, the model data will be inputted into the Pinocchio rigging code and be processed for rigging. When the movement setups have been determined, that will be inputted into Pinocchio as well to finish creating a rig and attaching it to the model. Finally, with the rig set-up, we can take the rigged model and the data we've processed and create a walk-cycle through MEL script, which will be displayed on Maya.

Thursday, September 22, 2011

Long Week

Hey all!
This week was a topsy-turvy sort of week, with the death of my cat on Saturday, finding out I probably have an internship with DreamWorks this semester to continue my work from the summer, and then getting sick. Regardless, I did manage to do a bunch of research for this project.
I started off looking at the official website for Maya C++ API and MEL scripting, trying to get reacquainted with how to set-up a plug-in, which I will dive into writing the framework for this weekend. Joe also sent me two websites that give some really good explanations of programming techniques in MEL and Maya API, so those have been extremely helpful in teaching me good Maya programming techniques which will be necessary for the final product to run smoothly.
I've also been looking over the code for Pinocchio, the automatic rigging tool developed by MIT. I'm considering if it will be possible to incorporate their code into my framework, and how much of it will be useful. They provide meshes that one can rig, which could be really good starting meshes for the earlier testing of my plug-in. Though I won't use this one, it's kind of creepy:
Besides research and looking at ways to set up my framework, I've been working on figuring out the system architecture of my project. Since there's going to be a component of using background data and then pulling out the data based on inputs, I'll need to figure out how to create those algorithms and incorporate into my plug-in. I have a good idea of how each part of my system will fit together, but I still need to draw it out on photoshop and post it on here. I'll probably be able to finish that when I start setting up the framework this weekend. Expect a post sooner rather than later this week.
Once I've set up the framework, I plan on looking at a lot of data. I still don't know whether it will be better to collect data about different movements through mocapping, or if I should look for videos and find relative examples. For instance, I've been heavily influenced by the work of Body Motion Lab, which could be a very useful source of data.
Anyway, here's to coding, data gathering, and diagram making this weekend!

Wednesday, September 14, 2011

Abstract

Walking is a normal day-to-day activity that most people rarely think about – people just walk. They always have, and they always will. However, walking requires using many parts of one’s body, besides just the legs and feet. This movement is affected by one’s overall body type and structure. This project is about exploring how phenotypes can lead to different ways of movement, specifically walking, among human beings. The project will look at creating rigs for human models of the desired body type within Maya given by inputting values. This will require knowledge of creating Maya plug-ins, how rigging is set-up within Maya and the data necessary to create believable walk-cycles for the desired body structure.

Due to the Maya-based nature of this project, knowledge of setting up Maya plug-ins is very important. Using knowledge gained from the summer, I will create an interface that will allow users to customize given parameters, such as weight, height, gender and age that will help create the walk-cycle. The inputted values will then use the underlying data and algorithms to help determine how the character’s rig is setup and how the character will move realistically. This will require knowing how to setup a rig using MEL scripting, as well as Maya’s API for creating a Maya plug-in. Also, I will need to gather data such that my tool can provide natural results. I hope to present a realistic and useful tool that will help to make an aspect of animating characters within Maya a little easier.

I will make a post introducing myself more personally tomorrow. First I must finish up my design document!