POV-Ray : Newsgroups : povray.advanced-users : Dynamic Hair via Poser 5 : Dynamic Hair via Poser 5 Server Time
28 Jul 2024 22:22:35 EDT (-0400)
  Dynamic Hair via Poser 5  
From: Jeremy M  Praay
Date: 11 Dec 2003 21:02:05
Message: <3fd9219d$1@news.povray.org>
Continuing the discussion I inadvertently started in p.o-t.

Apparently, FlyerX's PoseRay already half-implements the idea that I have
been tossing around in my head for quite some time.  Gilles gave me a couple
other ideas, and I came up with a simple, yet not altogether impressive
test.  Even so, I think it may be a good starting point, or
proof-of-concept.

Here's the picture: http://www.beantoad.com/NewImages/mytest8.jpg  It's Judy
with the "Blondie" dynamic hair, that comes with Poser 5.

PoseRay already creates cylindrical "guide hairs" based on the Poser 5 OBJ
export.  All I did was duplicate each of them 30 times, and add a little x &
y translation randomness to the entire hair object.  That's it.

However, as we guessed, the memory usage was enormous.  For 30 hair
replications, my system peaked at about 1.0GB of memory usage (about 750MB
as a result of POV-Ray).  This took about 30 minutes to render on my AMD
Athlon 1800+ with 512MB.  Don't even attempt this with 256MB.  No radiosity,
focal blur, etc., just 3 light sources imported from Poser.

Things I don't like:
The hair is too coarse.  I think it needs to be thinner.  There are not
enough strands of hair.  Perhaps 100+ hairs would make it look much better.
Using cylinders might work if you have 10GB of RAM, but for those of us that
work in the real world, I don't think it's feasible to use cylinders.  The
cylinders would probably need to be replaced with tiny meshes for this to
work with a reasonable amount of RAM (I think?).  Using some
sphere_sweep-like object would be ideal, but would probably not render in
our lifetimes (I think).  The hair texture could be improved.  I just left
it as PoseRay exported it (grayish-black).  And the under-hair mesh is
causing that strange bright-spot below her neck (oops).

Here's the code, to add to the end of your *_pov.inc PoseRay include file.
If anyone wants to work on this idea some more, feel free.  I think the
initial proof-of-concept went fairly well.

#declare r1=seed(123);
#macro DynamicHair(NumReplications)
  union {
    #local i=0;
    #while (i < NumReplications)
      object { poseraylinegroup
        translate <rand(r1)-0.5,0, rand(r1)-0.5>*0.01
      }
      #local i=i+1;
    #end
  }
#end

#declare MyTest8=union{ object{MyTest8_mesh} object {DynamicHair(30) } }

--
Jeremy


Post a reply to this message

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