POV-Ray : Newsgroups : povray.programming : projects, fur, and PoV : projects, fur, and PoV Server Time
30 Jun 2024 12:16:54 EDT (-0400)
  projects, fur, and PoV  
From: Daniel Hulme
Date: 21 Jul 2004 13:32:45
Message: <20040721183245.149d002d@dh286.pem.cam.ac.uk>
For the third year of my computer science degree, I have to do a large,
individual project on a subject of my choice. For my project, I am
planning to write a sizeable extension to PoV for drawing parametric
fur. This project is due to start in October, but I am trying to stay
ahed of the game by doing some research now. I have already looked into
existing fur-rendering methods, and have found the following papers
useful:

A New Method for Modelling of Hair-Grass Type Textures - Bidasaria '95
Real-Time Fur over Arbitrary Surfaces - Lengyel et al. '01
Hypertexture - Perlin & Hoffert '89
Rendering Fur With Three-Dimensional Textures - Kajiya & Kay '89

My initial idea for describing the fur in the source file would be to
have a "hyper" block inside either "texture" or "material". This would
contain parameters for length (which could be a scalar field, I mean
pattern, or just a constant), stiffness, force (as a vector field or
just constant e.g. gravity), thickness, density etc. To make the fur
general I think it would be good to have the colour as a texture map
evaluated in u,v space, which returns a texture map evaluated along the
length of the fur (or vice-versa: a 1D texture map which interpolates
between two different u,v texture maps). This would allow not just the
usual animal patterns, but fur which has been bleached at the ends or is
greying. Making the params texture maps rather than just colours would
allow for stuff like polar bear fur (which is not white, but appears so
as it is hollow and transparent thus showing the colour of polar bear
skin), or metallic fur.

From the implementation end, I am thinking probably a standard
ray-marching type thing, perhaps an adaptation of the media code. It
would also be quite nice if you could have multiple furs attached to one
object, so you could do the short/dense, long/sparse guard hair thing
that animals do (see Lengyel).

Problems/challenges I foresee so far:
-making it play nice if radiosity is turned on
-some kind of LOD system
-aliasing
-getting a decent (i.e. fast) projection function that takes stiffness,
force, and position and returns (u,v,w) co-ordinates or "no hair here"
-some specialised ray-marching stuff so we only ever sample where there
is a hair
-occlusion. You can generally get away without self-shadowing (so I
hear) but Lengyel, IIRC, demonstrated how bad fur looks if you don't do
occlusion well
-fiddling with bounding boxes so silhouettes work
-most importantly, speed. I only have 'til next May to get this
submitted, and I think I will need to render at least one picture to go
in the dissertation. Also, it would be nice if I could give a reference
scene rendered in several systems (PoVray with geometric fur, PoV with
hyperfur, Maya, 3DS w/ some plugin, etc.) and the time it took on each,
and have mine competitive in terms of both time and quality

Can anyone recommend any other useful papers?
Does anyone have any thoughts on syntax?
Can anyone give me an idea on implementation?
Does anyone want to tell me it's a really bad idea and I should do
something easier? (Don't bother, people I hold in greater respect than
you have already told me and I didn't believe *them* either.)

Daniel

-- 
Misinformation followed us like a plague      You can beat us with wires
Nobody knew from time to time                You can beat us with chains
If the plans had changed         You can run out your rules but you know
   .: www.doublezero.uklinux.net :.   You can't outrun the history train


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.