Spatial Level of Detail

I have a dataset of a 3D point cloud with various attributes that I visualize as points so far, and I want the LOD to be based on distance from the set. I want to have a generalized view from afar with smaller and larger dots, and as I zoom in, I want more dots to appear automatically with the correct spacing.

As shown in this video below, the behavior is reasonable: http://vimeo.com/61148577

I thought one of the solutions would be to use an adaptive octet, but I'm not sure if this is a good solution. I was looking for hierarchical clustering with smooth transitions, but I'm not sure which solution I have to make to fit my purpose.

Any ideas, tips on where to start? Or some specific method?

thanks

+4
source share
1 answer

The video you linked uses a 2D metabase. When metabases come together, they form droplets, not large circles. Are you okay with that?

Before continuing, you should read the introduction to metabachy. Just google 2D metabola.

So hopefully you read about metaball thresholds and dips. Your decline function should have a radius - the distance that the function falls to zero.

We can achieve the LOD effect by adjusting the threshold and radius. Basically, when you zoom out, increase the radius so that the dots affect a large area and begin to shrink together. Also, adjust the threshold so that areas with insufficient dot density begin to disappear.

I found this existing demo of jsfiddle 2D metalls and I modified it to demonstrate the LOD:

  • LOD 0: individual points in the form of circles. ( http://jsfiddle.net/TscNZ/370/ )
  • LOD 1: Isolated points begin to contract, but clusters of points begin to form droplets. ( http://jsfiddle.net/TscNZ/374/ )
  • LOD 2: The isolated dots have disappeared. Blobs less and more. (change above url to jsfiddle version 377)
  • LOD 3: Blobs are even smaller and even bigger. (change above url to jsfiddle 380 version)

As you can see in different versions of jsfiddle, changing the LOD only requires setting a few variables:

threshold = 1, max_alpha = 1, point_radius = 10, 

The key point, which many articles of metaballs do not affect: you need to use an agreement in which only values ​​above your threshold are considered "inside" the metaball. Then, when you get far, you need to set a threshold value above the peak value of your falloff function. This will cause the isolated point to completely disappear, leaving only clumps visible.

Rendering metaballs is a whole topic in itself. This jsfiddle demonstration uses a very inefficient brute force approach, but there are more efficient marching squares.

+1
source

All Articles