|
|
On 10/11/20 4:03 PM, Kenneth wrote:
> William F Pokorny <ano### [at] anonymousorg> wrote:
>>
>> In the upper right is today's (v3.7/v3.8) true normal { quilted ... }
>> result. It shows one of the longstanding issues with the quilted normal
>> perturbation implementation. Specifically, if the shape's surface
>> "lands" on any of the texture's axial "floors" during texture
>> evaluation, you get a noisy result.
>>
>> The usual fix for that sort of problem is to apply a small positive or
>> negative epsilon - somewhere - in the system being calculated so such
>> landings are unlikely in practice.
>
> Thanks for looking into this. I have always suspected that the quilted pattern
> (at least as a 'normal') has some unexpected quirks.
>
> Back in April 2018, I actually posted an animation test about this, with some
> notes; perhaps it would prove helpful...
>
>
http://news.povray.org/povray.binaries.animations/thread/%3Cweb.5ae6126fe8495210a47873e10%40news.povray.org%3E/
>
> I too found that I needed to add a slight positioning 'fudge factor' to the
> pattern in my SDL code (like your internal epsilon tweaking) to avoid the
> 'noise' that you described. I also think that the pattern has some kind of
> 'discontinuity'-- in other words, that it does not seem to be uniform in its
> behavior throughout its unit(?)-cube spatial volume. The effect is hard to
> describe; maybe my animation will make it clear. I had assumed that the pattern
> 'spread out' or expanded from a central point-- so that it would perturb all six
> faces of a cube in an equal way; but the visual result looks...odd.
>
>
Hi. Thank you for the pointer. I missed your original post - or it got
lost in my old noggin...
Aside: The video played, but was blank for me, until the last few frames
on my raspbian last night. It's OK on this machine this morning. Who
knows :-).
No doubt you found some of quilted's complications. I "think" I
understand most of what's happening and why. We'll see.
I believe any updated code should 'perturb' with the original surface
normal in mind. I see a path to do this with flat surface stuff like
cubes, but I don't know how to do it for curved surfaces in normal.cpp.
The facets pattern has a curved surface method. I'll have to see if I
can digest what was done there.
A simpler approach would be to warp normals constructed flat to common
shapes. However, there's that block of un-finished normal warp / unwarp
related code. I see it, but I don't really understand what works and
doesn't with normals tangled in warps.
Truth is, I don't use normals that often. My todo list is effectively
infinite. No promises as to when I can make things better with povr
quilted normals. I'm about 95% sure I'll remove the value version of
quilted from povr and replace it with 'seedfi' pattern(s?).
Bill P.
Post a reply to this message
|
|