Blog Archives

Real-time Editable Pointcloud Implicit Surface Raytracing & Learned Properties Estimation (summary)

Summary video of completed thesis

More brushes

 

 

Real-time implicit surface raytracing

xyzrgb dragon 1.2 million pointcloud

Count: 1.2 million points (1204929)
Model: XYZRGB dragon decimation (nonuniform point spacing)
Speed: similar to bunny model
Implicit surface & disk renders of pointcloud with normals, diffuse & shadow.

Octree construction memory decreased by 1/1600 to allow models greater than 400k points.

Normals estimation: 2 learning iterations
Normals unification: Multi-degree with metrics confidence, angle & residual.
Radius for shading: geometric pair fill & triangle fill

 

 

Reflection & Radius fix

Fixed major bugs in shading radius. Now speed is almost constant regardless of points count.
Fixed a reflection bug. Larger models are slower in reflection.
Models: 36k, 435k & 1204k points.
Varying radius affects both shading & reflection smoothness.

 

GTX 465 is quite old by now, but after the bug fixes the speed is around 30ms at the default far view, then gets slower with more zoom. Reflection’s about 4x slower, with 5 rays per pixel it seems reasonable.

 

Raytracing PCD as Implicit Surface

Implicit surface: higher quality than disk render, more accurate surface silhouettes.
Raytracing at interactive rates (video sped up)

3 clips:
1) No octree
2) In octree, radius 0.1: takes 60% time, very small speedup (compared to disk) since smooth surface requires more points. A denser model will benefit more from octree.
3) Radius 0.05: 36% time of 0.1 radius is a significant speedup. Smaller radius has less octree artifact due to less overlap, but less points mean it is statistically less stable as shown by the noise around ears.

Raytracing PCD as Implicit Surface

Iteratively project point x onto implicit surface, until x converges:

Read the rest of this entry

Update 05/07/2011: Normals Fix & Radius Learning

Introduction

Normals fixes page 1. r radius estimation page 6.

Unify Normals

BSP is very fast but has a percentage of failed unifications at sharper regions, and required
tuning the r radii by remapping the per point r. MST ran for 2 hours but could
not finish. The following explain each improvement to minimize failed
unification.

r limits

nn.r has been scaled down by 0.5, and min
clamped by distance to the kth neighbor (set as degrees=6). Remap changes are
fairly unstable, because larger r unifies irrelevant neighbors. If nn.r is
minimized to 1st neighbor distance, it effectively becomes MST. But distance similarity
alone does not correctly unify neighbors.

k limits

Each unifier can only affect k nearest
ununified neighbors (set as degrees=6). Where k=1 models MST, k limit is a
tradeoff between normals propagation speed versus accuracy. Because corner
points have highly varied neighbors distances, k limit is more stable than r
limits. This also prevents unifiers unifying across two nearby parallel
surfaces (Figure k limits).

Figure k limits.
k=Inf (left). k=6 (right).
Although
BSP takes the same iterations (44), maximum branching unifiers increased from
471 to 515.

  Read the rest of this entry