Week 18

Skeletal Animation - Phase 1

Implemented the first phase of skeletal animation setup. The previous version of the skeleton rendered the joints in the same parenting system as traditional objects. If the joint has a parent, it would draw the bone between them. The problem with this resulted during transformation because the transformation would affect the entire bone and joint. To overcome this problem, I saved the current transformation matrix that would be calculated with the current joint. Using Matrix math, I transformed the joint position into its new position. The bone is now drawn from the parent joint's transformed position to the new joint position. After drawing the bone, the transform is applied to the matrix to affect children joints. In the near future, I want to implement a matrix class and calculate the transformations rather than taking advantage of OpenGL's approach. This should improve rendering times because OpenGL matrix commands are known to be expensive.

 

Raina Tracer - Create Objects

Raina Tracer now allows the user to create new shapes and lights. The current version supports creating spheres, planes, point lights, and sphere lights. Other objects and lights will be implemented soon. I still need to implement a Create New Scene, which shouldn't take too long. This will complete the scene manipulation since the user will be able to create a new scene, load a scene, and save a scene.

 

Raina3D - Singletons / Code Maintenance

Since Raina3D is a more involved project than Raina Tracer, implementing singletons require more changes. By ensuring that several of the GUI components are singletons, a great deal of the actual code is free from references and confusion of possible multiple windows.

Create and edit objects widgets (forms) have been implemented as Singletons as well as enforced into a dock widget, which allows the form to have docked along the right hand side. I created several scripts which made the docking process more dynamic and cleaner. Only one right-handed side dock can exist at a time. Upon loading a new dock (exp. Create Sphere), the current dock is closed and replaced with the new dock.

 

Transformation Cleanup

A bug that was introduced during the creation of the Graph Editor updated the current transformation node at will. Each object has a transformation object, which contains a current transformation node that points to its current frame. I noticed that during the Skeleton Animator and the Edit Shapes form, that the transformation would only apply if there was at least one key set. This removes all consideration of the default key (in the case of no animation). To remove this bug, I improved the algorithm to support processing if only one frame exists. In other words, if only one frame exists, return its transformation.

To secure key-frame setting, I added a security to the transformation accessors with a frame value. The user now has to enter a frame number and transformation value to assign the value to the specific frame. This removes the assumption that the current transformation node is always in the right place. The accessors validate that the keyframe is a key id. A future version will take this to the next step and get the "current keyframe" if the user manipulates a frame that follows a keyframe.

 

Terrain Painter

The first version of the Terrain Painter has been installed. There are various ways to create and texture terrains. The Terrain Painter loads terrains from targa images (diffuse and displacement maps). The user can paint the diffuse and displacement maps to update the live terrain. The displacement map adjusts the height of each pixel and the diffuse map adjusts the color of each pixel. The current version allows the user to create a new terrain, load targas to generate the terrain, and paint the targas to update the terrain. In future versions, the Terrain Painter will support complete load and save options, as well as control clamping of height sizes.

 

New Mesh Model

The MayaModel object, which derived from the ModelExporter object, has been broken down into a Mesh model, which is a Raina-specific polygonal mesh format. This format will be used to provide a standard, more efficient method of loading meshes.

 

Mesh Exporters

The first versions of Obj-To-Raina and Maya-to-Raina Exporters have been installed. These formats were created to allow more support for other 3d rendering software. The exporters convert from the source (obj or maya) to a rmd file (Raina mesh data file). This is a pre-processed file that automatically is parsed into Raina, without the need of calculating indices. The exporters also generate a scene file, which can be used to load a scene with the particular object.

The Maya-To-Raina exporter uses Maya API to pull information from a maya scene file. This exporter separates each mesh into its own rmd file and create a scene file that shows all of the objects. The current version only supports loading meshes. Future versions will support transformation, skinning, and animation.

 

Weekly Notes
Project-specific sections:

> Week 1 Notes
> Week 2 Notes
> Week 3 Notes
> Week 4 Notes
> Week 5 Notes
> Week 6 Notes
> Week 7 Notes
> Week 8 Notes
> Week 9 Notes
> Week 10 Notes
> Week 11 Notes
> Week 12 Notes
> Week 13 Notes
> Week 14 Notes
> Week 15 Notes
> Week 16 Notes
> Week 17 Notes
> Week 18 Notes
> Week 19 Notes
> Week 20 Notes

Home | About Raina3D | About Us | Thanks | Contact
Copyright (c) 2005-2009 Raina3D All rights reserved.