Realtime morphing

Project diary for a realtime morphing demonstration. We are two skilled students at gsCept university creating an advanced real time morphing simulation. This is our diary about it.

Friday, October 29, 2004

Exporter updated

Updated the G3D Maya exporter so I account for the artist generated smoothinggroups (hard / soft edges controlling vertex normals) when calculating the tangent and binormal.
So now I calculate the tangent and binormal after the vertexsplit (a vertex can be split because of different texturecoords or normal depending on which face it belongs to) and align them to the artist generated normal. Hopefully this will solve some problems with sharp edges.
Found a neat little function called "Gram-Schmidt orthogonalize" to align the tangent and binormal against the normal :)

Wednesday, October 27, 2004

Normal maps are evil

Darnit, my original post got lost. Not only are normal maps evil, blogger seems to be evil too!

Anyway, what I had to say was: Normal maps may seem very versatile, but they are actually very specialized. This puts lots of pressure on the gfx artist (me). Anyway, my current problem consist of staying low-poly while still getting more detail without having normal-map errors. I think most of the errors come from hard/soft edges, but I have faith in my newest attemt. Here I will use no hard edges and bevel all edges that are supposed to be hard then turn them soft. Except the blade, which I will keep hard so it gets real hard (hopefully).

New GFX card :)

Just found out that i'll have access to a nVidia GeForce 6800 ultra card for this project.
Using this card i'll be able to run the demo in much higher resolutions with antialiasing.
I also got 32 bit FP so there will probably be fewer aliasing problems when using the shadowbuffer.
It will probably take a week or two before i get the card so are gonna focus on designing the engine until then.


Posted by Hello

Posting a screenshot of the basic G3D Viewer.
It's not completed yet but hopefully it will be enough to use for Oskar in the coming days. He will mainly use it to test his generated normalmaps.
There is no lightcontrol implemented yet but there is a white light at a fixed position of 20 units from the objects center along the z-axis which should be enough to test the normalmap.

The viewer is written in D3D and uses HLSL for shaders.
The textures that contribute to the rendered image are
- Diffuse color
- Specular color
- Normal map
- Shininess

The bumpmapping used is worldspace bumpmapping because in a later stage i'll use it on skinned meshes and it's convenient to do the lightning calulations in worldspace because i will have skinned my tangents/normals in worldspace.
The shading is done using blinn and a correct half angle vector is calculated per pixel
(not interpolated from the vertices because it's not a linear transform).
The object is built of 2 triangles and its the normalmap that gives the apperance of a wavy / bumpy surface.

Tuesday, October 26, 2004


After the project meeting today i started on a G3D viewer.
Using the viewer Oskar will be able to test hist creations on his own and i can focus on design / implementation of the small engine that will drive the final demonstration.

G3D viewer Features
- Choose G3D Mesh to display
- Choose wich diffuse color, normal, specular color, shininess textures to apply
- Rotation and zooming of the mesh
- Rotation and translation of a light

Hopefully i'll be able to complete it until next week (have some exams this week so not so much time for the project).

First post

Hi. Im the programmer on this project.
Hopefully with an online diary i'll be writing more about the progress of the project :)

Now when period 1 of the project is finished everything feels pretty good and im ready to start period 2 and really dig myself into the graphical part of the programming.

A short resume of whats been done in period 1.

I programmed an exporter for Maya 6.0 wich exports
- Geometry data (vertices, triangles, uvs etc)
- Bound skin (all the joints affecting the geometry)
- Animations for the skin (translational and rotational)
- Calculated tangent and binormals for the vertices

Small testprograms for skinning and animation so i could verify that the exported data is correct.

Played a little with HLSL and implemented normalmapping and the morph we will use.

Blog created, old diary perhaps gone?

Had my old project diary at home. But my computer at home is currently broken so our good friend Simon suggest a blog instead. So here we are.

Currently I'm working on the low-poly model.

Me and Fredrik have done a lot of tests to ensure the smoothness of the project. Problem areas are almost all about normal maps and include: Soft/hard edges, UV-mapping, and ofcourse generation.

Soft/hard edges is mostly a problem for me. It affects how the normal maps are generated.
UV-mapping is limited to be very non-streched and to have as few seams as possible. The seams should have as much the same orientation as possible.
During the generation of normalmaps, I will have to be very considerate and make sure that the correct data is sampled.

About my sketches:
I forgot to do a few sketches, but I remember them now. They are not the most important but I aim to do them in the coming weeks. The most important sketch(fron/back/side views) is finished and I have also used it for my low-poly model.