CS 348B Final Project

Eric Chan
ericchan@cs.stanford.edu

I developed and tested on linux (the firebirds).
The supplied Makefile is for linux.

Rendering a furry surface is a two-step process.
First you generate texel data (a shader) from
a description file using [makefur]. Then you have
lrt use this shader to apply fur to a surface.
Details on how to do this is provided on my project
web page, which is located here:

  http://www.madmanchan.com/cs348b/project/index.html





---

Worklog

---

5-29 Tuesday

- Talked to Pat Hanrahan about stuffed animal project.
- Obtained Kajiya (SIGGRAPH 89) paper on "Rendering Fur
  With Three Dimensional Textures"
- Experimented with Maya Fur. Neat, but unfortunately cannot
  export fur as geometry.

5-30, 5-31 Wednesday, Thursday

- Studied paper to understand algorithm.
- Talked to Andy Yu about his rendering from last year.
- Experimented with NURBS modeling using Maya.

6-1 Friday

- Began coding and working on the fur integrator.
- Experimented with converting NURBS surfaces to triangle
  meshes.
- Experimented building a simple skeleton in Maya
  for use with the monkey.
- Added FurSurface class. Figured out how SurfaceFunction
  works. Will be useful for custom texel shaders.
- Added FurryTriangle class. Might be useful for storing
  more texel-triangle transform info?
- Added stub makefur offline program for generating texels
  as a preprocess.

6-2 Saturday

- Wrote simple makefur code to generate texel and write
  it out to a file. Will expand later.
- Added Texel and TexelCell classes to represent individual
  texel shaders.
- Added code to read in texel shader files and create a Texel
  object for each one.
- Added ray-AABB test to FurryTriangle.
- Modified bounding box code for FurryTriangle (testing).
- Changed GridAccelerator's way of computing global bbox.
  Now uses expanded (refined) primitives, since with the volume
  texel these primitives may be "larger" than the originals.

6-3 Sunday

- Added code to FurIntegrator to begin using texel shader.
- Added lerp code for density/tangent values in Texel.
- Implemented single texel shader. Way too slow. :(
- Sped up texel shader a bit, thanks to profiling.

6-4 Monday

- Met with Pat Hanrahan to talk about mapping an arbitrary
  triangular texel solid in 3 space back to a nice cube.
- Worked out object-to-texel inverse mapping math. Ouch.
- Implemented ray-texel intersection.
- Implemented data structure to store texel point info
  in triangle object coordinates.
- Added code to precompute vertex normals.

6-5 Tuesday

- Added ray marching through texel solid in world space.
- Added transparency and shading routine for FurSurface.
- Added inverse xyz -> uvs mapping.
- Added ray passes through multiple texels (buggy).

6-6 Wednesday

- Added noise parameters to [makefur].
- Added texel color.
- Added normal and height noise distributions to FurSurface.
- Fixed key intersection bug. Dagnabbit!
- Implemented multiple texel shader.
- Produced some single-texel images.

---

6-7 Thursday

- Fixed ray passing through texel base (makes opaque now).
- Generated final images.



