POV-Ray : Newsgroups : povray.general : Wrinkle free 3 point patch -or- Jpatch anticipation : Re: Wrinkle free 3 point patch -or- Jpatch anticipation Server Time
4 Aug 2024 04:17:43 EDT (-0400)
  Re: Wrinkle free 3 point patch -or- Jpatch anticipation  
From: sascha
Date: 28 Jul 2003 15:34:38
Message: <3f257ace@news.povray.org>
Btw, here are some images showing the current look of all kind of 
patches (3,4,5- point and hooks) in JPatch:

http://jpatch.sourceforge.net/?page=next

There are some minor discontinuity problems with 5-point patches, but 
you won't notice them unless the surface has sharp highlights or is 
reflective - normal matte or diffuse surfaces look quite smooth...

-sascha


sascha wrote:
> You're right and I'm aware of this problem. I've taken two different 
> approaches to this problem for the next version of JPatch:
> 
> 1)
> Subdivide a 3-sided patch into 3 4-sided patches (like 5-sided patches 
> will be subdivided into 5 4-sided patches). The new patches are formed by:
> 
> * computing the center of the patch.
> * deCasteljau'ing the edges
> * Connecting the center with the mid-points of each edge
> 
> This works more or less for 5-point patches (I still have some minor 
> discontinuity problems, I think this is because the 5-point-patch is 
> somehow "overconstrained" and it's not clear to me how to exactly 
> compute the center-point - suggestions are appreciated :-)
> This works too for 3-point patches which connect only to 4-point patches 
> but causes hughe problems when two 3-point patches meet.
> 
> 2)
> sPatch places two corner-points (and their tangents) at the same 
> position - this of course makes it impossible to calculate the surface 
> normal of this corner - when triangulizing the patch two triangles will 
> have bad normals resulting in visible artifacts (REYES is more robust 
> because it will subdivide until the triangles are smaller than a pixel, 
> but POV has problems when the u/v_steps setting is too low).
> I tried to place this two corner points not on the same point but move 
> one slightly away - this seems to work well (no more discontinuities or 
> artifacts), but I'm not sure if it will make troubles with U/V mapping - 
> I haven't implemented u/v mapping yet so I have to try it later...
> 
> Your approach with triangulizing natively and exporting the 
> triangle-mesh is an option too - if you've got an implementation let me 
> know, I can easily integrate it into JPatch...
> 
> I'll do some tests with bezier-triangles too, but these will also have 
> to be exported as triangle-meshes...
> 
> -sascha
> 
> Breton Slivka wrote:
> 
>> Most of us are aware of the phenomenon when it comes to bezier 
>> patches, and programs like spatch, which produce 3 point patches.
>>
>> That is, they always have a wrinkle in one corner, because it's 
>> actually two corners scrunched together.
>>
>> Well, The situation need not be the case!
>>
>> As I understand, internally, bezier patches are converted by triangles 
>> by simply taking grid UV samples from the bicubic patch function.
>>
>> suppose, the UV samples were altered, so that instead of taking a 13 
>> by 13 grid of samples, or 17 by 17 grid of samples as is the case now, 
>> the algorithem could detect when two points touch, and if that is the 
>> case, start at the edge where the two points touch, For example, if 
>> edge*1 is actually a point, start with one sample in V=0.5 when U=0, 
>> then two samples at V=0 and V=1 when U=1/16, then 3 samples at V=0,0.5 
>> and 1 when U=2/16 etc.... until U=16..
>>
>> In the case of a 3 point patch, this should result in no wrinkles, as 
>> in this diagram I've prepared http://zenpsycho.com/wrinkle.gif
>>
>> Perhaps this could either be implemented as a patch in povray itself, 
>> or as a feature of Jpatch, the promising new patch modeller written in 
>> java, 3 point patches could simply be exported as a triangle mesh, 
>> using my UV sampling scheme.
>> Discontinuities at the edges shouldn't be more of a problem than 
>> usual, since each edge will have the same amount of samples as 
>> connecting 4 point patches.
>> I'd try and implement this stuff myself, but I'm afraid I'm not smart 
>> enough or have the time, but I figured that there should be a solution 
>> to this problem that I should share.
>> anyways, thoughts? questions?
> 
>


Post a reply to this message

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