three.MF.V3.Settings.Advanced

  1from MF.V3.Settings.Quality import Quality as MF_V3_Settings_Quality_Quality
  2from MF.V3.Settings.Scan import Scan as MF_V3_Settings_Scan_Scan
  3from typing import List
  4
  5
  6class Advanced:
  7
  8    """
  9     Advanced settings.
 10    """
 11    class Capture:
 12
 13        """
 14         Capture settings.
 15        """
 16        def __init__(self, horizontalFrequencies: List[int] = None, verticalFrequencies: List[int] = None, use: bool = None):
 17            # Projector sample rate.
 18            self.horizontalFrequencies = horizontalFrequencies
 19            # Image sample rate.
 20            self.verticalFrequencies = verticalFrequencies
 21            # Use the capture settings.
 22            self.use = use
 23
 24    class Sampling:
 25
 26        """
 27         Sampling settings.
 28        """
 29        def __init__(self, projectorSampleRate: float = None, imageSampleRate: float = None, use: bool = None):
 30            # Projector sample rate.
 31            self.projectorSampleRate = projectorSampleRate
 32            # Image sample rate.
 33            self.imageSampleRate = imageSampleRate
 34            # Use the sampling settings.
 35            self.use = use
 36
 37    class EdgeDetection:
 38
 39        """
 40         Edge detection settings.
 41        """
 42        def __init__(self, threshold: float = None, laplacianKernelRadius: int = None, gaussianBlurRadius: int = None, gaussianBlurStdDev: float = None, maximumWidthForProcessing: int = None, use: bool = None):
 43            # The edge detection threshold.
 44            self.threshold = threshold
 45            # The Laplacian kernel radius.  This must be in the range [1..5].
 46            self.laplacianKernelRadius = laplacianKernelRadius
 47            """
 48            Gaussian blur kernel radius. (Optional)  To disable, set to 0.
 49
 50            The phase images can optionally blurred before taking the Laplacian to reduce noise.
 51            However as a result, the detected edges are wider.
 52            """
 53            self.gaussianBlurRadius = gaussianBlurRadius
 54            """
 55            Gaussian blur kernel standard deviation.  This parameter is ignored if
 56            \p gaussianBlurSize is zero.
 57            """
 58            self.gaussianBlurStdDev = gaussianBlurStdDev
 59            """
 60            The maximum image width for processing. (Optional) To disable, set to 0.
 61
 62            If this value is greater than zero, the phase images are resized to the maximum
 63            width prior to computing the Laplacian and the the detected edges are then upsampled to the
 64            original size.
 65
 66            This would be done to speed up processing or to detect edges on a larger scale.
 67            """
 68            self.maximumWidthForProcessing = maximumWidthForProcessing
 69            # Use the edge detection settings.
 70            self.use = use
 71
 72    class PhaseFilter:
 73
 74        """
 75         Phase filter settings.
 76        """
 77        def __init__(self, kernelRadius: int = None, spatialWeightStdDev: float = None, use: bool = None):
 78            """
 79            The filter kernel radius.
 80
 81            A neighboring value must be within this radius to be included in the filter.
 82            If the kernel radius is set to zero, the phase filtering is disabled.
 83            """
 84            self.kernelRadius = kernelRadius
 85            """
 86            The standard deviation of the spatial weights.
 87
 88            The weight of a neighboring value is \f$ exp(-(r/s)^2) \f$  where \f$ r \f$
 89            is the distance to the central value and \f$ s \f$ is the spatial weight
 90            standard deviation.
 91
 92            If the spatial weight standard deviation is set to zero, all the spatial
 93            weights are uniformly set to 1.
 94            """
 95            self.spatialWeightStdDev = spatialWeightStdDev
 96            # Use the phase filter settings.
 97            self.use = use
 98
 99    class AdaptiveSampling:
100        """
101        Adaptive sampling settings
102
103        Adaptive sampling will downsample points in regions of low detail
104        and keep points in regions of high detail.
105        """
106        def __init__(self, rate: float, type: MF_V3_Settings_Scan_Scan.Processing.AdaptiveSampling.Type = None, use: bool = None):
107            # The sample rate [0..1] for the regions of low detail.
108            self.rate = rate
109            # Sampling type.
110            self.type = type
111            # Use the adaptive sampling settings.
112            self.use = use
113
114    class PointClipping:
115
116        """
117         Point32 clipping settings.
118        """
119        def __init__(self, type: MF_V3_Settings_Scan_Scan.Processing.PointClipping.Type = None, transform: List[float] = None, use: bool = None):
120            # Point32 clipping type.
121            self.type = type
122            # 4x4 transform mapping 3D points to the canonical point32 clipping coordinates.
123            self.transform = transform
124            # Use the point32 clipping settings.
125            self.use = use
126
127    class NormalEstimation:
128
129        """
130         Normal estimation settings.
131        """
132        def __init__(self, method: MF_V3_Settings_Scan_Scan.Processing.NormalEstimation.Method = None, maximumNeighbourCount: int = None, maximumNeighbourRadius: float = None, useMaximumNeighbourCount: bool = None, useMaximumNeighbourRadius: bool = None, use: bool = None):
133            # Normal estimation method.
134            self.method = method
135            """
136            Maximum number of nearest neighbors used to compute the normal.
137            This value is only used with the NORMAL_OPEN3D method.
138            """
139            self.maximumNeighbourCount = maximumNeighbourCount
140            # Maximum radius for a point32 to be considered a neighbour.
141            self.maximumNeighbourRadius = maximumNeighbourRadius
142            self.useMaximumNeighbourCount = useMaximumNeighbourCount
143            self.useMaximumNeighbourRadius = useMaximumNeighbourRadius
144            # Use the normal estimation settings.
145            self.use = use
146
147    class OutlierRemoval:
148
149        """
150         Radius outlier removal settings.
151        """
152        def __init__(self, neighbourCount: int = None, neighbourRadius: float = None, use: bool = None):
153            # The minimum number of points within the radius for a point32 to be retained.
154            self.neighbourCount = neighbourCount
155            # The neighbour search radius.
156            self.neighbourRadius = neighbourRadius
157            # Use the outlier removal settings.
158            self.use = use
159
160    class Remesh:
161
162        """
163         Remesh settings.
164        """
165        def __init__(self, quality: MF_V3_Settings_Quality_Quality = None, voxelSize: float = None, depth: int = None, scale: float = None, linearInterpolation: bool = None, use: bool = None):
166            # Remesh quality preset.
167            self.quality = quality
168            # Voxel size.
169            self.voxelSize = voxelSize
170            # Depth.
171            self.depth = depth
172            # Scale.
173            self.scale = scale
174            # Linear Interpolation.
175            self.linearInterpolation = linearInterpolation
176            # Use the remesh settings.
177            self.use = use
178
179    class Camera:
180
181        """
182         Camera settings.
183        """
184        def __init__(self, useContinuousExposureValues: bool = None):
185            self.useContinuousExposureValues = useContinuousExposureValues
186
187    class Turntable:
188
189        """
190         Turntable settings.
191        """
192        def __init__(self, rampAngle: int = None, pointClippingRadius: float = None, pointClippingMinHeight: float = None, pointClippingMaxHeight: float = None, use: bool = None):
193            # The angle in degrees to slow down the turntable at the end of a rotation.
194            self.rampAngle = rampAngle
195            # The radius of the point clipping cylinder.
196            self.pointClippingRadius = pointClippingRadius
197            # The minimum height of the point clipping cylinder.
198            self.pointClippingMinHeight = pointClippingMinHeight
199            # The maximum height of the point clipping cylinder.
200            self.pointClippingMaxHeight = pointClippingMaxHeight
201            # Use the turntable settings.
202            self.use = use
203
204    def __init__(self, capture: 'Capture' = None, sampling: 'Sampling' = None, edgeDetection: 'EdgeDetection' = None, phaseFilter: 'PhaseFilter' = None, adaptiveSampling: 'AdaptiveSampling' = None, normalEstimation: 'NormalEstimation' = None, outlierRemoval: 'OutlierRemoval' = None, remesh: 'Remesh' = None, camera: 'Camera' = None, turntable: 'Turntable' = None):
205        # Capture settings.
206        self.capture = capture
207        # Sampling settings.
208        self.sampling = sampling
209        # Edge detection settings.
210        self.edgeDetection = edgeDetection
211        # Phase filter settings.
212        self.phaseFilter = phaseFilter
213        # Adaptive sampling settings.
214        self.adaptiveSampling = adaptiveSampling
215        # Normal estimation settings.
216        self.normalEstimation = normalEstimation
217        # Radius outlier removal settings.
218        self.outlierRemoval = outlierRemoval
219        # Remesh settings.
220        self.remesh = remesh
221        # Camera settings.
222        self.camera = camera
223        # Turntable settings.
224        self.turntable = turntable
class Advanced:
  7class Advanced:
  8
  9    """
 10     Advanced settings.
 11    """
 12    class Capture:
 13
 14        """
 15         Capture settings.
 16        """
 17        def __init__(self, horizontalFrequencies: List[int] = None, verticalFrequencies: List[int] = None, use: bool = None):
 18            # Projector sample rate.
 19            self.horizontalFrequencies = horizontalFrequencies
 20            # Image sample rate.
 21            self.verticalFrequencies = verticalFrequencies
 22            # Use the capture settings.
 23            self.use = use
 24
 25    class Sampling:
 26
 27        """
 28         Sampling settings.
 29        """
 30        def __init__(self, projectorSampleRate: float = None, imageSampleRate: float = None, use: bool = None):
 31            # Projector sample rate.
 32            self.projectorSampleRate = projectorSampleRate
 33            # Image sample rate.
 34            self.imageSampleRate = imageSampleRate
 35            # Use the sampling settings.
 36            self.use = use
 37
 38    class EdgeDetection:
 39
 40        """
 41         Edge detection settings.
 42        """
 43        def __init__(self, threshold: float = None, laplacianKernelRadius: int = None, gaussianBlurRadius: int = None, gaussianBlurStdDev: float = None, maximumWidthForProcessing: int = None, use: bool = None):
 44            # The edge detection threshold.
 45            self.threshold = threshold
 46            # The Laplacian kernel radius.  This must be in the range [1..5].
 47            self.laplacianKernelRadius = laplacianKernelRadius
 48            """
 49            Gaussian blur kernel radius. (Optional)  To disable, set to 0.
 50
 51            The phase images can optionally blurred before taking the Laplacian to reduce noise.
 52            However as a result, the detected edges are wider.
 53            """
 54            self.gaussianBlurRadius = gaussianBlurRadius
 55            """
 56            Gaussian blur kernel standard deviation.  This parameter is ignored if
 57            \p gaussianBlurSize is zero.
 58            """
 59            self.gaussianBlurStdDev = gaussianBlurStdDev
 60            """
 61            The maximum image width for processing. (Optional) To disable, set to 0.
 62
 63            If this value is greater than zero, the phase images are resized to the maximum
 64            width prior to computing the Laplacian and the the detected edges are then upsampled to the
 65            original size.
 66
 67            This would be done to speed up processing or to detect edges on a larger scale.
 68            """
 69            self.maximumWidthForProcessing = maximumWidthForProcessing
 70            # Use the edge detection settings.
 71            self.use = use
 72
 73    class PhaseFilter:
 74
 75        """
 76         Phase filter settings.
 77        """
 78        def __init__(self, kernelRadius: int = None, spatialWeightStdDev: float = None, use: bool = None):
 79            """
 80            The filter kernel radius.
 81
 82            A neighboring value must be within this radius to be included in the filter.
 83            If the kernel radius is set to zero, the phase filtering is disabled.
 84            """
 85            self.kernelRadius = kernelRadius
 86            """
 87            The standard deviation of the spatial weights.
 88
 89            The weight of a neighboring value is \f$ exp(-(r/s)^2) \f$  where \f$ r \f$
 90            is the distance to the central value and \f$ s \f$ is the spatial weight
 91            standard deviation.
 92
 93            If the spatial weight standard deviation is set to zero, all the spatial
 94            weights are uniformly set to 1.
 95            """
 96            self.spatialWeightStdDev = spatialWeightStdDev
 97            # Use the phase filter settings.
 98            self.use = use
 99
100    class AdaptiveSampling:
101        """
102        Adaptive sampling settings
103
104        Adaptive sampling will downsample points in regions of low detail
105        and keep points in regions of high detail.
106        """
107        def __init__(self, rate: float, type: MF_V3_Settings_Scan_Scan.Processing.AdaptiveSampling.Type = None, use: bool = None):
108            # The sample rate [0..1] for the regions of low detail.
109            self.rate = rate
110            # Sampling type.
111            self.type = type
112            # Use the adaptive sampling settings.
113            self.use = use
114
115    class PointClipping:
116
117        """
118         Point32 clipping settings.
119        """
120        def __init__(self, type: MF_V3_Settings_Scan_Scan.Processing.PointClipping.Type = None, transform: List[float] = None, use: bool = None):
121            # Point32 clipping type.
122            self.type = type
123            # 4x4 transform mapping 3D points to the canonical point32 clipping coordinates.
124            self.transform = transform
125            # Use the point32 clipping settings.
126            self.use = use
127
128    class NormalEstimation:
129
130        """
131         Normal estimation settings.
132        """
133        def __init__(self, method: MF_V3_Settings_Scan_Scan.Processing.NormalEstimation.Method = None, maximumNeighbourCount: int = None, maximumNeighbourRadius: float = None, useMaximumNeighbourCount: bool = None, useMaximumNeighbourRadius: bool = None, use: bool = None):
134            # Normal estimation method.
135            self.method = method
136            """
137            Maximum number of nearest neighbors used to compute the normal.
138            This value is only used with the NORMAL_OPEN3D method.
139            """
140            self.maximumNeighbourCount = maximumNeighbourCount
141            # Maximum radius for a point32 to be considered a neighbour.
142            self.maximumNeighbourRadius = maximumNeighbourRadius
143            self.useMaximumNeighbourCount = useMaximumNeighbourCount
144            self.useMaximumNeighbourRadius = useMaximumNeighbourRadius
145            # Use the normal estimation settings.
146            self.use = use
147
148    class OutlierRemoval:
149
150        """
151         Radius outlier removal settings.
152        """
153        def __init__(self, neighbourCount: int = None, neighbourRadius: float = None, use: bool = None):
154            # The minimum number of points within the radius for a point32 to be retained.
155            self.neighbourCount = neighbourCount
156            # The neighbour search radius.
157            self.neighbourRadius = neighbourRadius
158            # Use the outlier removal settings.
159            self.use = use
160
161    class Remesh:
162
163        """
164         Remesh settings.
165        """
166        def __init__(self, quality: MF_V3_Settings_Quality_Quality = None, voxelSize: float = None, depth: int = None, scale: float = None, linearInterpolation: bool = None, use: bool = None):
167            # Remesh quality preset.
168            self.quality = quality
169            # Voxel size.
170            self.voxelSize = voxelSize
171            # Depth.
172            self.depth = depth
173            # Scale.
174            self.scale = scale
175            # Linear Interpolation.
176            self.linearInterpolation = linearInterpolation
177            # Use the remesh settings.
178            self.use = use
179
180    class Camera:
181
182        """
183         Camera settings.
184        """
185        def __init__(self, useContinuousExposureValues: bool = None):
186            self.useContinuousExposureValues = useContinuousExposureValues
187
188    class Turntable:
189
190        """
191         Turntable settings.
192        """
193        def __init__(self, rampAngle: int = None, pointClippingRadius: float = None, pointClippingMinHeight: float = None, pointClippingMaxHeight: float = None, use: bool = None):
194            # The angle in degrees to slow down the turntable at the end of a rotation.
195            self.rampAngle = rampAngle
196            # The radius of the point clipping cylinder.
197            self.pointClippingRadius = pointClippingRadius
198            # The minimum height of the point clipping cylinder.
199            self.pointClippingMinHeight = pointClippingMinHeight
200            # The maximum height of the point clipping cylinder.
201            self.pointClippingMaxHeight = pointClippingMaxHeight
202            # Use the turntable settings.
203            self.use = use
204
205    def __init__(self, capture: 'Capture' = None, sampling: 'Sampling' = None, edgeDetection: 'EdgeDetection' = None, phaseFilter: 'PhaseFilter' = None, adaptiveSampling: 'AdaptiveSampling' = None, normalEstimation: 'NormalEstimation' = None, outlierRemoval: 'OutlierRemoval' = None, remesh: 'Remesh' = None, camera: 'Camera' = None, turntable: 'Turntable' = None):
206        # Capture settings.
207        self.capture = capture
208        # Sampling settings.
209        self.sampling = sampling
210        # Edge detection settings.
211        self.edgeDetection = edgeDetection
212        # Phase filter settings.
213        self.phaseFilter = phaseFilter
214        # Adaptive sampling settings.
215        self.adaptiveSampling = adaptiveSampling
216        # Normal estimation settings.
217        self.normalEstimation = normalEstimation
218        # Radius outlier removal settings.
219        self.outlierRemoval = outlierRemoval
220        # Remesh settings.
221        self.remesh = remesh
222        # Camera settings.
223        self.camera = camera
224        # Turntable settings.
225        self.turntable = turntable

Advanced settings.

Advanced( capture: Advanced.Capture = None, sampling: Advanced.Sampling = None, edgeDetection: Advanced.EdgeDetection = None, phaseFilter: Advanced.PhaseFilter = None, adaptiveSampling: Advanced.AdaptiveSampling = None, normalEstimation: Advanced.NormalEstimation = None, outlierRemoval: Advanced.OutlierRemoval = None, remesh: Advanced.Remesh = None, camera: Advanced.Camera = None, turntable: Advanced.Turntable = None)
205    def __init__(self, capture: 'Capture' = None, sampling: 'Sampling' = None, edgeDetection: 'EdgeDetection' = None, phaseFilter: 'PhaseFilter' = None, adaptiveSampling: 'AdaptiveSampling' = None, normalEstimation: 'NormalEstimation' = None, outlierRemoval: 'OutlierRemoval' = None, remesh: 'Remesh' = None, camera: 'Camera' = None, turntable: 'Turntable' = None):
206        # Capture settings.
207        self.capture = capture
208        # Sampling settings.
209        self.sampling = sampling
210        # Edge detection settings.
211        self.edgeDetection = edgeDetection
212        # Phase filter settings.
213        self.phaseFilter = phaseFilter
214        # Adaptive sampling settings.
215        self.adaptiveSampling = adaptiveSampling
216        # Normal estimation settings.
217        self.normalEstimation = normalEstimation
218        # Radius outlier removal settings.
219        self.outlierRemoval = outlierRemoval
220        # Remesh settings.
221        self.remesh = remesh
222        # Camera settings.
223        self.camera = camera
224        # Turntable settings.
225        self.turntable = turntable
capture
sampling
edgeDetection
phaseFilter
adaptiveSampling
normalEstimation
outlierRemoval
remesh
camera
turntable
class Advanced.Capture:
12    class Capture:
13
14        """
15         Capture settings.
16        """
17        def __init__(self, horizontalFrequencies: List[int] = None, verticalFrequencies: List[int] = None, use: bool = None):
18            # Projector sample rate.
19            self.horizontalFrequencies = horizontalFrequencies
20            # Image sample rate.
21            self.verticalFrequencies = verticalFrequencies
22            # Use the capture settings.
23            self.use = use

Capture settings.

Advanced.Capture( horizontalFrequencies: List[int] = None, verticalFrequencies: List[int] = None, use: bool = None)
17        def __init__(self, horizontalFrequencies: List[int] = None, verticalFrequencies: List[int] = None, use: bool = None):
18            # Projector sample rate.
19            self.horizontalFrequencies = horizontalFrequencies
20            # Image sample rate.
21            self.verticalFrequencies = verticalFrequencies
22            # Use the capture settings.
23            self.use = use
horizontalFrequencies
verticalFrequencies
use
class Advanced.Sampling:
25    class Sampling:
26
27        """
28         Sampling settings.
29        """
30        def __init__(self, projectorSampleRate: float = None, imageSampleRate: float = None, use: bool = None):
31            # Projector sample rate.
32            self.projectorSampleRate = projectorSampleRate
33            # Image sample rate.
34            self.imageSampleRate = imageSampleRate
35            # Use the sampling settings.
36            self.use = use

Sampling settings.

Advanced.Sampling( projectorSampleRate: float = None, imageSampleRate: float = None, use: bool = None)
30        def __init__(self, projectorSampleRate: float = None, imageSampleRate: float = None, use: bool = None):
31            # Projector sample rate.
32            self.projectorSampleRate = projectorSampleRate
33            # Image sample rate.
34            self.imageSampleRate = imageSampleRate
35            # Use the sampling settings.
36            self.use = use
projectorSampleRate
imageSampleRate
use
class Advanced.EdgeDetection:
38    class EdgeDetection:
39
40        """
41         Edge detection settings.
42        """
43        def __init__(self, threshold: float = None, laplacianKernelRadius: int = None, gaussianBlurRadius: int = None, gaussianBlurStdDev: float = None, maximumWidthForProcessing: int = None, use: bool = None):
44            # The edge detection threshold.
45            self.threshold = threshold
46            # The Laplacian kernel radius.  This must be in the range [1..5].
47            self.laplacianKernelRadius = laplacianKernelRadius
48            """
49            Gaussian blur kernel radius. (Optional)  To disable, set to 0.
50
51            The phase images can optionally blurred before taking the Laplacian to reduce noise.
52            However as a result, the detected edges are wider.
53            """
54            self.gaussianBlurRadius = gaussianBlurRadius
55            """
56            Gaussian blur kernel standard deviation.  This parameter is ignored if
57            \p gaussianBlurSize is zero.
58            """
59            self.gaussianBlurStdDev = gaussianBlurStdDev
60            """
61            The maximum image width for processing. (Optional) To disable, set to 0.
62
63            If this value is greater than zero, the phase images are resized to the maximum
64            width prior to computing the Laplacian and the the detected edges are then upsampled to the
65            original size.
66
67            This would be done to speed up processing or to detect edges on a larger scale.
68            """
69            self.maximumWidthForProcessing = maximumWidthForProcessing
70            # Use the edge detection settings.
71            self.use = use

Edge detection settings.

Advanced.EdgeDetection( threshold: float = None, laplacianKernelRadius: int = None, gaussianBlurRadius: int = None, gaussianBlurStdDev: float = None, maximumWidthForProcessing: int = None, use: bool = None)
43        def __init__(self, threshold: float = None, laplacianKernelRadius: int = None, gaussianBlurRadius: int = None, gaussianBlurStdDev: float = None, maximumWidthForProcessing: int = None, use: bool = None):
44            # The edge detection threshold.
45            self.threshold = threshold
46            # The Laplacian kernel radius.  This must be in the range [1..5].
47            self.laplacianKernelRadius = laplacianKernelRadius
48            """
49            Gaussian blur kernel radius. (Optional)  To disable, set to 0.
50
51            The phase images can optionally blurred before taking the Laplacian to reduce noise.
52            However as a result, the detected edges are wider.
53            """
54            self.gaussianBlurRadius = gaussianBlurRadius
55            """
56            Gaussian blur kernel standard deviation.  This parameter is ignored if
57            \p gaussianBlurSize is zero.
58            """
59            self.gaussianBlurStdDev = gaussianBlurStdDev
60            """
61            The maximum image width for processing. (Optional) To disable, set to 0.
62
63            If this value is greater than zero, the phase images are resized to the maximum
64            width prior to computing the Laplacian and the the detected edges are then upsampled to the
65            original size.
66
67            This would be done to speed up processing or to detect edges on a larger scale.
68            """
69            self.maximumWidthForProcessing = maximumWidthForProcessing
70            # Use the edge detection settings.
71            self.use = use
threshold
laplacianKernelRadius

Gaussian blur kernel radius. (Optional) To disable, set to 0.

The phase images can optionally blurred before taking the Laplacian to reduce noise. However as a result, the detected edges are wider.

gaussianBlurRadius

Gaussian blur kernel standard deviation. This parameter is ignored if \p gaussianBlurSize is zero.

gaussianBlurStdDev

The maximum image width for processing. (Optional) To disable, set to 0.

If this value is greater than zero, the phase images are resized to the maximum width prior to computing the Laplacian and the the detected edges are then upsampled to the original size.

This would be done to speed up processing or to detect edges on a larger scale.

maximumWidthForProcessing
use
class Advanced.PhaseFilter:
73    class PhaseFilter:
74
75        """
76         Phase filter settings.
77        """
78        def __init__(self, kernelRadius: int = None, spatialWeightStdDev: float = None, use: bool = None):
79            """
80            The filter kernel radius.
81
82            A neighboring value must be within this radius to be included in the filter.
83            If the kernel radius is set to zero, the phase filtering is disabled.
84            """
85            self.kernelRadius = kernelRadius
86            """
87            The standard deviation of the spatial weights.
88
89            The weight of a neighboring value is \f$ exp(-(r/s)^2) \f$  where \f$ r \f$
90            is the distance to the central value and \f$ s \f$ is the spatial weight
91            standard deviation.
92
93            If the spatial weight standard deviation is set to zero, all the spatial
94            weights are uniformly set to 1.
95            """
96            self.spatialWeightStdDev = spatialWeightStdDev
97            # Use the phase filter settings.
98            self.use = use

Phase filter settings.

Advanced.PhaseFilter( kernelRadius: int = None, spatialWeightStdDev: float = None, use: bool = None)
78        def __init__(self, kernelRadius: int = None, spatialWeightStdDev: float = None, use: bool = None):
79            """
80            The filter kernel radius.
81
82            A neighboring value must be within this radius to be included in the filter.
83            If the kernel radius is set to zero, the phase filtering is disabled.
84            """
85            self.kernelRadius = kernelRadius
86            """
87            The standard deviation of the spatial weights.
88
89            The weight of a neighboring value is \f$ exp(-(r/s)^2) \f$  where \f$ r \f$
90            is the distance to the central value and \f$ s \f$ is the spatial weight
91            standard deviation.
92
93            If the spatial weight standard deviation is set to zero, all the spatial
94            weights are uniformly set to 1.
95            """
96            self.spatialWeightStdDev = spatialWeightStdDev
97            # Use the phase filter settings.
98            self.use = use

The filter kernel radius.

A neighboring value must be within this radius to be included in the filter. If the kernel radius is set to zero, the phase filtering is disabled.

kernelRadius

The standard deviation of the spatial weights.

The weight of a neighboring value is $ exp(-(r/s)^2) $ where $ r $ is the distance to the central value and $ s $ is the spatial weight standard deviation.

If the spatial weight standard deviation is set to zero, all the spatial weights are uniformly set to 1.

spatialWeightStdDev
use
class Advanced.AdaptiveSampling:
100    class AdaptiveSampling:
101        """
102        Adaptive sampling settings
103
104        Adaptive sampling will downsample points in regions of low detail
105        and keep points in regions of high detail.
106        """
107        def __init__(self, rate: float, type: MF_V3_Settings_Scan_Scan.Processing.AdaptiveSampling.Type = None, use: bool = None):
108            # The sample rate [0..1] for the regions of low detail.
109            self.rate = rate
110            # Sampling type.
111            self.type = type
112            # Use the adaptive sampling settings.
113            self.use = use

Adaptive sampling settings

Adaptive sampling will downsample points in regions of low detail and keep points in regions of high detail.

Advanced.AdaptiveSampling( rate: float, type: MF.V3.Settings.Scan.Scan.Processing.AdaptiveSampling.Type = None, use: bool = None)
107        def __init__(self, rate: float, type: MF_V3_Settings_Scan_Scan.Processing.AdaptiveSampling.Type = None, use: bool = None):
108            # The sample rate [0..1] for the regions of low detail.
109            self.rate = rate
110            # Sampling type.
111            self.type = type
112            # Use the adaptive sampling settings.
113            self.use = use
rate
type
use
class Advanced.PointClipping:
115    class PointClipping:
116
117        """
118         Point32 clipping settings.
119        """
120        def __init__(self, type: MF_V3_Settings_Scan_Scan.Processing.PointClipping.Type = None, transform: List[float] = None, use: bool = None):
121            # Point32 clipping type.
122            self.type = type
123            # 4x4 transform mapping 3D points to the canonical point32 clipping coordinates.
124            self.transform = transform
125            # Use the point32 clipping settings.
126            self.use = use

Point32 clipping settings.

Advanced.PointClipping( type: MF.V3.Settings.Scan.Scan.Processing.PointClipping.Type = None, transform: List[float] = None, use: bool = None)
120        def __init__(self, type: MF_V3_Settings_Scan_Scan.Processing.PointClipping.Type = None, transform: List[float] = None, use: bool = None):
121            # Point32 clipping type.
122            self.type = type
123            # 4x4 transform mapping 3D points to the canonical point32 clipping coordinates.
124            self.transform = transform
125            # Use the point32 clipping settings.
126            self.use = use
type
transform
use
class Advanced.NormalEstimation:
128    class NormalEstimation:
129
130        """
131         Normal estimation settings.
132        """
133        def __init__(self, method: MF_V3_Settings_Scan_Scan.Processing.NormalEstimation.Method = None, maximumNeighbourCount: int = None, maximumNeighbourRadius: float = None, useMaximumNeighbourCount: bool = None, useMaximumNeighbourRadius: bool = None, use: bool = None):
134            # Normal estimation method.
135            self.method = method
136            """
137            Maximum number of nearest neighbors used to compute the normal.
138            This value is only used with the NORMAL_OPEN3D method.
139            """
140            self.maximumNeighbourCount = maximumNeighbourCount
141            # Maximum radius for a point32 to be considered a neighbour.
142            self.maximumNeighbourRadius = maximumNeighbourRadius
143            self.useMaximumNeighbourCount = useMaximumNeighbourCount
144            self.useMaximumNeighbourRadius = useMaximumNeighbourRadius
145            # Use the normal estimation settings.
146            self.use = use

Normal estimation settings.

Advanced.NormalEstimation( method: MF.V3.Settings.Scan.Scan.Processing.NormalEstimation.Method = None, maximumNeighbourCount: int = None, maximumNeighbourRadius: float = None, useMaximumNeighbourCount: bool = None, useMaximumNeighbourRadius: bool = None, use: bool = None)
133        def __init__(self, method: MF_V3_Settings_Scan_Scan.Processing.NormalEstimation.Method = None, maximumNeighbourCount: int = None, maximumNeighbourRadius: float = None, useMaximumNeighbourCount: bool = None, useMaximumNeighbourRadius: bool = None, use: bool = None):
134            # Normal estimation method.
135            self.method = method
136            """
137            Maximum number of nearest neighbors used to compute the normal.
138            This value is only used with the NORMAL_OPEN3D method.
139            """
140            self.maximumNeighbourCount = maximumNeighbourCount
141            # Maximum radius for a point32 to be considered a neighbour.
142            self.maximumNeighbourRadius = maximumNeighbourRadius
143            self.useMaximumNeighbourCount = useMaximumNeighbourCount
144            self.useMaximumNeighbourRadius = useMaximumNeighbourRadius
145            # Use the normal estimation settings.
146            self.use = use
method

Maximum number of nearest neighbors used to compute the normal. This value is only used with the NORMAL_OPEN3D method.

maximumNeighbourCount
maximumNeighbourRadius
useMaximumNeighbourCount
useMaximumNeighbourRadius
use
class Advanced.OutlierRemoval:
148    class OutlierRemoval:
149
150        """
151         Radius outlier removal settings.
152        """
153        def __init__(self, neighbourCount: int = None, neighbourRadius: float = None, use: bool = None):
154            # The minimum number of points within the radius for a point32 to be retained.
155            self.neighbourCount = neighbourCount
156            # The neighbour search radius.
157            self.neighbourRadius = neighbourRadius
158            # Use the outlier removal settings.
159            self.use = use

Radius outlier removal settings.

Advanced.OutlierRemoval( neighbourCount: int = None, neighbourRadius: float = None, use: bool = None)
153        def __init__(self, neighbourCount: int = None, neighbourRadius: float = None, use: bool = None):
154            # The minimum number of points within the radius for a point32 to be retained.
155            self.neighbourCount = neighbourCount
156            # The neighbour search radius.
157            self.neighbourRadius = neighbourRadius
158            # Use the outlier removal settings.
159            self.use = use
neighbourCount
neighbourRadius
use
class Advanced.Remesh:
161    class Remesh:
162
163        """
164         Remesh settings.
165        """
166        def __init__(self, quality: MF_V3_Settings_Quality_Quality = None, voxelSize: float = None, depth: int = None, scale: float = None, linearInterpolation: bool = None, use: bool = None):
167            # Remesh quality preset.
168            self.quality = quality
169            # Voxel size.
170            self.voxelSize = voxelSize
171            # Depth.
172            self.depth = depth
173            # Scale.
174            self.scale = scale
175            # Linear Interpolation.
176            self.linearInterpolation = linearInterpolation
177            # Use the remesh settings.
178            self.use = use

Remesh settings.

Advanced.Remesh( quality: MF.V3.Settings.Quality.Quality = None, voxelSize: float = None, depth: int = None, scale: float = None, linearInterpolation: bool = None, use: bool = None)
166        def __init__(self, quality: MF_V3_Settings_Quality_Quality = None, voxelSize: float = None, depth: int = None, scale: float = None, linearInterpolation: bool = None, use: bool = None):
167            # Remesh quality preset.
168            self.quality = quality
169            # Voxel size.
170            self.voxelSize = voxelSize
171            # Depth.
172            self.depth = depth
173            # Scale.
174            self.scale = scale
175            # Linear Interpolation.
176            self.linearInterpolation = linearInterpolation
177            # Use the remesh settings.
178            self.use = use
quality
voxelSize
depth
scale
linearInterpolation
use
class Advanced.Camera:
180    class Camera:
181
182        """
183         Camera settings.
184        """
185        def __init__(self, useContinuousExposureValues: bool = None):
186            self.useContinuousExposureValues = useContinuousExposureValues

Camera settings.

Advanced.Camera(useContinuousExposureValues: bool = None)
185        def __init__(self, useContinuousExposureValues: bool = None):
186            self.useContinuousExposureValues = useContinuousExposureValues
useContinuousExposureValues
class Advanced.Turntable:
188    class Turntable:
189
190        """
191         Turntable settings.
192        """
193        def __init__(self, rampAngle: int = None, pointClippingRadius: float = None, pointClippingMinHeight: float = None, pointClippingMaxHeight: float = None, use: bool = None):
194            # The angle in degrees to slow down the turntable at the end of a rotation.
195            self.rampAngle = rampAngle
196            # The radius of the point clipping cylinder.
197            self.pointClippingRadius = pointClippingRadius
198            # The minimum height of the point clipping cylinder.
199            self.pointClippingMinHeight = pointClippingMinHeight
200            # The maximum height of the point clipping cylinder.
201            self.pointClippingMaxHeight = pointClippingMaxHeight
202            # Use the turntable settings.
203            self.use = use

Turntable settings.

Advanced.Turntable( rampAngle: int = None, pointClippingRadius: float = None, pointClippingMinHeight: float = None, pointClippingMaxHeight: float = None, use: bool = None)
193        def __init__(self, rampAngle: int = None, pointClippingRadius: float = None, pointClippingMinHeight: float = None, pointClippingMaxHeight: float = None, use: bool = None):
194            # The angle in degrees to slow down the turntable at the end of a rotation.
195            self.rampAngle = rampAngle
196            # The radius of the point clipping cylinder.
197            self.pointClippingRadius = pointClippingRadius
198            # The minimum height of the point clipping cylinder.
199            self.pointClippingMinHeight = pointClippingMinHeight
200            # The maximum height of the point clipping cylinder.
201            self.pointClippingMaxHeight = pointClippingMaxHeight
202            # Use the turntable settings.
203            self.use = use
rampAngle
pointClippingRadius
pointClippingMinHeight
pointClippingMaxHeight
use