February 1st, 2014

For this senior design project, I am making an online version of the posable wooden mannequins used by artists. As an artist myself, I have found myself in situations where I have wanted and needed a model and haven't had one on hand. Searching online yielded no flexible posing apps that gave the user the ability to fine tune the position of a model. Many mannequin web apps only let the user choose preset poses, or move joints to 2 or 3 predetermined positions. Additionally, the posing apps typically used Woody style mannequins, and as such did not have any muscles to show definition or distortion as the character moved. Any posing systems with more features and flexibility required a download and typically were accompanied by a large price tag. I intend to create a web app that will give users the ability to (1) select from a range of predetermined poses, and (2) move the joints of the mannequin to fine tune the pose. In this app, the mannequin will (1) have a wide range of motion, while (2) constraining each joint's movement to match that of real human, and (3) show realistic looking muscle definition as the mannequin is moved.

This week I worked on focusing my initial idea down into a more feasible and concrete project for this semester.  Instead of creating a muscle system to limit joint motion and show muscle definition, as I had initially planned, I decided to use spherical joint limits to limit motion and skinning to add the muscle detailing.  This decision was made after learning that using a muscle system would likely take me most of a semester to implement, and would prevent me from creating a full body posable mannequin in my app.  Because I believe having a fully posable mannequin in full featured app is more important that being anatomically correct in the building of the mannequin, I decided to find different methods to achieve the same desired results of the muscle system.

Additionally, I spent most of my time researching and experimenting with WebGL this week.  As I have never used WebGL before, I looked up a couple of different tutorials online and found a few highly rated books to use as reference.  The main tutorial I began working through was "Getting Started with WebGL" on the Mozilla Developer Network.  I expected to get past rendering simple 2D graphics this week, but ran into silly errors caused my shaders and matrices not being read properly by my JavaScript script.  Eventually, I was able to get a white 2D square to appear on a black background (viewable under the Senior Design Demo tab).  

In addition to this tutorial, I picked up WebGL Up and Running by Tony Parisi from the bookstore.  In skimming through the content, I realized that using a JavaScript toolkit like Three.js will allow me to more easily set up my camera and user interactions so that I can spend less time implementing these more standard aspects of my project, and more time implementing the more complex kinematics, joint limitations, and skinning.  As such, I'm hoping to learn about 3D objects, and get user interaction and the camera set up by the end of next week.

I've also ordered Professional WebGL Programming: Developing 3D Graphics by Andres Anyuru from Amazon, and am expecting it to arrive within the next couple of days.  As WebGL Up and Running focuses more on getting readers up and running quickly on WebGL through the use of Three.js than on the explicit details of 3D graphics programming, I decided Professional WebGL Programming would fill that gap.