|
|
>> Just one small thing though, it looks like something odd is going on
>> with the top (+y) face of the cube and also the join with that face and
>> the sphere (maybe related). There is a "ridge" of some kind along the
>> join, and the entire top face of the cube bends upwards way before the
>> round should start (see attached).
>
> The radius of the round at the junction between the two objects is a function of
> the radii of the two contributing faces and will be sharper. I think what you
> are seeing is just a very sharp corner.
Starting from the sphere, there seems to be a very sharp corner,
followed by some kind of plateau, followed by a large radius that forms
the top face of the cube.
You can exaggerate it by changing to a bevel (-0.5) and increasing the
round size to 0.5 (attached is a section view) - maybe this helps to
debug it?
Post a reply to this message
Attachments:
Download 'union exaggerated.png' (15 KB)
Preview of image 'union exaggerated.png'
|
|
|
|
scott <sco### [at] scottcom> wrote:
> >> Just one small thing though, it looks like something odd is going on
> >> with the top (+y) face of the cube and also the join with that face and
> >> the sphere (maybe related). There is a "ridge" of some kind along the
> >> join, and the entire top face of the cube bends upwards way before the
> >> round should start (see attached).
> >
> > The radius of the round at the junction between the two objects is a function of
> > the radii of the two contributing faces and will be sharper. I think what you
> > are seeing is just a very sharp corner.
>
> Starting from the sphere, there seems to be a very sharp corner,
> followed by some kind of plateau, followed by a large radius that forms
> the top face of the cube.
>
> You can exaggerate it by changing to a bevel (-0.5) and increasing the
> round size to 0.5 (attached is a section view) - maybe this helps to
> debug it?
Thanks for pointing this out. I am currently trying to work out what actually
happens at the line of union, and indeed what is wanted. This is probably an
example of something we don't want.
Post a reply to this message
|
|
|
|
"John Greenwood" <joh### [at] john-greenwoodcouk> wrote:
> scott <sco### [at] scottcom> wrote:
> > >> Just one small thing though, it looks like something odd is going on
> > >> with the top (+y) face of the cube and also the join with that face and
> > >> the sphere (maybe related). There is a "ridge" of some kind along the
> > >> join, and the entire top face of the cube bends upwards way before the
> > >> round should start (see attached).
> > >
> > > The radius of the round at the junction between the two objects is a function of
> > > the radii of the two contributing faces and will be sharper. I think what you
> > > are seeing is just a very sharp corner.
> >
> > Starting from the sphere, there seems to be a very sharp corner,
> > followed by some kind of plateau, followed by a large radius that forms
> > the top face of the cube.
> >
> > You can exaggerate it by changing to a bevel (-0.5) and increasing the
> > round size to 0.5 (attached is a section view) - maybe this helps to
> > debug it?
>
> Thanks for pointing this out. I am currently trying to work out what actually
> happens at the line of union, and indeed what is wanted. This is probably an
> example of something we don't want.
Thinking about it, this is a result of way it works. The corner prifile is
created by the addition of the component fields and if one of these has a sharp
change, this will come through.
I am working on a way to have a union of two R_objects with a rounding of its
own that swamps that of the components. It is a bit more complicated than what I
have done so far.
I also think we could have hypobolic corners, ie, would be assymptopic to two
intersecting plane surfaces.
Post a reply to this message
|
|
|
|
"John Greenwood" <joh### [at] john-greenwoodcouk> wrote:
> I am working on a way to have a union of two R_objects with a rounding of its
> own that swamps that of the components. It is a bit more complicated than what I
> have done so far.
I am struggling with this, I may ask for help in a new topic.
> I also think we could have hypobolic corners, ie, would be assymptopic to two
> intersecting plane surfaces.
This however works. I have tidied up the workings a bit and added two new types
of corner profile, a flat bevel and the hyperbolic corner.
In this example the corner profile parameter takes a value from -1 to +1. The
whole number values are special cases, +1 gives a hyperbolic corner and -1 gives
a flat bevel with sharp corners. In between putting this parameter just more
than -1 gives a rounded bevel and increasing to just less than 1 makes it
increasingly rounded, with nearly circular at a value of .6
// This work is licensed under the Creative Commons Attribution 3.0 Unported
License.
// To view a copy of this license, visit
http://creativecommons.org/licenses/by/3.0/
// or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain
View,
// California, 94041, USA.
// Demonstration of R_objects elements for rounded objects
// Vers: 1.00
// Date: 03 Oct 2016
// Auth: John Greenwood
#version 3.7 ;
#include "colors.inc"
camera {location <4,10,30> angle 10 look_at <0,0,0> }
background { color rgb<0.2, 0.4, 0.8> }
light_source {<10,5,10> color White}
global_settings {assumed_gamma 1.0 }
#declare R_function = function( F,p){
select((p+.999) , select((F>1)-(F<-1) , -1 , F , 1)+1
, select(p-1 , select((F>1)-(F<-1) , -1 ,
..5*p*pow(F,5)-(p+.5)*pow(F,3)+(1.5+.5*p)*F , 1)+1
,F/(sqrt(.25+pow(F,2))) +1
) )
}
#declare Corner_Profile1 = +1; // = p in the above equations
#declare Corner_Profile2 = -1; // = p in the above equations
// p = -1 sharp bevel and p = +1 gives hyperbolic corner. Between these, as p
increases, the corner goes from a nearly flat getting increasingly rounded with
nearly circular at p = +.6
#declare Corner_round1 = .5;
#declare Corner_round2 = .5;
isosurface {
function {
-R_function((x+1.5)/Corner_round1,Corner_Profile1)
+R_function((x-1.5)/Corner_round2,Corner_Profile2)
+R_function((y-1.5)/Corner_round2,Corner_Profile2)
-R_function((y+1.5)/Corner_round1,Corner_Profile1)
+R_function((z-1.5)/Corner_round2,Corner_Profile2)
-R_function((z+1.5)/Corner_round1,Corner_Profile1)
+5
}
threshold 0
max_gradient 20
contained_by { box { -2.2, 2.2 } }
texture {pigment {color rgb < 1, 0.9, 0.65>}}
}
Post a reply to this message
|
|