Project 3 - CSEP576
Brett Wilson
Most of the transformations worked quite well considering that we are only capturing the surface
from one point of view and are therefore missing information about around 60-70% of the object
as a whole.
Some of the primary problems with this method are discovered in the Owl picture. These are dealing
with shiny sections and dealing with hidden sections. The left eye of the owl is shiny and as seen
in the 3D view, the surface recontruction is just plain confused. The right side of the owl's face
is also hidden from our view point due to the beak and the surface simply becomes a slope from the beak to the part of the face that is visible.
As mentioned in class, the weighting scheme used in calculation of normals was designed to filter
out the input of the darker regions in favour of an input of the same point from a better light
direction. However it put more weight on the highlighted regions. To try and counter this, I used a wieghting scheme that used a linear multiplier before intesity of 0.3 (0.0 at 0 - 1.0 at 0.3), a 1.0 multiplier from 0.3 to 0.9 and then another linear multiplier to 1.0 (1.0 at 0.9 - 0.0 at 1.0). There are some small differences but the true shiny regions aren't helped much. A primary problem is that the shiny regions appear either bright or dark and the Lambertian model just isn't going to work.
Another improvement I was looking at was the equation for the depth matrix. The equation is based on the dot product of a normal being 0 with respect to the vector between itself and a neighboring normal. However, the normals generally won't be exactly parallel to each other. I was trying to find an easy way to specify the actual dot product (instead of 0) of the equations but this is difficult when we only know x and y but not the actual distance between the normal locations. Basically, using the normal(i, j) and normal(i+1, j), if the normals are rotated around the vector between them, their dot product will change but their dot product with respect to the vector between them will remain the same. However, if the normals move towards or away from each other, the dot product of the normal and the vector between them will no longer be 0. To specify this from the 2D view point was difficult so instead I decided to apply weight based on the angle between the normals. The difference was minimal and primarily effect the last points of the object that were visible (before passing out of view).
Buddha
Cat
Gray
Owl
Normal Calculations
| No multipliers |
Scaled by intensity |
Linear Scale <0.3 and >0.9 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |