|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Hi!
Picture shows results of Blender Internal Render and POV-Ray.
I can achieve smoothing as in Internal or not?
#version 3.7;
global_settings {
}
sky_sphere {
pigment {rgb<0.050, 0.050, 0.050>}
}
#declare Default_texture = texture{pigment {rgb 0.8}}
#declare data_Mball_ob = blob {
threshold 0.8
sphere { <0,0,0>, 1.702, 2 texture {Default_texture} scale
<1.775,1.775,1.775> translate <-0.919648, 0.000000, 0.000000>}
sphere { <0,0,0>, 1.702, 2 texture {Default_texture} scale
<1.775,1.775,1.775> rotate <-2.504e-06,-0,0> translate <-4.598535, 0.000000,
0.000000>}
}
object {data_Mball_ob}
light_source {
<1,5.58,7.03>
color rgb<1, 1, 1>
fade_distance 25.0000000000
fade_power 1
}
camera {
perspective
location <1.151930, 5.343666, 8.930576>
look_at <-2.207098, 0.000000, 0.000000>
right <-1.7777777777777777, 0, 0>
up <0, 1, 0>
angle 49.134343
}
Post a reply to this message
Attachments:
Download 'blob.jpg' (27 KB)
Preview of image 'blob.jpg'
|
|
| |
| |
|
|
|
|
| |
| |
|
|
On 2015-07-18 04:30 AM (-4), LanuHum wrote:
> Picture shows results of Blender Internal Render and POV-Ray.
> I can achieve smoothing as in Internal or not?
Does Blender use a different blob formula? I wrote my own blob formula,
to be implemented as an isosurface, which often gives smoother results
than POV-Ray's native blob, showing that the formula makes a difference.
However, mine still shows a slight discontinuity. My brain is too fuzzy
right now to dive into the calculus, but it seems that what POV-Ray's
formula and mine have in common is that they both have a discontinuity
(probably at the 2nd derivative level) where the field of one component
intersects the surface of another. The massive Photoshop engine in our
visual cortex is sensitive to this discontinuity, although you cannot
see it by looking at a silhouette of the object.
Note: For all three attachments, the object was translated so that it
would be centered in my prefab render rig. This translation is not
shown in the code excerpts below.
----------[BEGIN CODE EXCERPT: lanuhum-blob1.jpg]----------
blob
{ threshold 0.8
sphere
{ <0,0,0>, 1.702, 2
scale <1.775,1.775,1.775>
translate <-0.919648, 0.000000, 0.000000>
}
sphere
{ <0,0,0>, 1.702, 2
scale <1.775,1.775,1.775>
rotate <-2.504e-06,-0,0>
translate <-4.598535, 0.000000, 0.000000>
}
}
-----------[END CODE EXCERPT: lanuhum-blob1.jpg]-----------
----------[BEGIN CODE EXCERPT: lanuhum-blob3.jpg]----------
#include "functions.inc"
#include "roundedge.inc" // available from the Object Collection
// Copied from LanuHum's blob:
#declare Ctr1 = <-0.919648, 0.000000, 0.000000>;
#declare Ctr2 = <-4.598535, 0.000000, 0.000000>;
#declare Rf = 1.702;
#declare Size = 1.775;
#declare Strength = 2;
#declare Threshold = 0.8;
// Derived values:
#declare Rs = RE_fn_Blob_surface_radius (Rf, Strength / Threshold);
#declare X1 = Ctr1.x;
#declare X2 = Ctr2.x;
#declare Blobbiness = (Rf - Rs) * Size;
#declare Container = box
{ -<2, 1, 1>, <2, 1, 1>
scale Rs * Size
translate (Ctr1 + Ctr2) / 2
}
isosurface
{ function
{ 1 - sqrt
( RE_fn_Blob2 (f_sphere (x - X1, y, z, Rs * Size), Blobbiness)
+ RE_fn_Blob2 (f_sphere (x - X2, y, z, Rs * Size), Blobbiness)
)
}
contained_by { box { min_extent (Container), max_extent (Container) } }
max_gradient 1 / Blobbiness
accuracy 0.0001
}
-----------[END CODE EXCERPT: lanuhum-blob3.jpg]-----------
----------[BEGIN CODE EXCERPT: lanuhum-blob4.jpg]----------
#include "functions.inc"
#include "roundedge.inc" // available from the Object Collection
// Copied from LanuHum's blob:
#declare Ctr1 = <-0.919648, 0.000000, 0.000000>;
#declare Ctr2 = <-4.598535, 0.000000, 0.000000>;
#declare Rf = 1.702;
#declare Size = 1.775;
#declare Strength = 2;
#declare Threshold = 0.8;
// Derived values:
#declare Rs = RE_fn_Blob_surface_radius (Rf, Strength / Threshold);
#declare X1 = Ctr1.x;
#declare X2 = Ctr2.x;
#declare Blobbiness = (Rf - Rs) * Size * 1.2; // 1.2 is a fudge.
#declare Container = box
{ -<2, 1, 1>, <2, 1, 1>
scale Rs * Size
translate (Ctr1 + Ctr2) / 2
}
isosurface
{ function
{ 1 - sqrt
( RE_fn_Blob2 (f_sphere (x - X1, y, z, Rs * Size), Blobbiness)
+ RE_fn_Blob2 (f_sphere (x - X2, y, z, Rs * Size), Blobbiness)
)
}
contained_by { box { min_extent (Container), max_extent (Container) } }
max_gradient 1 / Blobbiness
accuracy 0.0001
}
-----------[END CODE EXCERPT: lanuhum-blob4.jpg]-----------
Post a reply to this message
Attachments:
Download 'lanuhum-blob1.jpg' (24 KB)
Download 'lanuhum-blob3.jpg' (25 KB)
Download 'lanuhum-blob4.jpg' (26 KB)
Preview of image 'lanuhum-blob1.jpg'
Preview of image 'lanuhum-blob3.jpg'
Preview of image 'lanuhum-blob4.jpg'
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Cousin Ricky <ric### [at] yahoocom> wrote:
> On 2015-07-18 04:30 AM (-4), LanuHum wrote:
> > Picture shows results of Blender Internal Render and POV-Ray.
> > I can achieve smoothing as in Internal or not?
>
>
> Does Blender use a different blob formula? I wrote my own blob formula,
> to be implemented as an isosurface, which often gives smoother results
> than POV-Ray's native blob, showing that the formula makes a difference.
>
Thanks!
I will hope that clipka and Le Forgeron will see it.
:)
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Le 18/07/2015 22:19, LanuHum a écrit :
> Cousin Ricky <ric### [at] yahoocom> wrote:
>> On 2015-07-18 04:30 AM (-4), LanuHum wrote:
>>> Picture shows results of Blender Internal Render and POV-Ray.
>>> I can achieve smoothing as in Internal or not?
>>
>>
>> Does Blender use a different blob formula? I wrote my own blob formul
a,
>> to be implemented as an isosurface, which often gives smoother results
>> than POV-Ray's native blob, showing that the formula makes a differenc
e.
>>
>
> Thanks!
> I will hope that clipka and Le Forgeron will see it.
> :)
Hi :-)
understanding blob can be complex.
> http://www.shipbrook.net/jeff/raytrace/blobs.html
b1.png is your original povray version
b2.png is the same, with visualisation of the influence of the components
.
Notice how the mark/shadow is at the boundary of the influence. That is
normal, (double that! It's due to the computation of the normal) and if
you want to get ride of it, you need to adjust the components.
The page above gives the formula to know the radius on the picture:
a = sqrt(1-sqrt(0.8/2))*1.702 = 1.0319
The distance between the blob is 3.678887, so the unscaled component, to
not influence each normal, should have a radius of less than 2.0726/2,
that is 1.0363
With a radius of 1.0363 and an apparent radius of 1.0319, the strength
(same page for formula) is going to be
s = 10816.6446 (or even 11141.445983 with more precision)
That's a bit strong to have a smooth transition when connecting the two
spheres with a cylinder. (b3.png and b4.png)
The spheres do not need to not intersect, the intersection must just be
not visible. So we can reduce the strengh with a bigger radius (yet
smaller than the initial radius).
A radius of 1.4 need a more reasonable strength of 3.83512 , yet it's
still too much (b5.png , with a cylinder in b6.png)
A radius of 1.2 has a strength of 11.7850 , some of which can be used in
a cylinder of 1.2 radius connecting the two spheres (b7.png, b8.png and
b805.png)
#declare Ssph = 10.7850 - clock;
#declare Scyl = 1+clock;
#declare data_Mball_ob = blob {
threshold 0.8
sphere { <0,0,0>, 1.2, Ssph texture {Default_texture} scale
<1.775,1.775,1.775> translate <-0.919648, 0.000000, 0.000000>}
sphere { <0,0,0>, 1.2, Ssph texture {Default_texture} scale
<1.775,1.775,1.775> rotate <-2.504e-06,-0,0> translate <-4.598535, 0.0000
00,
0.000000>}
cylinder { <-0.5181, 0.000000, 0.000000>, <-2.5907,0,0>, 1.2, Scyl
texture {Default_texture} scale <1.775,1.775,1.775> }
}
Playing with a weaker strength is the way to a smaller transition, this
can be done with adjusting the radius (bigger than 1.2) and recomputing
the total strength to share between the spheres and the cylinder.
Post a reply to this message
Attachments:
Download 'b1.png' (65 KB)
Download 'b2.png' (165 KB)
Download 'b3.png' (67 KB)
Download 'b4.png' (71 KB)
Download 'b5.png' (68 KB)
Download 'b6.png' (64 KB)
Download 'b7.png' (123 KB)
Download 'b8.png' (68 KB)
Download 'b805.png' (64 KB)
Preview of image 'b1.png'
Preview of image 'b2.png'
Preview of image 'b3.png'
Preview of image 'b4.png'
Preview of image 'b5.png'
Preview of image 'b6.png'
Preview of image 'b7.png'
Preview of image 'b8.png'
Preview of image 'b805.png'
|
|
| |
| |
|
|
|
|
| |
| |
|
|
On 7/19/2015 11:30 AM, Le_Forgeron wrote:
> understanding blob can be complex.
It is no wonder I have left blobs for later. :)
That was very informative. Thank you.
--
Regards
Stephen
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Le_Forgeron <jgr### [at] freefr> wrote:
> Hi :-)
> Playing with a weaker strength is the way to a smaller transition, this
> can be done with adjusting the radius (bigger than 1.2) and recomputing
> the total strength to share between the spheres and the cylinder.
Hi :-)
Very good!
Thank you!
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
> However, mine still shows a slight discontinuity. My brain is too fuzzy
> right now to dive into the calculus, but it seems that what POV-Ray's
> formula and mine have in common is that they both have a discontinuity
> (probably at the 2nd derivative level) where the field of one component
> intersects the surface of another. The massive Photoshop engine in our
> visual cortex is sensitive to this discontinuity, although you cannot
> see it by looking at a silhouette of the object.
Yes, if you have a reflective finish at all then it will show up any
discontinuities at the 2nd derivative level very obviously. For example
if you make a simple rounded box with cylinders and spheres there is a
step change in the rate of change of normal direction (2nd derivative of
position) at the join between the flat faces and the cylinders. It won't
be so visible with a diffuse finish, but any specular or reflective
finish will show up a definite "edge" that your eye will easily pick up
as a "join" or "crease".
I don't remember for sure, but even 3rd level discontinuities might be
noticeable on reflective surfaces too. You better ask someone who
designs car body panels :-)
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
On 2015-07-18 04:30 AM (-4), LanuHum wrote:
> Picture shows results of Blender Internal Render and POV-Ray.
> I can achieve smoothing as in Internal or not?
For these renders, the brilliance was set to zero. They verify that the
light source is at a sufficiently steep angle to illuminate the entire
blob, and confirm that the dark streak in the previous renders is not a
shadow, but a simultaneous contrast effect produced by our brains. (The
eyedropper tool of an image editing program also confirms this, but is a
bit clumsier to carry out.)
For the isosurface runs, the accuracy was changed to 0.00001 in order to
reduce the isosurface artifacts.
Post a reply to this message
Attachments:
Download 'lanuhum-blob-flat1.jpg' (23 KB)
Download 'lanuhum-blob-flat3.jpg' (24 KB)
Download 'lanuhum-blob-flat4.jpg' (25 KB)
Preview of image 'lanuhum-blob-flat1.jpg'
Preview of image 'lanuhum-blob-flat3.jpg'
Preview of image 'lanuhum-blob-flat4.jpg'
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Prompt somebody how to display blob in the OpenGL window?
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|