Automatic normal orientation in point clouds of building interiors
AA utomatic normal orientation in point clouds of building interiors Sebastian Ochmann and Reinhard Klein Institute of Computer Science II, University of Bonn, Germany A bstract Orienting surface normals correctly and consistently is a fundamental problem in geometry processing. Ap-plications such as visualization, feature detection, and geometry reconstruction often rely on the availabilityof correctly oriented normals. Many existing approaches for automatic orientation of normals on meshes orpoint clouds make severe assumptions on the input data or the topology of the underlying object which are notapplicable to real-world measurements of urban scenes. In contrast, our approach is specifically tailored to thechallenging case of unstructured indoor point cloud scans of multi-story, multi-room buildings. We evaluate thecorrectness and speed of our approach on multiple real-world point cloud datasets. ntroduction
For many applications in computer graphics and related domains,surface normals are an important property of 3D point cloud ormesh data. While normal directions can usually be estimatedsu ffi ciently well by analyzing local surface properties using e.g.principal component analysis (PCA) in case of point clouds,automatically determining the correct normal orientation , i.e.the sign of the normal vectors, generally is a much harder prob-lem. In particular for mesh data, there exists a wide variety ofapproaches based on principles such as voting, visibility, prop-agation, and optimization. Since point clouds are increasinglyused as a means for representing various kinds of objects andscenes in fields like architecture, design, archaeology, and cul-tural heritage, methods working directly on point clouds havealso received attention. A particularly important and discrimi-nating aspect of any method is the severity of the assumptionsmade on the input and the particular geometry represented by thedata. Regarding the input data, the assumptions range from veryrestrictive such as watertight, connected meshes, to unconnectedpolygon soups, possibly with missing parts. Point clouds poseadditional challenges for certain kinds of methods based on con-nectivity for propagation, or surfaces for performing ray castingagainst, since such information is not directly available from thedata. With respect to the class of the underlying object or scene,some methods make the assumption that the object itself is aclosed 2-manifold. While this assumption simplifies the task ofdistinguishing between inside and outside space, many kindsof larger-scale datasets such as 3D urban environments do notfulfill this requirement.Our work targets the challenging task of automatically deter-mining normal orientations in completely unstructured 3D pointcloud datasets of building interiors with multiple stories androoms. We are specifically interested in the main structure ofthe building consisting of floor, ceiling, and wall surfaces. Thisinformation is an important prerequisite for e.g. reconstructiontasks aiming at automatic generation of higher-level 3D modelsfrom point cloud data. Clearly, knowledge about correct surfaceorientation in previously unstructured data greatly helps to dis-tinguish between room interior, interior of wall volumes, andoutside area. Point cloud scans of building interiors, possiblyincluding parts of exterior façade and parts of the outside areascanned through windows, pose two particular challenges. First,such datasets usually consist of millions of points and cover arelatively large area which requires e ffi cient means of process-ing them. Second, the constellation of rooms within a buildingcan be quite complex, yielding a much more intricate surfacetopology than 2-manifolds. The proposed method for automatically orienting normals inpoint clouds of building interiors combines di ff erent ideas to pro-vide e ffi cient processing of real-world scans. We first simplifythe scene by detecting planes in the point cloud and subsequentlyworking on surface patches instead of individual points. Oneadvantage of working on patches instead of individual points isthe drastically reduced computational complexity. In addition,the surface representation enables us to employ a specifically tai-lored path tracing approach to estimate which side of each patchis probably room interior, wall, or outside area. While visibilityinformation is exploited by several algorithms, our method notonly takes direct visibility into account but also higher-ordervisibility through multiple ray bounces. Using this initial, per-patch estimation, we then vote for a global orientation for eachsurface to increase the robustness of the estimation. Finally, thedetermined surface orientations are used to flip the normal ori-entations of the points belonging to the respective surface. Ourapproach is evaluated on multiple real-world datasets for whichground truth normal orientations for comparison are availableby means of known scanner positions.In summary, the contribution of our approach is a fast and fullyautomatic normal orientation estimation for the challengingscenario of indoor building scans without strong assumptions onthe input data. The results of our method can greatly facilitatetasks such as reconstruction of 3D models from point cloudswhich require knowledge about the orientation of surfaces of themain building structure such as floors, ceilings, and walls. elated W ork A classical propagation-based approach for orienting normals ofpoint sets is described by Hoppe et al. [1]. It derives a consistentorientation of tangent planes for data points by means of solvingan optimization problem on the Riemannian graph of the pointswith edge weights proportional to the normal direction deviationbetween neighboring points. The method is only applicable fordensely sampled, closed surfaces and may fail at sharp creases.König et al. [2] base their method on the method by Hoppeet al. [1] but propose a new unreliability cost for traversingthe Riemannian graph based on Hermite curves. One recentpoint cloud based approach by Schertler et al. [3] generalizespropagation as a graph-based energy minimization problem. Tothis end, the graph-based idea by Hoppe et al. [1] is reformulatedto a maximum-likelihood problem on a Markov random field.They also propose to use the streaming approach by Pajarola [4]to perform out-of-core processing. a r X i v : . [ c s . G R ] A p r utomatic normal orientation in point clouds of building interiors / outside classificationof polygonal data by Murali et al. [5] is based on a partitioningof space into polyhedral cells on which a consistent classifica-tion is derived by optimization. Xie et al. [6] segment an inputpoint cloud into so-called mono-oriented regions through anactive contour method. Subsequently, a consistent inside / outsidepartitioning is achieved by means of a voting algorithm. Theapproach by Mello et al. [7] constructs an adaptively subdividedtetrahedral decomposition from an input point cloud for whicha consistent labeling as inside / outside over all tetrahedra is de-termined by means of a simulated annealing approach. Alliezet al. [8] present a variational framework for combined normaldirection and orientation estimation as part of their surface re-construction approach. They first compute a tensor field using aVoronoi diagram of the input point set and derive a best-fittingisosurface by solving a generalized eigenvalue problem. Anothervariational approach which finds normal directions and orienta-tions simultaneously is presented by Wang et al. [9]. Liu et al.[10] transfer an input point cloud to a coarse triangulated meshin order to determine normal orientations on this mesh represent-ing the underlying topology. This information is subsequentlyused to orient normals on the original point set.An approach which employs stochastic ray voting is presentedby Mullen et al. [11]. An unsigned distance function is firstestimated on a 3D Delaunay triangulation of an input point set.Initial estimates for the sign of the distance function are obtainedby means of ray shooting and testing for intersections with an ε -band of the unsigned function which is then smoothed andpropagated. Borodin et al. [12] combine a proximity- and visibil-ity based approach to orient polygons in meshes. A connectivitygraph between patches of the model is constructed in which eachpatch has two visibility coe ffi cients which encode how much ofthe two sides of the patch is visible from outside. To achievethis, one of the proposed methods is a ray casting approachsimilar to ours. However, the assumption is that most of theobject’s surface is visible from outside the model. Takayamaet al. [13] also employ a ray casting based approach to orientfacets in polygon meshes. They cast rays in both directions offacets to determine where outside space is located. For innerfacets, they attempt to determine which side of the facet hasmore free space than the other which is similar to our idea forinner walls. Since this method may fail in cavities, they proposean alternative method based on intersection parity which is proneto modeling errors. In contrast, we employ path tracing withmultiple bounces to deal with cavities in the scene. One methodthat implicitly considers ray paths to propagate inside / outsideclassifications in triangular meshes is presented by Zhou et al.[14]. Based on point samples on triangles, a weighted visibil-ity graph is constructed between the points whose nodes areclassified as inside or outside using graph cut. ethod The input of our approach is a set of points in R mainly repre-senting the interior of a building, possibly with some parts ofexterior façade and parts of outside area. If (unoriented) normalsare not given in the data, they are estimated by means of localprincipal component analysis (PCA) for each point. We first detect planes in the point cloud data to obtain a simpli-fied and more structured representation of the scene. Detectionof primitive shapes in point clouds is a well studied problem and any reasonable method can be applied. We use the CGAL im-plementation [15] of the random sample consensus (RANSAC)method by Schnabel et al. [16] for its e ffi ciency and quality ofthe resulting shapes. The rationale behind using planes is thatthe main structure of buildings can usually be represented wellin a piecewise planar manner. Note that other shapes such asspheres or cylinders are also supported by the detection algo-rithm and could in principle also be used for representing e.g.columns or curved walls.For each of the detected planes, a relatively coarse 2D occupancybitmap , i.e. a uniform grid on the surface on which each cell orpixel may have the value 0 or 1, represents the support of theplane by the points constituting the plane. A pixel of the bitmaphas the value 1 if and only if at least one point is located withinthe pixel. All pixels with value 1 yield the set P of patcheswhich will be used in the following steps. Each patch p ∈ P originates from an original surface (i.e. plane) s p , has a centerposition c p ∈ R and an initial normal ˜ n p with arbitrary but fixedorientation. Our first goal is to estimate an initial normal orientation for eachindividual patch. Specifically, given a patch p ∈ P , there are twopossible orientations for its normal, ˜ n p and − ˜ n p . For most pointsin the datasets we consider, we wish to select the one orientationwhich points towards the interior of a room. Conversely, thenormal should point away from outside area (in case the patchis part of a surface separating room interior and outside area),and away from the interior of wall, floor or ceiling structures (incase the surface separates neighboring rooms).This classification task is formulated as a voting scheme basedon path tracing. Intuitively, for each patch, we trace a numberof random paths into both hemispheres for the two possibleorientations. We then use the number of ray bounces as wellas the path lengths to analyze two aspects. First, we classifywhether patches belong to interior or exterior walls, or are lo-cated completely outside of the building. Second, we use thisclassification as well as the path lengths to flip the normal ofeach patch to the more likely correct orientation. Finally, thereoriented patch normals vote for a normal orientation of wholesurfaces.We now formalize the approach. All ray intersections are testedagainst the set of patches P . Let us first consider a patch p with center c p ∈ R and one specific orientation ˜ n p . We cast k rays r i , i ∈ { , . . . , k } , each with origin c p and a directionrandomly sampled within a 120 ◦ cone directed towards ˜ n p . Inour experiments, k =
50. If a ray r i with direction d r i intersectswith a patch p (cid:48) , the ray is reflected into a sampled directionwithin a cone oriented towards the hemisphere of the incomingray. The direction n H of the hemisphere is computed as n H = (cid:40) ˜ n p (cid:48) , if (cid:104) ˜ n p (cid:48) , d r i (cid:105) < , − ˜ n p (cid:48) , otherwise.Note that the normal ˜ n p (cid:48) of the intersected patch p (cid:48) used for thiscomputation is arbitrary but fixed. In particular, the path tracingis invariant under the initial orientation of the patches. We allowup to b = r i . If a ray doesnot hit any patch, the respective path is terminated at that point.The result are k ray paths, each with up to b bounces for theconsidered patch p and orientation ˜ n p .Let l i , jp , ˜ n p be the length of the j th segment along the i th pathtraced for patch p and orientation ˜ n p (note that segments after utomatic normal orientation in point clouds of building interiors L p , ˜ n p as L p , ˜ n p = k (cid:88) i = b (cid:88) j = log(1 + l i , jp , ˜ n p ) . The rationale for taking the logarithm is to decrease the influenceof particularly long segments while still distinguishing betweenshort and medium-length segments. Furthermore, let b i be thenumber of bounces of the i th path. We consider the averagenumber of ray bounces B p , ˜ n p over all k paths B p , ˜ n p = k k (cid:88) i = b i . Note that we analogously have L p , − ˜ n p and B p , − ˜ n p for the oppositedirection. We now define a classification function C ( p ) : P →{ in , ex , out } of patch p into interior, exterior, or outside as C ( p ) = out if ( B p , ˜ n p < τ ) and ( B p , − ˜ n p < τ ) ex if ( B p , ˜ n p < τ ) xor ( B p , − ˜ n p < τ ) in otherwise,where τ is a threshold which was empirically chosen as 4 in ourexperiments.A patch p with C ( p ) = out is considered to be clutter outside ofthe building and subsequently ignored. A patch with C ( p ) = ex is considered to be part of a surface separating room interiorfrom outside area. Its corrected normal orientation ˆ n p is set topoint away from the outside area, i.e.ˆ n p = (cid:40) ˜ n p if B p , − ˜ n p < τ − ˜ n p if B p , ˜ n p < τ. A patch with C ( p ) = in is considered to be part of a surfacebetween neighboring rooms. In this case, we assume that theorientation with the longer total path length points towards theroom interior and we thus set the corrected normal orientation toˆ n p = (cid:40) ˜ n p if L p , ˜ n p > L p , − ˜ n p , − ˜ n p otherwise.The orientation estimation up to this point was performed sep-arately for each patch. Assuming that all points of each of theoriginally detected planes share a common normal orientation,we can easily vote for an orientation using all patches belongingto a common plane. Let s be one of the detected planes witharbitrarily oriented normal ˜ n s and let P s = { p | s p = s } be the setof patches originating from surface s . For voting, we determinethe value θ s = (cid:88) p ∈ P s sgn (cid:16) (cid:104) ˆ n p , ˜ n s (cid:105) (cid:17) , where sgn( · ) is the standard signum function, and determine thecorrected surface normal n s as n s = (cid:40) ˜ n s , if θ s > , − ˜ n s , otherwise.Then all patch normals are flipped to point in the same directionas n s . For simplicity, we will still call this corrected normal ˆ n p in the following. Surfaces belonging to exterior façade are sometimes encoun-tered in interior scans due to scanning through windows. Forsuch patches, the above estimation may erroneously prefer thedirection pointing away from the outside area since ray pathstowards the outside area are terminated quickly while rays to-wards the exterior wall of the building generate longer paths. Anexample for such an erroneous estimation is shown in Figure 3.To correct the orientation in these cases, we perform a second,simpler ray casting pass as follows. For each patch p with cen-ter c p and orientation ˆ n p as estimated above, we cast k rays r i , i ∈ { , . . . , k } , originating at c p with directions d i sampled in acone oriented towards ˆ n p without allowing ray bounces. Let p (cid:48) i be the patch which is hit by ray r i . We then consider the value of φ p = k (cid:88) i = sgn (cid:16) (cid:104) ˆ n p (cid:48) i , d i (cid:105) (cid:17) . If φ p >
0, the estimated orientation ˆ n p is probably incorrectsince it points towards the back side of a surface of a roominterior. We thus define the corrected oriented normal n p as n p = (cid:40) ˆ n p if φ p < , − ˆ n p otherwise.The patch normals are then again used to vote for a common nor-mal orientation within each surface in the same way as describedat the end of Section 3.2.As a final step, the oriented normals of the patches are used toorient the normals of the original points of the point cloud whichlie within the respective patch. valuation To test the correctness and runtime of our approach, we appliedit to multiple real-world datasets with ground truth normal orien-tations. Specifically, the datasets consist of multiple, registeredscans with known scanner positions for each scan. This allowsus to flip normals towards the respective scanner positions toobtain the correct orientations. In order to test our approach, weignore the known orientation and scanner positions, and thencompare our estimated orientations with the ground truth. Wealso measure the runtime of the main processing steps. Table1 summarizes the results of our experiments which are furtherdiscussed below.
The first part of Table 1 shows general statistics about thedatasets such as number of points and scans. Note that in-formation about individual scans and scanner positions is onlyused for generating ground truth normal orientations. It alsolists the percentage of the total points which are part of detectedplanes (and thus belong to patches), and the percentage of thetotal points which are on patches that are not classified as out-side area (i.e. C ( p ) (cid:44) out ). Note that it is exactly this set ofnon-outside points for which our algorithm estimates normalorientations, and that the correctness is measured with respectto this set of points. The number of detected planes and theruntime of plane detection using the RANSAC implementationof the CGAL library [15] is also listed in the table. The next part of Table 1 shows the percentage of points onnon-outside patches which have been correctly oriented by our utomatic normal orientation in point clouds of building interiors Dataset 1 Dataset 2 Dataset 3 Dataset 4
Statistics Statistics Statistics Statistics / scans: 5,151,388 /
21 / scans: 7,688,111 /
29 / scans: 12,409,443 /
13 / scans: 34,964,707 / Plane detection Plane detection Plane detection Plane detection
Correctness Correctness Correctness Correctness
Phase 1A: 97.94% Phase 1A: 96.14% Phase 1A: 98.08% Phase 1A: 98.64%Phase 1B: 98.75% Phase 1B: 97.11% Phase 1B: 98.05% Phase 1B: 98.98%Phase 2A: 98.09% Phase 2A: 98.20% Phase 2A: 97.53% Phase 2A: 98.45%Phase 2B:
Phase 2B:
Phase 2B:
Phase 2B:
Phase 1A: 1885ms Phase 1A: 3751ms Phase 1A: 3963ms Phase 1A: 4142msPhase 1B: 186ms Phase 1B: 780ms Phase 1B: 582ms Phase 1B: 1462msPhase 2A: 102ms Phase 2A: 212ms Phase 2A: 163ms Phase 2A: 232msPhase 2B: 186ms Phase 2B: 756ms Phase 2B: 581ms Phase 2B: 1461ms
Table 1: Evaluation results on real-world datasets. “Statistics”: Number of points and scans of the input data, the ratio of points onpatches, and on patches that are not discarded as outside. “Plane detection”: The number of detected planes and the runtime of theshape detection algorithm. “Correctness”: Ratio of correctly oriented points to the total number of points on non-outside patches.The percentage after phase 2B is the final result. “Runtime”: The computation time for the individual steps of our approach. Theimages show cross sections of the upper and lower story of each dataset. For each story, the unlabeled point cloud is shown, theclassification into interior / exterior / outside surfaces (green / blue / yellow), and whether the orientation is correct / incorrect (green / red). utomatic normal orientation in point clouds of building interiors a b c Figure 1: The e ff ect of using path tracing with varying number of bounces. The images show the orientation correctness (green = correct, red = incorrect) after the path tracing phase, but before applying surface consistency. Note how the region in the center ofthe images is occluded by the surrounding rooms, and also by the story below. (a) Using only a single bounce leads to uncertaintyin occluded regions. (b) This e ff ect is slightly improved when increasing the number of bounces to two. (c) Eight bounces as usedin our approach leads to results which are easily corrected by the subsequent surface consistency voting. a b Figure 2: Overview of the classification of the point clouddone as part of our orientation algorithm. (a) Classificationinto outside (yellow) and non-outside (green) parts. Points noton patches are colored gray. (b) Points are furthermore classi-fied as belonging to surfaces between room interior and outside(blue) and between neighboring rooms (green). a b
Figure 3: (a) The path tracing phase (Section 3.2) may orientpoints on façade parts incorrectly. (b) The second phase (Section3.3) attempts to correct these cases by flipping the respectivenormals. a b
Figure 4: A failure case of the façade correction phase (Section3.3. (a) and (b) are di ff erent views of the same scene. The sur-face highlighted red has incorrect orientation since the opened,almost parallel door was interpreted as a wall surface. algorithm with respect to the ground truth orientations deter-mined using given correspondences of points to known scannerpositions. We list the correctness after di ff erent phases of ouralgorithm. Phase 1 is after the initial orientation by path trac-ing (Section 3.2), before (1A) and after (1B) making normalsconsistent within surfaces. Phase 2 is after the façade correctionstep (Section 3.3), again before (2A) and after (2B) ensuringconsistency within surfaces.For each dataset, the images at the bottom of the table show hor-izontal cross sections of the point clouds for the upper and lowerstories. For each story, the upper image shows the unlabeledinput point cloud. The middle image shows the classificationinto interior surfaces (green), exterior (blue), outside (yellow),and points that are not on patches (gray). The lower imageshows the final correctness (after phase 2B) of the normal orien-tation with correctly oriented points (green), incorrectly orientedpoints (red), outside (yellow), and not on patches (gray).Figure 1 shows the e ff ect of allowing multiple bounces in ourpath tracing approach. The images show the orientation correct-ness after the path tracing phase and before applying surfaceconsistency. Increasing the number of ray bounces helps tocorrectly identify the orientation of patches which are stronglyoccluded by surrounding rooms. An overview of the classifi-cation of outside area is shown in Figure 2 (a) which showslarge areas scanned through windows or from balconies of thebuilding. Outside area is colored yellow. The detail view inFigure 2 (b) shows a cross section of the same building with themore fine grained classification with the same color scheme asin Table 1. An example for façade patches which are initiallyoriented incorrectly by the path tracing phase is shown in Figure3 (a). After applying the correction as described in Section 3.3,the normals are oriented correctly (Figure 3 b). A failure caseof the façade correction step is shown in Figure 4. The surfacehighlighted red was incorrectly oriented since the opened, al-most parallel door next to it was interpreted as a wall surface.Note that this example is taken from Dataset 4 which explainsthe decreased final correctness as shown in Table 1. Below the correctness percentages, Table 1 also lists the runtimeof the individual phases of our algorithm as described above.Clearly, the path tracing phase 1A takes more time than thesingle-bounce façade correction phase 2A. Also, the surfaceconsistency correction 1B and 2B have similar runtimes sincethey are the same operation performed after phases 1A and2A, respectively. Even in case of the largest dataset (Dataset utomatic normal orientation in point clouds of building interiors onclusion and future work
We have presented a fast and fully automatic approach for ori-enting normals of the main building structures in multi-room,multi-story indoor point cloud measurements. The input to ouralgorithm are unstructured point clouds without any additionalinformation such as scanner positions. Using a path tracing ap-proach, we first classify points as interior, exterior, and outsidesurfaces, and estimate an initial orientation of all non-outsidesurfaces. In a second phase, we correct the orientation of façadeparts which may be incorrectly oriented in the first phase. Ad-ditionally, we perform a voting step for consistently orientingnormals within surfaces after each phase. We evaluated ourapproach on multiple, real-world datasets with respect to ori-entation correctness and runtime. The resulting, automaticallyestimated orientation information can greatly facilitate or enabletasks such as visualization or reconstruction of building modelswhich rely on correctly oriented surface normals.While the core of our algorithm provides fast processing of evenlarger datasets, the overall runtime is strongly dominated by theplane detection. One direction for future work is the evaluationof either di ff erent plane detection methods or alternatives forfast patch generation. Also, the façade correction step some-times incorrectly interprets surfaces as boundaries of rooms andthus performs incorrect flipping of already correct normals. Amore sophisticated interpretation of the surfaces may thus be aworthwhile direction for future research. A cknowledgments This work was supported by the DFG projects KL 1142 / / R eferences [1] Hugues Hoppe, Tony DeRose, Tom Duchamp, John Mc-Donald, and Werner Stuetzle. Surface reconstruction fromunorganized points , volume 26. ACM, 1992.[2] Sören König and Stefan Gumhold. Consistent propagationof normal orientations in point clouds. In
VMV , pages83–92, 2009.[3] Nico Schertler, Bogdan Savchynskyy, and Stefan Gumhold.Towards globally optimal normal orientations for largepoint clouds. In
Computer Graphics Forum , volume 36,pages 197–208. Wiley Online Library, 2017.[4] Renato Pajarola. Stream-processing points. In
Visualiza-tion, 2005. VIS 05. IEEE , pages 239–246. IEEE, 2005.[5] TM Murali and Thomas A Funkhouser. Consistent solidand boundary representations from arbitrary polygonaldata. In
Proceedings of the 1997 symposium on Interactive3D graphics , pages 155– ff . ACM, 1997. [6] Hui Xie, Kevin T McDonnell, and Hong Qin. Surfacereconstruction of noisy and defective data sets. In Proceed-ings of the conference on Visualization’04 , pages 259–266.IEEE Computer Society, 2004.[7] Luiz Velho, Gabriel Taubin, et al. Estimating the in / outfunction of a surface represented by points. In Proceed-ings of the eighth ACM symposium on Solid modeling andapplications , pages 108–114. ACM, 2003.[8] Pierre Alliez, David Cohen-Steiner, Yiying Tong, andMathieu Desbrun. Voronoi-based variational reconstruc-tion of unoriented point sets. In
Symposium on Geometryprocessing , volume 7, pages 39–48, 2007.[9] Jun Wang, Zhouwang Yang, and Falai Chen. A variationalmodel for normal computation of point clouds.
The VisualComputer , 28(2):163–174, 2012.[10] Shengjun Liu and Charlie CL Wang. Orienting unorga-nized points for surface reconstruction.
Computers & Graphics , 34(3):209–218, 2010.[11] Patrick Mullen, Fernando De Goes, Mathieu Desbrun,David Cohen-Steiner, and Pierre Alliez. Signing the un-signed: Robust surface reconstruction from raw pointsets.In
Computer Graphics Forum , volume 29, pages 1733–1741. Wiley Online Library, 2010.[12] Pavel Borodin, Gabriel Zachmann, and Reinhard Klein.Consistent normal orientation for polygonal meshes. In
Computer Graphics International, 2004. Proceedings ,pages 18–25. IEEE, 2004.[13] Kenshi Takayama, Alec Jacobson, Ladislav Kavan, andOlga Sorkine-Hornung. A simple method for correctingfacet orientations in polygon meshes based on ray casting.
Journal of Computer Graphics Techniques , 3(4):53, 2014.[14] Kaichi Zhou, Eugene Zhang, Peter Wonka, et al. Visibility-driven mesh analysis and visualization through graph cuts.
IEEE Transactions on Visualization and Computer Graph-ics , 14(6):1667–1674, 2008.[15] Sven Oesau, Yannick Verdie, Clément Jamin, PierreAlliez, Florent Lafarge, and Simon Giraudot. Pointset shape detection. In
CGAL User and ReferenceManual . CGAL Editorial Board, 4.12 edition, 2018. URL https://doc.cgal.org/4.12/Manual/packages.html .[16] Ruwen Schnabel, Roland Wahl, and Reinhard Klein. Ef-ficient ransac for point-cloud shape detection.
ComputerGraphics Forum , 26(2):214–226, June 2007.[17] Steven G Parker, James Bigler, Andreas Dietrich, HeikoFriedrich, Jared Hoberock, David Luebke, David McAl-lister, Morgan McGuire, Keith Morley, Austin Robison,et al. OptiX: a general purpose ray tracing engine.