Friday, January 29, 2010

Some Progress (Mach II)


Featured in this video, we have...
  • 139 key hairs (generated from the geometry of a decimated input mesh)
  • Demonstration of the ability to control a dynamic rigid body's angular/linear velocity with keyboard input
  • Nullification of gravity
  • Removal of the oscillation caused by the "springs" that keep the hairs anchored to the head
Goals for the weekend:
  • Generate key frame data that specifies the position and orientation of a "master control node" at each frame (for example, a nod would be approximated by a change in node orientation every x number of frames); save this data in a file ("nod.kf")
  • Parse the .kf file and store its data in a dictionary whose keys are frame numbers and values are position/orientation vectors
  • Develop a simple GUI that allows the user to change the position/orientation of a rendered master control node according to the parsed .kf data (i.e. "play" a .kf animation)
  • Plug Bullet into the GUI and use control laws to extrapolate the linear and angular velocity necessary to move the head rigid body so that its position/orientation matches that of the master control node (rendering the head rigid body isn't necessary, but it would be lovely to implement for debugging purposes)

Thursday, January 28, 2010

Rendering Options

Here are the two papers/videos that I've been reading over to get a sense of the different hair rendering techniques out there (click on the pictures to watch the presentation videos).

Zinke's "Dual Scattering Approximation for Fast Multiple Scattering in Hair"

Scheuermann's "Practical Real-Time Hair Rendering and Shading"
Granted, I don't need to implement each method in full. For example, I could implement a single scattering (specular) + diffuse method, which is discussed in both papers (even though the first one uses it as a basis for comparison). As far as whether or not I'm going to render by strand or by strip, I'm not sure. I was originally planning on rendering each Bullet soft body hair as a LOD strip in OpenGL. One thing that I didn't consider before, however, is the interaction between key hairs in Bullet. Are collisions between the soft bodies being registered? It's difficult to tell. I don't think they are. It's important that I figure out how to turn on collisions between them, because intersecting strips are more obvious than intersecting strands (and even if I didn't have polygonal strips, lack of hair-hair collisions would cause the hairs to lie flat on the head...do not want!).

Monday, January 4, 2010

Inspiration Is Out There

Even though I've been taking it easy over winter break, I'm still constantly looking for examples of cool hair simulation (even though it's not real-time). For example, Susan (from Monsters vs. Aliens) had some pretty cool hair. Kept me interested in the movie. ;-)