Thursday, April 29, 2010

Future Optimizations

Things I Obviously Don't Have the Time to Do Now, but Would Make Version 2.0 Much Nicer:

  • Re-write code to use clusters, rather than lattices. Clusters are less visually obstructive.
  • Rather than connect attributes of the FigureDataNode to the Lattice attributes, it'd be better to have the FigureDataNode possess just an attribute which links to the mesh it is relevant to. That way, the Lattice (although, now Cluster) attributes aren't locked. After all, the FigureDataNode is just storage. It holds the sketch information after the sketch is disposed of by the QT Application closing.
  • If each FigureDataNode possesses a mesh, we can pass the DAGPath to a mesh as an argument into our other commands. This would let us operate on multiple meshes in one file.
How I'd Add Skeletons:

  • Make a Lattice around each Cluster. (This could be a problem, given lattices are axis-aligned. This could be solved by keeping the current Lattice structures but making them invisible.)
  • Find its translation matrix. (I actually did that yesterday for adding wires, and then realized I didn't need it.)
  • Create a joint at (0, scaleY, 0) and (0, -scaleY, 0).
  • Apply the lattice's transformation matrix to the join.
So much I've learned, not enough time to make what I want to. And there's a lot of trash accumulating on my desk...

Wire Deformers

Hey, guess what doesn't work! Wire deformers!

Wednesday, April 28, 2010

Tasks, Everywhere! Tasks!

Caffeinated. Very caffeinated.

I'm working on implementing wires, but for now, cleaning up my to-do lists...

Major things:
  • Add a Maya command to attach wire deformers, based on projects from the lattice boxes.
  • Add a Maya command to rig and bind a skeleton to the mesh, based on the center points of the top and bottom faces of each lattice.
  • Write the light behavior equations for the tissue layer shader. (I have to do this anyway.)
  • Attach tissue layer shader to model and write a MEL script GUI to allow editing of pigments and layers.
Minor things:
  • Find how to make the FigureDataNode-Lattice connection two-ways. This may not be possible, in which case, the connection will simply be broken.
  • Divide figure into more parts to accommodate the Thalmann measurements: neck, waist, lower arms, lower legs, hands, and feet. However, I am not sure if they should be specifically tagged or not.
  • Re-implement properly scaled translation and rotation of lattices, around the correct pivot point.
  • Re-implement translation and rotation based on the slope of the drawn curve at certain points.
  • Drawing interface should erase curves. At the moment, it just paints them over white.
  • Drawing interface should use an ink drying metaphor, where multiple nearby strokes are averaged into one.
  • Drawing interface should not assume strokes are drawn in a particular order or direction.
  • Accommodate multiple figures and selection.
  • Re-implement things with clusters, not lattices.
  • Clean up C++ code and node attributes, so it's not calling MEL commands.

Tuesday, April 27, 2010

Scaling Figure Sections.

Been working on physics-based animation this weekend, but here is current progress with the sketch modeling. I turned off affecting translation, and scaling is now relative to the original size of the imported tagged mesh. This way, the size of the sketch dimensions does not affect the model, so it will still be appropriate for other assets created in the same world space.

I think I need to re-tag the skull area so it doesn't contain the neck, but I like how things are looking, especially with the hips. However, I am concerned with the rotation, especially of the limbs. It should be at the pivot point of the shoulder, not the middle of the arm.

Unless I can think of a way to make the relationship two-way, I think - despite having gone through major trouble of connecting lattices to the FigureDataNode - I should break the connections. This way, the model can be edited manually by lattice.


Because I almost lost the paper I wrote these ideas down on, I am now going to make an two impossibly long to-do lists, sorted from most to least feasible. First, major things which add to overall concept of the project:
  • Add a Maya command to attach wire deformers, based on projects from the lattice boxes.
  • Add a Maya command to rig and bind a skeleton to the mesh, based on the center points of the top and bottom faces of each lattice.
  • Write the light behavior equations for the tissue layer shader. (I have to do this anyway.)
  • Attach tissue layer shader to model and write a MEL script GUI to allow editing of pigments and layers.
Now minor things, which aren't necessary to the project concept, but help refine current ideas it poses:

  • Find how to make the FigureDataNode-Lattice connection two-ways. This may not be possible, in which case, the connection will simply be broken.
  • Divide figure into more parts to accommodate the Thalmann measurements: neck, waist, lower arms, lower legs, hands, and feet. However, I am not sure if they should be specifically tagged or not.
  • Re-implement properly scaled translation and rotation of lattices, around the correct pivot point.
  • Re-implement translation and rotation based on the slope of the drawn curve at certain points.
  • Drawing interface should erase curves. At the moment, it just paints them over white.
  • Drawing interface should use an ink drying metaphor, where multiple nearby strokes are averaged into one.
  • Drawing interface should not assume strokes are drawn in a particular order or direction.
  • Show and hide lattices and wires on different layers.
  • Accommodate multiple figures and selection.
  • Clean up C++ code and node attributes, so it's not calling MEL commands.
However, given my time limit and need for proof of concept, I'm solely going to focus on the wire system for now.

Wednesday, April 21, 2010

Tagged Mesh

I was feeling a little under the weather tonight, so I just properly tagged the Nancy model. Now if I need a model, I don't need to tag it again, I can just load this directly. It also only took me a half hour to do the tagging, proving how efficient this system can be despite its simplicity. My GUI, however, is still ugly.

As intelligently requested, here's the tagged model and the sketch which resulted in the figure. Minus the rotation pivot which is causing awkward translation of the limbs... this is right. I really like what it did on the ribcage-pelvis area.


I feel I need to, though, before anything, scale the figure down to match the sketch percentages before sketch-stylization since, right now it's rather large (say 40 world units while the sketch canvas is 10).

I then don't know if I should focus on wires (more proof of concept) or making the sketch system more robust (handling erasure, multiple strokes) or making the mesh distortions smoother.

Tuesday, April 20, 2010

I should make zombies.

The GUI is in this picture, and well, it seems to be working. This isn't properly tagged (so some vertices weren't recognized in the groups). I now need to fix the translation on the limb boxes.

Oh, god, it looks so gross.


I feel posts are a good way to tell myself waht to do next, so once I get this to be less horribly distorting: adding wires and adding bones. (And that, you know, shader and that SIMBICON implementation for my other classes.)

... so gross.

Scaling Issues

Joe says I blog in spurts. This is true. Anyhow, made a GUI (not pictured here), but it loads a model (default model if unspecified), the user tags different areas (if they are not tagged already, or they can re-tag areas), and manipulates it based on the sketch. The scale between the figure and the sketch is off...

Also, need to fix how it's putting each new lattice inside the previous one...