David Makin
|
|
« Reply #15 on: June 24, 2009, 12:36:47 PM » |
|
Perhaps zooming in far enough (even if it takes 10^(10^(10^10)) etc. zooms) would show a clearly visible surface as well.
It would, provided that the algorithm for finding the surface works will enough at higher iterations. Generally the problem is that to zoom into 3D fractal objects (accurately) increasing the detail shown proportionately requires say a minimum of time*8 for a doubling of the detail.
|
|
|
Logged
|
|
|
|
David Makin
|
|
« Reply #16 on: June 25, 2009, 12:31:49 AM » |
|
On the subject of rendering and getting the surface - I sincerely hope this converts nicely to 3D from 2D. In the other thread on the "True 3D" Mandy I mentioned the possibility of solving: z = p + a*d and |In(z = z^2+c)|=@bailout for "a" where p is our viewpoint, a is the distance to step, d is the unit direction vector for the viewing ray and In(z^2+c) is the iterate of z^2+c to a given iteration depth n, well here it is in 2D - note that it's fairly sensitive to the various values used so I'm not sure how well it will perform for fractals other than plain z^2+c. Basically it's a directional distance estimator - note that I found I had to use cabs(In(z=z^2+c)) and the "correct" bailout value instead of the usual || and the squared bailout. Unfortunately this method also requires the derivative, so at the moment I only know how to apply it to Julibrots, Quaternions and standard Hypercomplex.
Wooo-hoooo boy does it work !!! See my very first largish test render: http://makinmagic.deviantart.com/art/Quat-Minibrot-test-render-127116649Now to impliment it for standard hypercomplex....unfortunately I suspect it won't work for Julibrots but I may be wrong. Note that it doesn't allow low-iteration i.e. low detail rendering, you can control the detail but the minimum possible starts much higher than using other methods due to the nature of the algorithm.
|
|
|
Logged
|
|
|
|
|
David Makin
|
|
« Reply #18 on: June 27, 2009, 01:40:56 AM » |
|
And finally.... If the image above doesn't appear then go here: http://makinmagic.deviantart.com/art/Final-Quat-Minibrot-127356427On further investigation I discovered that the algorithm I was trying for distance estimation was just the standard method in disguise - and the standard method works better However I was tryng to find a better method because I wanted a method that allows you to render 3D/4D fractals such that the distance from the "inside" is fairly large and when using distance estimation this leads to visible "stepping" on the images. In my iteration density method this issue was fixed by performing a binary search when solid is found to get the exact boundary and I'd previously tried implimenting this method for when using DE and failed to get it to work properly, however, convinced it *should* work I tried again and fixed the mistake I was making and this result was obtained using that method.
|
|
|
Logged
|
|
|
|
twinbee
|
|
« Reply #19 on: June 27, 2009, 07:41:41 PM » |
|
Cool shape generally, (and nice zoom in), though it does seem almost equivalent to the lathe / 'vase' version of the 2D mandelbrot spun round its own axis... (still, wouldn't mind seeing it raytraced)
|
|
« Last Edit: June 27, 2009, 07:43:12 PM by twinbee »
|
Logged
|
|
|
|
David Makin
|
|
« Reply #20 on: June 27, 2009, 08:38:39 PM » |
|
Cool shape generally, (and nice zoom in), though it does seem almost equivalent to the lathe / 'vase' version of the 2D mandelbrot spun round its own axis... (still, wouldn't mind seeing it raytraced)
Well that's exactly what quaternionic Mandelbrots produce By raytraced I take it you mean either rendered to object format for use in a normal 3D renderer ? Or just with full ray-tracing including shadows and better lighting ? It is raytraced but only using plain diffuse lighting directionally from the viewpoint. I've been trying to get a better algorithm for rendering the "Real 3D" Mandy based on DE but it's looking like the only way to do so is to correctly get and use the derivative and use full DE - using the directional density along the viewing ray does not work very well for various reasons, I managed to get it rendering a quaternion pretty accurately around 4* slower than using full DE but when I plug in the 4D maths for the "Real 3D" version instead it renders pretty accurately but takes 15 to 20 times longer than the quaternion version !! I guess that's an indication of the complexity of the maths involved in the "Real 3D" version as compared to quaternionic or hypercomplex maths i.e. it must fold/warp the 4D space in much more complex ways.
|
|
|
Logged
|
|
|
|
David Makin
|
|
« Reply #21 on: June 30, 2009, 12:49:42 AM » |
|
those speckles are why i use a probabilistic ("cloud") intersection algorithm: there is essentially no surface there (i.e. there is no fixed step size that will give coherent results).
also, when doing a close-up zoom like this you'll want to use a much smaller step size to eliminate the "layering" artefacts.
I'd be interested to see what your algorithm makes of this one I reduced the step-size by a factor of 10 on this one compared to the others, I didn't try reducing it further because even the render I did took 35mins at 640*480 ! (At the moment my step-size reduction algorithm isn't as "smart" as it should be - it reduces *all* step sizes when ideally it should only reduce them as the solid is approached, though actually for most of the errors I get with this algorithm I think that simply: for a given ray after calculating the next step size check that step size against the current minimum at that iteration depth, if it's larger than the current minimum for that iteration depth then step the current minimum instead, if it's smaller then update the current minimum). OK I now have two algorithms that work pretty well without requiring the derivative. They both work based on the directional iteration density at each step along the viewing ray, one based on the classic "s = u*t + 0.5*a*t^2" and the other loosely based on the Newton step i.e. f()/f'(). The problem with both methods was that a ray passing close to "solid" but missing would then give large values for the calculated step distances just after passing the solid - the solution (as I mentioned above) is to check each new step size against the minimum for the given iteration depth (for that ray) and if it's larger then use the step size for that depth instead, otherwise use the step distance *and* store it as the new minimum for that iteration depth - I also test and conditionally store it for the next 3 higher iteration levels. Both these methods produce results comparable to full distance estimator and both are between 3.5 and 4 times slower than full DE when used on quaternionic or standard hypercomplex fractals *but* both methods will work when you can't efficiently get the derivative and also for Julibrots and similar formulas where DE has issues in any case. The method solving "s = u*t + 0.5*a*t^2" for t is probably slightly better overall and in that case you have to check for "a" being zero otherwise you get specks (even in the middle of enpty space) - use s=ut instead here However if the main iteration loop of the fractal is slow (e.g. involving transcendentals) then the f()/f'() method will be better since that only requires the single delta value not the double delta i.e. you only have to iterate at step and step + a bit rather than at step, step + a bit and step - a bit. Note that 3.5 to 4 times slower (on quaternions and standard hypercomplex) than DE is still around 8.5 times faster than my old routine - though just out of interest I'm going to try the iteration depth limitation trick in that routine too and see how much it helps
|
|
|
Logged
|
|
|
|
Buddhi
|
|
« Reply #22 on: July 26, 2009, 02:13:46 PM » |
|
One more, another cousin of the "True 3D" Mandy. This one is very complicated in detail, I have a hunch that it's truly fractal in all dimensions The small image in the bottom-right is the "full" Mandy, the red box showing the location of the full-view (same location and parameters as the other recent renders I've done of the minibrot). <Quoted Image Removed> If the image above doesn't appear, go here: http://makinmagic.deviantart.com/art/quot-Real-3D-quot-Mandy-cousin-126890045Multiplication table for the unit vectors for this one: * | r i j k ---------------- r | r i j k i | i -r -k -j j | j -k -r -i k | k -j -i r I rendered the same place using my 3D engine. You're right, it's VERY complicated in detail!
|
|
|
Logged
|
|
|
|
cKleinhuis
|
|
« Reply #23 on: July 26, 2009, 02:28:01 PM » |
|
how do you define the formulas ? what if i would like to see sin(z^2)+c ?
|
|
|
Logged
|
---
divide and conquer - iterate and rule - chaos is No random!
|
|
|
David Makin
|
|
« Reply #24 on: July 26, 2009, 10:18:15 PM » |
|
I rendered the same place using my 3D engine. You're right, it's VERY complicated in detail!
Ah, thanks !! I think that gives us more idea what it's really like - no wonder I was having problems rendering it It looks like it may not be connected ? How to find out.... (beyond my math theory skills).
|
|
|
Logged
|
|
|
|
David Makin
|
|
« Reply #25 on: July 26, 2009, 10:20:15 PM » |
|
how do you define the formulas ? what if i would like to see sin(z^2)+c ? Errmmm - good luck on that I guess something *may* be possible ? I don't really know enough math theory.
|
|
|
Logged
|
|
|
|
|
cKleinhuis
|
|
« Reply #27 on: August 30, 2009, 03:48:20 AM » |
|
congratulations, awesome object!
|
|
|
Logged
|
---
divide and conquer - iterate and rule - chaos is No random!
|
|
|
bib
|
|
« Reply #28 on: August 30, 2009, 11:26:53 AM » |
|
Very nice render! Is the fog around the object part of the calculation or simply a buddhabrot background?
|
|
|
Logged
|
Between order and disorder reigns a delicious moment. (Paul Valéry)
|
|
|
Buddhi
|
|
« Reply #29 on: August 30, 2009, 11:32:35 AM » |
|
On the background there is Buddhabrot fractal. Mandelbrot 3D has also some fog around which transparency is depended on iteration count. For reflections (environment mapping) I used the same bitmap as for background.
|
|
|
Logged
|
|
|
|
|