Logo by mauxuam - Contribute your own Logo!

END OF AN ERA, FRACTALFORUMS.COM IS CONTINUED ON FRACTALFORUMS.ORG

it was a great time but no longer maintainable by c.Kleinhuis contact him for any data retrieval,
thanks and see you perhaps in 10 years again

this forum will stay online for reference
News: Check out the originating "3d Mandelbulb" thread here
 
*
Welcome, Guest. Please login or register. July 22, 2018, 08:55:04 AM


Login with username, password and session length


The All New FractalForums is now in Public Beta Testing! Visit FractalForums.org and check it out!


Pages: [1] 2 3   Go Down
  Print  
Share this topic on DiggShare this topic on FacebookShare this topic on GoogleShare this topic on RedditShare this topic on StumbleUponShare this topic on Twitter
Author Topic: Some point-cloud examples  (Read 2706 times)
0 Members and 1 Guest are viewing this topic.
thargor6
Fractal Molossus
**
Posts: 789



WWW
« on: August 13, 2017, 10:38:30 PM »

As I recently released MB3D 1.98 with point-cloud export, I got some questions about the purpose of those point-clouds.

Point-clouds are similar to solid meshes, but both are simplier and faster to generate and usually have a higher resolution (compared to a solid mesh at the same size), i. e. can contain lots of nice details.

There are multiple programs which allow to render this point-cloud-objects (together with any other meshes) and to create really nice images.

From the artist's point of view, this feature is interesting as you can combine fractals with any other object and may use a PBR (physically based rendering engine) for creating fractal art.

Of course, the number of detail is limited (in comparison to a true fractal renderer), but MB3D 1.98 makes a huge step forward.

Here are some examples, all rendered in Houdini (using the free version):























The maximum volumetric resolution used so far was 3600 x 3600 x 3600 for the last model.

Cheers!

Andreas
« Last Edit: August 14, 2017, 02:04:03 AM by thargor6 » Logged
Sockratease
Global Moderator
Fractal Senior
******
Posts: 3181



« Reply #1 on: August 13, 2017, 11:16:54 PM »

Can't wait to see how these render in Carrara!!

Thanks for the great work, Andreas   dancing banana dancing chilli champagne toast dancing chilli dancing banana
Logged

Life is complex - It has real and imaginary components.

The All New Fractal Forums is now in Public Beta Testing! Visit FractalForums.org and check it out!
knighty
Fractal Iambus
***
Posts: 819


« Reply #2 on: August 14, 2017, 01:52:27 PM »

Super  Repeating Zooming Self-Silimilar Thumb Up, by Craig
Logged
1Bryan1
Fractal Fertilizer
*****
Posts: 352



WWW
« Reply #3 on: August 25, 2017, 12:47:14 PM »

fabulous!

Logged

Find 340+ more of my fractal art at http://1bryan1.deviantart.com/gallery/
thargor6
Fractal Molossus
**
Posts: 789



WWW
« Reply #4 on: August 27, 2017, 01:58:44 PM »

Here are some examples, generated with V1.99:






Cheers!

Andreas
Logged
Alef
Fractal Supremo
*****
Posts: 1174



WWW
« Reply #5 on: August 29, 2017, 04:11:26 PM »

The new flag - use ambient picture as light alsou is pretty good.

 Take some bulb or any other fractal.
- Download some beautifull nebula photo. (not part of M3D)
- Rename it to some short name like Nebula1.jpg.
- In the ligh section - > back pic -> Background image
- Use a small image as ambienty colour. (New in v1.9.cool

Then fractal looks as part of the scenery not of something outside. Well, this could be done manualy but single flag does it mutch faster.
I think space photo are especialy good becouse strange unknown structures of ancient aliens looks better when they are on galactic photos.
http://www.fractalforums.com/index.php?action=gallery;sa=view;id=20547


* spacebulb.jpg (77.39 KB, 700x590 - viewed 215 times.)

* spacebulb3.jpg (93.52 KB, 700x600 - viewed 215 times.)
« Last Edit: August 29, 2017, 04:26:38 PM by Alef » Logged

fractal catalisator
Alef
Fractal Supremo
*****
Posts: 1174



WWW
« Reply #6 on: August 31, 2017, 11:41:41 AM »

Bulbtracer have one additional feature. If your PC is slow enought you get a pretty cool animation in "Trace Preview" going throught the slices of fractal.
It is pretty cool with some formulas and not so with others. Generaly it is symmetrical fractals with holes. But then you must not have very fast PC as speed depends on processor speed. And if it is too fast you don't see animation;)

It reminds Fractal Explorer with some fractal type orbit something.  Julia set of mandelbulb:


* trace.jpg (23.94 KB, 420x300 - viewed 616 times.)
Logged

fractal catalisator
1Bryan1
Fractal Fertilizer
*****
Posts: 352



WWW
« Reply #7 on: September 10, 2017, 08:34:12 AM »

The point cloud results look wonderful
Logged

Find 340+ more of my fractal art at http://1bryan1.deviantart.com/gallery/
morbidorbits
Forums Freshman
**
Posts: 15


WWW
« Reply #8 on: September 30, 2017, 02:33:27 PM »

Thank you kindly Thargor, for these images.  I had no idea what the new feature was, but now I can see clearly how useful these are.   tongue stuck out
Logged

Mrz00m
Fractal Lover
**
Posts: 204


« Reply #9 on: October 13, 2017, 11:52:17 AM »

Awesome Thragor! very impressive. I'm going to hyjack your thread a bit with some technical information about point clouds.

I know quite a lot about efficiency and precision for point clouds algorithms that would be good in MB3D... So here is some programming advice for the MB3D superheroes to make faster, smaller, anti-aliased clouds:

it's good to keep all surface corner points with normals like (1,1,-1) throw out all flat points that are facing X-Y-Z normals (1,0,0) and perhaps even edges (1,1,0) normals, to throw out the aliased flat points, i.e. that are held within a plane of your resolution grid, especially for round objects...

Why is that awesome?
It compresses your point clouds size by 97 percent, from 30,000,000 points to 1,000,000 points
the point cloud is fast  to mesh, and the file is 3MB rather than 500MB
the resulting cloud is less aliased, no flat zones and staircases
it's very easy to program

here is one way to do that:

March through all the voxels (resolution grid), x, y, z, and for every solid threshold point which is worth a cloud point, measure the 6 points neighboring it on -x+x, -y+Y, -Z+z, and average those neighbor points, if the space is empty or not, to know which way the point is facing, and delete points which average to zero normals, they are rare noise points, and also disgard all the inside-volume samples which don't have empty space in one of their 6 neighbours.

That's efficient because you only do one read loop through the space in x, y,z, and check the space in all directions from every inside sample in order to obtain the surface edge and the normals in one go, and it's easy to program, about 30 lines. and in the read loop, for every cloud point, you sample the neighbours and find out if it's aliased, if it's flat, if it's a true corner point with a normal of (1,1,1) or a lesser, ridge corner facing towards (1,1,0) for example. I tend to keep only the (1,1,1) points. I have code for this process so i can provide that for you to check out if you want.

So, in one march, you have discovered all the points which lie on the outside of the structure, and you also have precise normals for them, and it less aliased because you have thrown out all the flat zones and only kept the points with the most information.

For anti-aliasing, I also did another algorythm second pass when i had all these corner cloud points without the flat zones: search the nearest point on the voxel layer of x-1 and x+1, where every point in sandwitched in between, and find out what the slope is to one or both of them... this gave me very precise normals when make for nearly perfect anti-aliased round objects from low res point clouds.

To do the anti aliasing and precise normals for all corner points that I kept, i ordered all the points in X, Y, ans Z sequentially, which takes about 1-2 seconds of processing time, and i kept an array to say how many points were on every layer x=1 to x=999, and where every layer starts from so 3 arrays in total: order the point cloud by x, say how many points are on every x layer, and third array to say where x layers start from in the giant point cloud array, so a big array of 1 million points, and two small arrays of 999 points, where value X,20 = 45means there are 45 point sin x layer, and value X,20 starts from big array point 432234, so you start reading point cloud at value 432234, read only 45 points from it, and you have anti-aliase it ... So if we are refining all point in x=20 and that face forwards, we simply read all array data starting points in x=19 and x=20, and find the nearest point on the layer below or above, and use it to construct the anti-aliased normal.

That's one way of doing it within MB3D, and there is a better way:

The above level is for a voxel grid, and within MB3D you have a lot more freedom with access to the formula results. So if i were to do clouds within mandelbulber, i wouldn't use a voxel system to do anti-aliasing and to keep the points with the most information. i would use 3x precision ray-tracing... So, every time you have found an edge voxel with an empty space in one of the 6 neighbors, you sub-raytrace within that small cube to devide that cube again by 100, or you average the exact ISO value of the neighbors to find the points precise position wihtout even raytracing, using just the neighbor point iso values, that avoids all aliasing to begin with, it's much better. for all surface points with >1 empty neighbors, you keep and compare the neighbor ISO values, a surface point of ISOval 0,1023, with -x 0,4041 and +x of -0,1044, you can move that point position on X to exactly (0,1023+0,1044)/2, anti-aliasing allpoints fairly fast on the fly, and exporting true point clouds with decimal points, and not voxel type point clouds, very nice!

So, i'd march through the grid space, check the neighbors of every solid point, throw out all the empty points and the points with 6 neighbors which are not boundaries, and sub-sample the MB3d formula, to get the color and the normal values... for example, you can use true marching cubes type logic within every edge point that you have detected, which has neighbors on 0 and on 1 and definitely contains an edge... you measure the exact position of the ISOsurface on X, Y and Z, and then average the neighbor ISO values to have a very precise position and normal value.

That still leaves the question of how to simplify the resulting giant clouds of marched, because all the points will be fairly precise interpolated, resulting in precise point maps. it would be good throw out a lot of the flat spaces whilst simultaneously keeping all the points of details in the intricate zones, non flat zones... Here is the trick:

Compare every point in the point cloud with the 20 closest points and throw out 10 neighbor points if they have very similar normal values: they are all in a flat zone coding the same information in duplicates. you can use M-nearest neighbor algorithm for that, or by putting the points into layers based on X, Y , Z integer value,(even if the points at that stage have decimal precision), and searching in the layer above and below, for all points in a given distance with the same normal. If they are on the layer above and they all point upwards, you know you have lots of flat zone points and you can eventually get very precise point clouds from MB3D with only 5 percent of the data that is currently used, using very fast algorythms that should only take 5 minutes for 3000x3000x3000 array, and can also subsample all the edge points to get 100x more precise point positions without aliasing.

« Last Edit: October 26, 2017, 12:32:43 PM by Mrz00m » Logged
Mrz00m
Fractal Lover
**
Posts: 204


« Reply #10 on: October 13, 2017, 12:33:51 PM »

Ok, to resume that technical info:

The best way in MB3D is to march xyz in one go, compare the 6 neighbors of every point, and average the ISOvalues of grid points to obtain anti-aliased clouds.

Then, simplify the point cloud by comparing neighbors in 3D or in planar nearest neighbor algorythms, and deleting all points which are on the same plane and share the same normal, and keep all points which are in more lacework zones where the neighbors all face to different directions.

result is anti-aliased clouds which are 100 times smaller.

I can recommend cloud-compare program too, it's free and multithreaded poisson mesh algorythm.

I attempted a program where you can occlude all the small voids and holes inside rough ISOsurfaces, and where you can flood-fill the voxel space, so that, you flood fill from an outside zone, it fills in all the  points up the the surface limit, and then multiply the flood fill with the shape to keep only the surface border without the inside complexities... I also wrote an option to detect all void spaces surrounded by more than 15 of of the 24 neighbors, and it turns sponge fractals into dense ones that can be flood filled and emptied and stuff, because otherwise a flood can go through into all endless caves inside the fractal.

I developed a recursive flood fill algorythm that can cope with 1000x1000x1000 voxels in less than 5 minutes with no ram problems.

When i have flood filled the fractal, and i have it's boundary, i can also flood fill from the inside, and dig out the inside of a solidified fractal until it's dug to 5-10 spaces to the nearest voids (the outside zone), and it gives me a hollow shell of the fractal, with no inside voids.

Another feature i did on the program, is that you can take the voxel/point cloud and combine it with a mesh... So you get a super advanced crazy fractal, multiply it with and elephant or a rabbit mesh, and get a rabbit which is totally crazy.

I wanted to finish the program and to send it out to you guys and found myself writing 3 different programs and now i have to integrate them into one program and make instructions and guides, and fix all the bugs,  cry, and i want to randomize it so that the PC fits the rabbit into various rotations and sizes multiplied with the fractal, and then you can go hi-res on the version which is best. it may be good for cubes and lampshades and mugs and spheres and smartphone sleeves.

This rabbit was a random render and it's ugly, i know!


* rabbit image.jpg (147.56 KB, 827x763 - viewed 160 times.)
« Last Edit: October 13, 2017, 08:27:02 PM by Mrz00m » Logged
Mrz00m
Fractal Lover
**
Posts: 204


« Reply #11 on: October 13, 2017, 01:01:06 PM »

elephant to voxel


* elephant mesh.jpg (47.83 KB, 448x535 - viewed 138 times.)

* elephant 3.jpg (155.58 KB, 686x623 - viewed 157 times.)
Logged
Mrz00m
Fractal Lover
**
Posts: 204


« Reply #12 on: October 13, 2017, 03:05:40 PM »

I found an major error in the point cloud output version 1.99, it's 3 lines of code missing. It doesnt always write the boundaries of the point cloud on negative sides of the volume. That's crucial because the point-cloud rendering tool requires bounded surfaces When the the poisson cloud to mesh standard algorithm runs on unbounded clouds, it does a random boundary to compensate:





* 2017-10-13_150251.jpg (88.98 KB, 554x564 - viewed 128 times.)

* 2017-10-13_150304.jpg (32.86 KB, 521x560 - viewed 181 times.)
« Last Edit: October 26, 2017, 12:29:59 PM by Mrz00m » Logged
Mrz00m
Fractal Lover
**
Posts: 204


« Reply #13 on: November 04, 2017, 01:23:54 PM »

If you can put an option to export 8bit greyscale stack images, I will be motivated to code a mesh renderer based on marching cubes logic, where every 8bit pixel is the iso surface value of the sampled coordinate, then i can compare boundary pixel values and find fairly exactly where the surface actually is, i.e.improve resolution by 10-100 times, if you export 8bit grey PNG instead of b/w.


If one of you can supervise my thesis, that's cool.
Logged
Buddhi
Fractal Iambus
***
Posts: 895



WWW
« Reply #14 on: November 05, 2017, 12:00:00 AM »

Mandelbulber program (not Mandelbulb3D) already uses floating point distance data when 3D mesh is being exported. There is not needed intermediate step of exporting voxel stack. You can get very smooth surfaces without aliasing. In addition it uses also color data.
3D objects are saved in PLY format which can be loaded in MeshLab.


* mesh.jpg (176.86 KB, 1200x721 - viewed 171 times.)
Logged

Pages: [1] 2 3   Go Down
  Print  
 
Jump to:  

Related Topics
Subject Started by Replies Views Last post
Please give some examples. Commission an Artist Jules Ruis 2 1836 Last post October 19, 2006, 08:42:52 PM
by dreampaint
Point cloud rendering 3D Fractal Generation mistabell 2 1966 Last post July 28, 2010, 11:39:39 PM
by Nahee_Enterprises
Point cloud and voxels system - real time unlimited detail General Discussion o0megaZer0o 3 5978 Last post March 01, 2011, 09:23:06 PM
by o0megaZer0o
Point-cloud rendering General Discussion « 1 2 » matsoljare 15 5597 Last post August 22, 2011, 11:21:25 PM
by ker2x
Generate point cloud of mesh? feature request « 1 2 » Mrz00m 25 2063 Last post August 17, 2017, 10:33:36 AM
by Sockratease

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Page created in 0.386 seconds with 28 queries. (Pretty URLs adds 0.026s, 2q)