POV-Ray : Newsgroups : povray.general : image based normal maps? : Re: image based normal maps? Server Time
27 Apr 2024 12:17:04 EDT (-0400)
  Re: image based normal maps?  
From: Bald Eagle
Date: 21 Jan 2019 09:10:02
Message: <web.5c45d275e20dd126765e06870@news.povray.org>
"Kenneth" <kdw### [at] gmailcom> wrote:

> Some observations:
> There's a fundamental difference in appearance between box 1 and boxes 2 and 3.
> The normals produced from the function are... layered(?), or *something*. It's
> as if there are no 'blends' between the three color channels' normals-- unlike
> the smooth blend in the left box. I don't know if this is expected behavior or
> not.


Well, this is usually the point where either clipka jumps in with an inside-out
explanation, since he has the big picture of the source code in his head and can
translate, summarize, and put it in proper order and context.

Or I go digging in the source and try to puzzle out the bits.

But my first instinct is that since there a different ways to create a normal
from an image, they are all implemented under the hood differently.
Sort of like the way you can have 2 different heighfields - one "sharp" and
abrupt - and the other smoothed.

I also don't know what would happen if the box were > 1x1, if there were some
sort of interpolation.  Or conversely if the image were scaled smaller and
applied to a 1x1 box.

If you want smoothing, then perhaps the simplest first experiment to try is:

"But how about if we want a smooth blend of patterns all the way through? That
is where a new feature called average can come in very handy. Average works with
pigment, normal, and texture maps, although the syntax is a little bit
different, and when we are not expecting it, the change can be confusing. Here
is a simple example. We use our standard includes, camera and light source from
above, and enter the following object.

  plane { -z, 0
    pigment { White }
    normal {
      average
      normal_map {
        [1, gradient x ]
        [1, gradient y ]
      }
    }
  }
"

You may have to write a function to use for the weights of the different
channels, but it's something to play with.


What I was thinking about initially was:

NORMAL:
  normal {
    IMAGE_PATTERN [Bump_Size]
    normal_map { NORMAL_MAP_BODY }
    }

{And here, 3.4.7.4.2 employs "irregardless".  :|   For shame. }


Post a reply to this message

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