Welcome to Fractal Forums

Fractal Math, Chaos Theory & Research => Videos => Topic started by: Buddhi on December 24, 2009, 11:29:25 PM




Title: Mandelbulb degree 6 - close up
Post by: Buddhi on December 24, 2009, 11:29:25 PM
This is my first animation rendered using my new program. I implemented analytic DE (http://www.fractalforums.com/3d-fractal-generation/true-3d-mandlebrot-type-fractal/msg8346/#msg8346 - with some improvements) with dynamic threshold adjusted for each pixel according to perspective factor (depth) and zoom ratio. Ambient occlusion is generated using point traps (thanks David for help). Rendering speed is better than in my old programs but still to slow for real time animation (around 5 - 10 second per frame in resolution 1280x720)

Please watch it in HD mode.
http://www.youtube.com/watch?v=81MjsFM8apc


Title: Re: Mandelbulb degree 6 - close up
Post by: gussetCrimp on December 26, 2009, 07:18:29 PM
Noone has commented here yet so I'll chime in just to say that technically this is beautifully done, congratulations, the perspective is very convincing. I would love to see your program render a more interesting curved "flight path".


Title: Re: Mandelbulb degree 6 - close up
Post by: David Makin on December 26, 2009, 07:26:54 PM
Excellent :)


Title: Re: Mandelbulb degree 6 - close up
Post by: bib on December 26, 2009, 07:58:37 PM
Great. At the end, after the 90° turn, I thought the camera would still progress and turn around the minibulb. :)


Title: Re: Mandelbulb degree 6 - close up
Post by: Buddhi on December 27, 2009, 01:27:14 PM
Noone has commented here yet so I'll chime in just to say that technically this is beautifully done, congratulations, the perspective is very convincing. I would love to see your program render a more interesting curved "flight path".

This new animation is not with straight path. I made some program to create flight path through Mandelbulb. First I rendered this animation in interactive mode in very low resolution and save camera position for each frame. Next this path was played in final resolution.
This is my first animation made in this way and I know that camera movement is not perfect. This animation would be longer but unfortunately I deleted last 1000 frames by mistake  :-\

http://www.youtube.com/watch?v=VcrPV46fEQE


Title: Re: Mandelbulb degree 6 - close up
Post by: gussetCrimp on December 27, 2009, 05:57:24 PM
It's great! I loved seeing the shadows whizzing by. I was yelling "Look down! Look down!" for the last bit where not very much of the mandelbulb was visible.

Probably you could smooth the flight path between the stage of creating it in low-res and rerendering it in high-res?

Congrats.


Title: Re: Mandelbulb degree 6 - close up
Post by: JosLeys on December 27, 2009, 06:56:13 PM
Great animations!
You said:
Quote
I implemented analytic DE (http://www.fractalforums.com/3d-fractal-generation/true-3d-mandlebrot-type-fractal/msg8346/#msg8346 - with some improvements)

Can I ask what sort of improvements you made?


Title: Re: Mandelbulb degree 6 - close up
Post by: Buddhi on December 27, 2009, 08:29:51 PM
Can I ask what sort of improvements you made?
I tried to render power 2 Mandelbulb using your formula but fractals look very strange. I converted your DE to Daniel's (Tweenbe) formula and now it is possible to render z^2+c fractal. I tested lots of estimators on 2D slices and I this was the most accurate (but still not perfect). Most of estimators work only very well for high powers (>4). During rendering z^2+c fractal for z=0 there is no problem but for higher values of z these estimators generates lots of artefacts.

There is my version of DE below

Code:
p = 6.0; //mandelbulb power

x = a;
y = b;
z = c;
dzx = 1;
dzy = 0;
dzz = 0;
r_dz = 1;
ph_dz = 0;
th_dz = 0;

r = sqrt(x * x + y * y + z * z);

for (L = 0; L < N; L++)
{
r1 = pow(r, p - 1);
r2 = r1 * r;
th = atan2(y, x);
ph = -atan2(z, sqrt(x * x + y * y));
p_r1_rdz = p * r1 * r_dz;
ph_phdz = (p - 1.0) * ph + ph_dz;
th_thdz = (p - 1.0) * th + th_dz;
dzx = p_r1_rdz * cos(ph_phdz) * cos(th_thdz) + 1.0;
dzy = p_r1_rdz * cos(ph_phdz) * sin(th_thdz);
dzz = p_r1_rdz * sin(ph_phdz);
r_dz = sqrt(dzx * dzx + dzy * dzy + dzz * dzz);
th_dz = atan2(dzy, dzx);
ph_dz = -atan2(dzz, sqrt(dzx * dzx + dzy * dzy));

x = r2 * cos(p * ph) * cos(p * th) + a;
y = r2 * cos(p * ph) * sin(p * th) + b;
z = r2 * sin(p * ph) + c;
r = sqrt(x * x + y * y + z * z);

if (r > 1e15)
{
dist1 = r;
dist2 = r_dz;
distance = r * log(r) / r_dz;
break;  
}
}

Maybe there is somebody who knows proper distance estimator for z^2+c


Title: Re: Mandelbulb degree 6 - close up
Post by: David Makin on December 28, 2009, 12:20:09 AM
Can I ask what sort of improvements you made?
I tried to render power 2 Mandelbulb using your formula but fractals look very strange. I converted your DE to Daniel's (Tweenbe) formula and now it is possible to render z^2+c fractal. I tested lots of estimators on 2D slices and I this was the most accurate (but still not perfect). Most of estimators work only very well for high powers (>4). During rendering z^2+c fractal for z=0 there is no problem but for higher values of z these estimators generates lots of artefacts.

There is my version of DE below

Code:
p = 6.0; //mandelbulb power

x = a;
y = b;
z = c;
dzx = 1;
dzy = 0;
dzz = 0;
r_dz = 1;
ph_dz = 0;
th_dz = 0;

r = sqrt(x * x + y * y + z * z);

for (L = 0; L < N; L++)
{
r1 = pow(r, p - 1);
r2 = r1 * r;
th = atan2(y, x);
ph = -atan2(z, sqrt(x * x + y * y));
p_r1_rdz = p * r1 * r_dz;
ph_phdz = (p - 1.0) * ph + ph_dz;
th_thdz = (p - 1.0) * th + th_dz;
dzx = p_r1_rdz * cos(ph_phdz) * cos(th_thdz) + 1.0;
dzy = p_r1_rdz * cos(ph_phdz) * sin(th_thdz);
dzz = p_r1_rdz * sin(ph_phdz);
r_dz = sqrt(dzx * dzx + dzy * dzy + dzz * dzz);
th_dz = atan2(dzy, dzx);
ph_dz = -atan2(dzz, sqrt(dzx * dzx + dzy * dzy));

x = r2 * cos(p * ph) * cos(p * th) + a;
y = r2 * cos(p * ph) * sin(p * th) + b;
z = r2 * sin(p * ph) + c;
r = sqrt(x * x + y * y + z * z);

if (r > 1e15)
{
dist1 = r;
dist2 = r_dz;
distance = r * log(r) / r_dz;
break;  
}
}

Maybe there is somebody who knows proper distance estimator for z^2+c

First off the distance estimate should be:

      distance = 0.5*r * log(r) / r_dz;

secondly the distance you actually step should normally be less than this for accuracy, e.g. multiply by 0.5 again - better still allow a user "accuracy" parameter.

Also I found that to get the DE correct I had to multiply the DE by sqrt(p-1) where p is the power:

      distance = 0.5*sqrt(p-1)*r * log(r) / r_dz;

The sqrt(p-1) was arrived at by experimentation and works well for me :)


Title: Re: Mandelbulb degree 6 - close up
Post by: Buddhi on December 28, 2009, 06:09:23 PM
David, you have right. Multiplier should be 0.5. On last animation I observed some artefacts and with 0.5 it looks better.