PTCLD2WF Process

To access this process:

  • ribbon

  • Solids ribbon >> Create >> Point Cloud Solid

See this process in the Command Table .

Process Overview

PTCLD2WF reconstructs surface data files from input point cloud files.

A single input points file containing surveyed point data is expected. Point density and arrangement can be uniform or irregular. Points can optionally be declustered and, if normal calculation is required, these stages can be performed independently of surfacing or as one combined operation, depending on @RUNMODE.

PTCLD2WF processing involves up to 3 phases, depending on the wireframe surfacing method chosen:

  1. Input points are declustered to decrease point density and encourage a more uniform point layout.

  2. Input point data is appended with normal information, indicating the normal direction to be considered when specific surfacing methods are used. Not all methods require point normal calculation.

    Normal data can also be extracted from the input points file if it is present.

  3. A surface is interpolated between points using a combination of surface method and appropriate parameters.

In all cases, the input file is a Datamine (.dm) points file and the output files are a wireframe file pair.

Note: PTCLD2WF parameters may be dependent on other settings. For example, @DEPTH, @WIDTH, @SAMPNODE, @PTWEIGHT and @BOUNDTYP are only used if @WFMETHOD is 1 or 2. Similarly, if @WIDTH is greater than zero, @DEPTH is not used.

Another example: if @WFMETHOD is not 1, @BOUNDTYP is not used.

Declustering Raw Point Cloud Data

Raw point cloud data can be denser than required for a suitable surface reconstruction.

Declustering options are:

  • Random point removal (to achieve a target @SSDIST value). This is @SSMETHOD=1.

  • To achieve a target @SSDIST distance between points. This is @SSMETHOD=2.

  • To decluster to a specific octree depth, again provided by @SSDIST). This is @SSMETHOD=3.

See DECLUST.

Computing Point Normals

Point normal computation relies on the following parameters: @NNEIGHBS and @RADIUS. An explanation of these parameters can be found in the table further below.

Point normal computation is only required if @WFMETHOD is either 1 or 2. Surface reconstruction will not complete if either method is specified and point normal data is not available. If @WFMETHOD is anything other than 1 or 2, all point normal computation parameters are ignored.

Point normals can be computed for any input point data, either as an independent task (@RUNMODE=2) or as part of the full surface reconstruction process (@RUNMODE=4). Alternatively, if normal data is already available for the input point cloud, *NORMALX, *NORMALY and *NORMALZ can be mapped beforehand.

Note: If normal attributes are specified but a run subsequently includes normal computation (e.g. @RUNMODE is either 2 or 4), computed normals will be used in preference to mapped fields.

Point Reconstruction Surfacing Methods

PTCLD2WF supports 5 different surface reconstruction methods. Some require point data to include normal directions and some, which perform a Delauney triangulation, don't.

Which method is suitable for your data depends on a range of criteria, including:

  • Point data pattern regularity.

  • Point data density and the extent of declustering required.

  • Extent of data 'noise', that is, errant points generated by data collection or preprocessing.

  • The general shape implied by a point cloud (e.g. a primitive-like cavity shape, such as a stope may require a different surfacing method to a grid of development drives, cubbies and so on.

  • Absolute point-to-surface adjacency requirements.

  • Processing time requirements.

@WFMETHOD=1

This method reconstructs a surface by solving a Poisson system (solving a 3D Laplacian system with positional value constraints). This method requires normal data to be associated with input points. Data that implies a relatively simple, singular mass, where data points are relatively evenly distributed, are often good candidates for this method. As an interpolative method, the generated surface may not lie precisely on all input points, instead forming a trend between points in 3D space.

This method cannot process point data without normal specifications. This method supports the widest range of surface generation parameters; @DEPTH, @WIDTH, @SAMPNODE, @PTWEIGHT and @BOUNDTYP.

@WFMETHOD=2

Reconstructs a surface by solving for a Smooth Signed Distance function (solving a 3D bi-Laplacian system with positional value and gradient constraints). Can be moderately more accurate than Poisson option but may also take longer. Data that implies a relatively simple, singular mass, where data points are relatively evenly distributed, are often good candidates for this method. As an interpolative method, the generated surface may not lie precisely on all input points, instead forming a trend between points in 3D space.

The following parameters are supported for surface reconstruction; @DEPTH, @WIDTH, @SAMPNODE and @PTWEIGHT.

@WFMETHOD=3

Reconstructs a surface using a Delauney triangulation method and will generally produce a watertight volume. This method doesn't require (or use) any process parameters and any parameter settings are ignored. Input points data can be of any arrangement and, whilst interpolation is minimized, point-to-surface adherence may still be inexact in places of sharp directional changes.

@WFMETHOD=4

Reconstructs a surface using a Delauney triangulation method by simulation the path of a ball rolling across the input data. The only parameter used by this method is @RADIUS which determines the radius of the rolling ball (with higher values tending to produce more general shapes).

@WFMETHOD=5

Reconstructs a surface using a fast advancing front method. It can be useful for a rapidly generated initial data preview, particular where input data is dense. It's very quick, but may be imprecise. Recommended for an initial shape preview.

Parameter Suggestions

The arrangement of points in 3D space resulting from underground scanning and monitoring systems is infinite. A surface reconstruction calculation involves interpolating the most appropriate 3D surface between those points. To achieve a satisfactory result, some guidance can be offered in the form of additional parameters. PTCLD2WF

The following examples may help you decide reasonable starting parameters for your point reconstruction scenario.

Banded CMS Data from Fixed Origin

This example relates to data captured from a fixed CMS, resulting in fan of survey points originating from strings of a common origin, captured at regular dip changes. For example:

In this case, data density varies across the data (dense at the origin and less so at distance). This variation in density tends to make interpolated solutions struggle; the large gaps at distance from the monitoring tool can be misconstrued as air, breaking the resulting wireframe up. A triangulated solution, such as @WMETHOD=3,4 or 5 is likely to generate a more natureform result.

Regularly-spaced CMS Input

This example relates to a cavity scan resulting in a dense, uniformly separated points in a grid arrangement.

In this case, the level of interpolation required is relatively low (points are never that distant from other points). As such, a Poisson (1) or SSD (2) solution is likely to provide a good result, as will Delaunay triangulation methods (3, 4 or 5).

If you're going for complete point adherence (=100% data accuracy), a triangulation method may be more appropriate, but if you want to ignore outlier or aberrant data and produce a more general (potentially smoother) result, an interpolative approach my be better in this case.

"Banded" Lidar Scan Data

In this example, scanned points are derived from a mobile LIDAR rig, with data captured at regular intervals along a series of drives.

This data arrangement presents a particular challenge as each 'band' of points contains very closely-spaced points, but the gap between each band is significantly wider than those within each band. A Delaunay method (@WFMETHOD=3,4 or 5) will often yield good results in this case as methods 1 and 2 calculate an interpolated solution between points (based on the normal direction of neighbouring points) and, because the point spacing in the data is in two very different ranges (in the bands and between the bands), a single set of parameters for interpolation can produce less accurate results.

Regular but Incomplete Data

Fixed monitoring systems can capture incomplete scenarios due to data 'shadowing' caused by obstacles within the capture zone.

In this situation, @WFMETHOD 1 or 2 with a relatively high @PTWEIGHT (<10) may help to close unwanted gaps whilst still honouring the trend of the data. This is because points will influence surface generation out to a greater distance than if @PTWEIGHT were arbitrarily low. A triangulated approach (methods 3,4 or 5) would simply bridge the gap using straight edges, which may be fine for small gaps but not for larger ones.

Point Reconstruction - Tips

The huge range of possible point file configurations makes it difficult to provide fixed rules for surfacing data, but the following general rules may help you get a good start with your reconstruction task:

  • Declustering can reduce input points and even encourage a more regular arrangement. It can significantly improve processing times. The downside is that declustering removes real world data and could be at the cost of accuracy. Declustering can be performed regardless of the surface reconstruction method.

  • Review your declustered (".._SS.dm") and normal-appended ("..._N.dm") points in the 3D window to see how declustering and normalization is performed for a run.

  • @WFMETHOD = 5 is the simplest, and is also the quickest. Start with this method to preview how simple triangulation is performed, and decide if an interpolative technique is required instead.

  • If you just want to surface between points, without any interim interpolation or trend analysis, @WFMETHOD 3, 4 or 5 are ideal. They are also very quick to complete and, other than method 4 (which requires a ball radius parameter) the only specifications required are the file to be processed and the name of the processed file.

  • @WFMETHOD 1 and 2 rely on interpolative techniques (solving a 3D Laplacian system). These can take longer to complete than the other methods, but will consider data and its surrounding points to generate a surface along an implied trend. This can be useful where data is regularly spaced, but incomplete.

  • If using @WFMETHOD 1, if @BOUNDTYP is set to 2 (a Direchlet boundary system), the output is likely to be a watertight volume. @WFMETHOD 3 is also likely to produce a closed volume.


Input Files

Name

Description

I/O Status

Required

Type

   IN

Input point cloud data file used to create the wireframe surface.

Input

Yes

Points

Output Files

Name

Description

I/O Status

Required

Type

POINTS Output file prefix for subsampled points and points with normals. A file containing subsampled points will have an _SS suffix. Points with normals will have a _SSNORM suffix. This must be specified if @RUNMODE = 1,2 or 4. Output

Yes, if @RUNMODE=1, 2 or 4.

Otherwise, no.

Points
WIRETR Output surface wireframe triangle file. Output Yes Wireframe Points

WIREPT

Output surface wireframe point file.

Output

Yes

Wireframe Triangles

Fields

Name

Description

Source

Required

Type

Default

X / Y / Z

Name of X/Y/Z coordinate field in *IN.

IN

Yes

Numeric

Undefined

NORMAL X/Y/Z

Name of X normal field in input file IN. Only used if @RUNMODE = 3 (calculate surface)

IN

No

Numeric

Undefined

RED

Name of red colour field in input file IN. Only used if @WFMETHOD is 1 or 2.

IN

No

Any

Undefined

GREEN

Name of green colour field in input file IN. Only used if @WFMETHOD is 1 or 2.

IN

No

Any

Undefined

BLUE

Name of blue colour field in input file IN. Only used if @WFMETHOD is 1 or 2.

IN

No

Any

Undefined

Parameters

Name

Description

Required

Default

Range

Values

RUNMODE

Specify the functions for the process to execute:

  1. Generate a file containing subsampled points. This file will be generated with an _SS suffix.

  2. Generate a file containing points with normals data. This file will be generated with an _SSNORM suffix. Normals data is not used if @WFMETHOD = 3, 4 or 5.

  3. Reconstruct a wireframe surface using the selected @WFMETHOD and parameters.

  4. Run the whole surface reconstruction process, including subsampling, normals computation and surface generation.

Yes

1

1,4

1,2,3,4

SSMETHOD

The method to use for subsampling.

  1. Random: SSDIST specifies number of target points to be saved and subsamples using random point removal.

  2. Spatial: SSDIST specifes a target distance between points in the subsampled set.

  3. Octree: SSDIST Resamples a cloud by replacing all the points inside each cell of the octree (at a given level of subdivision) by their gravity center.

Yes if @RUNMODE=1 or 4, otherwise no.

2

1,3

1,2,3

SSDIST

A parameter controlling the extent to which subsampling is performed and depends on the chosen @SSMETHOD.

  • Where @SSMETHOD = 1, this value represents the target number of points after resampling.

  • If @SSMETHOD=2, this value represents the target inter-sample distance after subsampling.

  • If @SSMETHOD=3, @SSDIST represents the remaining cell a the centre of gravity of the octree (the level of subdivision at which the process is applied is chosen to (roughly) match the expected number of output points).

Yes if @RUNMODE=2 or 4, otherwise no. 0.5 Undefined Undefined
NNEIGHBS The number of neighbours used when orienting the normals using a spanning tree. Normals are not required if @WFMETHOD is 3,4 or 5.

No unless:

@RUNMODE=2 or;

@RUNMODE=4 and @WFMETHOD = 1 or 2

Undefined Undefined Undefined
RADIUS

Where @WFMETHOD = 1 or 2: the neighborhood radius used to compute normals. The bigger the radius, the more points will be used to compute the local surface model, resulting in generally smoother normals but also in a longer process time. A value of zero will allow the program to compute a radius value automatically.

Where @WFMETHOD = 4, this represents the radius of the sphere used to generate the surface by rolling across the input points.

Not used if @WFMETHOD Is 3 or 5.

Yes if @WFMETHOD = 1, 2 or 4 Undefined Undefined Undefined
DEPTH

The octree depth to be used in surface construction. A higher number gives greater resolution but will be slower and use more memory. Should ideally be between 4 and 24. Values larger than 10 are likely to be process intensive. This parameter is ignored if WIDTH is specified as greater than zero.

Not considered if @WFMETHOD 3,4 or 5.

No Undefined Undefined Undefined
WIDTH

This floating point value specifies the target width of the finest level octree cells used in surface reconstruction. If set to zero then DEPTH is used to control octree size.

Not considered if @WFMETHOD 3,4 or 5.

No Undefined Undefined Undefined
WFMETHOD

The method to use to construct the wireframe surface from the set of points with oriented normals.

  1. Reconstructs a surface by solving a Poisson system (solving a 3D Laplacian system with positional value constraints).

  2. Reconstructs a surface by solving for a Smooth Signed Distance function (solving a 3D bi-Laplacian system with positional value and gradient constraints). Can be moderately more accurate than Poisson option but may also take longer.

  3. Reconstructs a surface using a Delauney triangulation method and will generally produce a watertight volume.

  4. Reconstructs a surface using a Delauney triangulation method by simulation the path of a ball rolling across the input data.

  5. Reconstructs a surface using a fast advancing front method. It can be useful for a rapidly generated initial data preview.

Yes 5 1,5 1,2,3,4,5
SAMPNODE

Number of samples per node during Reconstruction. This floating point value specifies the minimum number of sample points that should fall within an octree node as the octree construction is adapted to sampling density.

For noise-free samples, small values in the range [1.0 - 5.0] can be used.

For more noisy samples, larger values in the range [15.0 - 20.0] may be needed to provide a smoother, noise-reduced, reconstruction.

Only used if @WFMETHOD is 1 or 2.

No Undefined Undefined Undefined
PTWEIGHT The importance that interpolation of the point samples is given in the formulation of the screened Poisson equation. This is a floating point number. Only used if @WFMETHOD is 1 or 2. No Undefined Undefined Undefined
BOUNDTYP

This integer specifies the boundary type for the finite elements used in Poisson reconstruction (WFMETHOD=1). Valid values are:

  1. Free boundary constraints.

  2. Dirichlet boundary constraints. This will tend to produce watertight closed volumes when there is missing data.

  3. Neumann boundary constraints. This will tend to be less restrictive with missing data and extend the surface out of the point cloud volume.

No 1 1,3 1,2,3

Example

!START M1

# - Use !LOCDBOFF to look for files outside the local folder

# - Use local files by deleting the next line or use !LOCDBON

!LOCDBOFF

!PTCLD2WF &IN(pointcloudCMS1),

&POINTS(pointsout),

&WIRETR(comb1tr),

&WIREPT(comb1pt),*X(XPT),*Y(YPT),*Z(ZPT),@RUNMODE=1.0,

@SSMETHOD=3.0,@SSDIST=9.0,@MODEL=2.0,@NNEIGHBS=6.0,

@RADIUS=1.0,@DEPTH=12.0,@WIDTH=0.05,@WFMETHOD=2.0,

@SAMPNODE=6.0,@PTWEIGHT=10.0,@BOUNDTYP=2.0

!END