Oct 18, 2018 - Because it is a basic step in many geometrical algo- rithms, the ... Next, we present the speedup of our parallel method for different meshes and ..... with OpenMP and CUDA respectively, in order to execute the ex- periments in ...
Volume xx (200y), Number z, pp. 1–16
An Iterative Parallel Algorithm for Computing Geodesic Distances on Triangular Meshes
arXiv:1810.08218v1 [cs.CG] 18 Oct 2018
Luciano A. Romero Calla1 , Lizeth J. Fuentes Perez1 , Anselmo A. Montenegro2 , Marcos Lage2 1 Universidad 1 Universidade
La Salle de Arequipa, Peru Federal Fluminense, Instituto de Computação, Brazil
Abstract The computation of geodesic distances is an important research topic in Geometry Processing and 3D Shape Analysis as it is a basic component of many methods used in these areas. For this reason, different approaches have been proposed to compute geodesic distances including exact and approximate methods. Approximate methods are usually used when efficiency is mandatory and particularly when dealing with large meshes. One of the most well-known methods used for computing approximate geodesic distances is the Fast Marching algorithm. Recently, new methods have been proposed: the spectral and diffusion flow-based methods. These approaches are very efficient for distance query but usually depend on computationally intensive preprocessing steps. In this work, we present an iterative parallel algorithm based on front propagation to compute approximate geodesic distances on meshes that is practical and simple to implement. The convergence of our iterative algorithm depends on the number of discrete level sets around the source points from which distance information propagates. To appropriately implement our method in GPUs taking into account memory coalescence problems, we devised a new graph representation based on a breadth-first search traversal that works harmoniously with our parallel front propagation approach. In the experiments, we show how our method scales with the size of the problem by using the proposed graph representation. We compare its mean error and processing times with such measures computed using other methods. We also demonstrate its use for solving two classical geometry processing problems: the regular sampling problem and the Voronoi tessellation on meshes. CCS Concepts • Theory of computation → Parallel algorithms; Computational geometry; • Computing methodologies → Mesh models; Mesh geometry models; Shape analysis;
1. Introduction Computing geodesic distances on meshes is of paramount importance to many Geometry Processing and 3D Shape Analysis problems, like parameterization [KKD∗ 11], shape retrieval [RPC10], isometry-invariant shape classification [BBK06], mesh watermarking [BlD06], object recognition [HK03], skinning [SRC01], just to mention a few. Because it is a basic step in many geometrical algorithms, the efficiency of its computation is a very important issue. Meshes are usually described as graphs. Consequently, one natural approach to solve the problem of geodesic computation on meshes is to generalize the ideas of distances on graphs to compute distance maps on surface representations. This path was pursued by [MMP87] which proposed a continuous Dijkstra method that is able to yield exact results. Later, Surazhsky [SSK∗ 05] refined such method and proposed a more efficient approximate version. Other researchers approached the problem via physical phenomena analogy. Two of the most important methods are based on models for wave propagation and heat diffusion. The Fast Marching apsubmitted to COMPUTER GRAPHICS Forum (10/2018).
proach belongs to the first category of methods and aims to solve the so-called Eikonal Equation [Set99], [KS98]. The Geodesics on Heat [CWW13] belongs to the second class and explores the relationship between the heat kernel computation and distances on surfaces. Here, we propose a parallel algorithm for the computation of distance maps on meshes that produces results with competitive accuracy and is simple to implement. As the Fast Marching method, it is also inspired by the grassfire propagation but our approach does not require the maintenance of any priority queue which is the key to our parallelization strategy. Instead, we propagate distances simultaneously around the frontier of propagation. Our experiments √ show that, under certain conditions, no more than c n iterations, where c is a small constant and n is the number of vertices of the mesh, are necessary for the convergence of the method. We provide a theoretical computational complexity analysis congruent with the experimental results. We also discuss and show that our method is especially appropriate for solving the multi-source distance map problem.
2
1.1. Contribution We introduce an iterative parallel algorithm called Parallel Toplesets Propagation (PTP) to compute distance maps from a set of multiple sources on triangular meshes. Our method was inspired by the Fast Marching algorithm and is based on the propagation of distance information from the inner to the outer groups of vertices that are equidistant to the source vertices. These groups are denoted here topological level sets (toplesets, for short). The vertices in each topleset have their distances updated in parallel, independently, enabling us to explore the powerful parallel architectures present in the GPUs. To appropriately deal with coalescence problems when accessing the vertices in the GPU memory we devised a breadth-first search based graph representation similar to the one in [ZHF∗ 17]. Our method is particularly appropriate for the solution of the problem of distance computation from multiple sources when the sources are predominantly distributed in a uniform way. This makes it remarkably adequate when used as part of the implementation of the Farthest Point Sampling algorithm [ELPZ94] used to solve the problem of mesh resampling. The proposed method is applied directly to the meshes and produces good accuracy results for large and irregular meshes. Additionally, the speedup values are competitive against methods where the preprocessing step dominates the overall complexity even without taking into account the preprocessing time.
1.2. Outline This paper is organized as follows. In Section 2, we describe some of the most important works related to distance computation on graphs and minimal geodesic computation on meshes. Next, in Section 3, we describe and define some concepts and results that were used to develop our algorithm. The proposed method is presented in Section 4. In Section 5, we present the results produced by our algorithm. We first show two applications of our method: a parallel solution to the Farthest Point Sampling Problem and a parallel solution to the problem of computing the Voronoi Diagram on meshes. Next, we present the speedup of our parallel method for different meshes and measure the distance error for each experiment. We also compare our results with the exact method of [MMP87], the Fast Marching Algorithm of [KS98] and the Geodesics on Heat method [CWW13]. Finally in Section 6 we present the conclusions.
2. Related Work The exact computation of geodesic distances on surfaces was proposed by Mitchell et al. [MMP87]. The MMP algorithm proposed by them is based on a continuous Dijkstra algorithm and its computational complexity is O(n2 log n). Due to its high computational cost, approximate methods were developed. These methods present a better performance and maintain a comparable level of accuracy. A fast implementation of the MMP algorithm was presented in [SSK∗ 05]; this algorithm requires less memory and has a computational complexity of O(n log n).
/
Over the last decade, several approximate methods were proposed to compute distances by solving the Eikonal equation: || 5 φ|| = 1
(1)
where φ is a distance function. We can divide these approaches into two families, the Fast Marching, and the Fast Sweeping. The Fast Marching method (FM) was introduced by Sethian to solve distance computation on regular grids [Set99] and later was extended to triangular meshes by Kimmel and Sethian [KS98]. The algorithm which preserves the spirit of the Dijkstra algorithm as it uses a priority queue. It is a single-source to all-vertices algorithm, whose main advantage is the fast calculation of distances of vertices that are close to the source vertices. However, due to the sequential requirement of the priority queue, it is not possible to parallelize this algorithm without critical modifications. The Fast Sweeping approach [QZZ07] has O(n) linear computational complexity. However, the algorithm requires a lot of sweeps to converge, particularly when the grids are unstructured. A parallel version of the Fast Marching Algorithm on parametric surfaces was proposed by Weber [WDB∗ 08]. In this method, the surface must be divided into several regular grids. Then, the distance map is computed for each grid, using a a parallelization strategy based on the Raster Scan algorithm [Dan80]. Finally, the reconstruction is done by joining the distance maps associated with each grid via the Dijkstra algorithm. Up to now, this method is the fastest and highly parallelizable for computing geodesic distances on triangular meshes. However, the error of the computed distance map depends on the distortion of the parameterization. Different approaches that do not resolve Eikonal equation are: The Saddle Vertex Graph (SVG) [YWH13], which encodes the geodesic information in a sparse undirected graph. This method is outperformed by a divide and conquer technique proposed by Wang [WFW∗ 17]. Recently was introduced a new family of methods that require the solution of Poison-like systems. The Heat method was introduced by Crane [CWW13] which requires the solution of the Poisson equation. This method can be used with different kinds of representations because it is possible to compute the Laplacian operator for many different models including triangular meshes, point clouds and polygonal meshes. However, the accuracy of the distance map computation is sensitive to the choice of a parameter. An optimization of this method was proposed by Livesu [Liv18], which is independent of the specific discretization choice and the dimensionality of the dataset. Finally, Litman [LB16] proposed a method that also works on the spectral domain, called the Spectrometer, which outperforms the Heat method. 3. Background In the next subsections, we present some of the basic concepts and results on which our method is based on. 3.1. Basic concepts The notion of distance on a manifold M can be defined, in terms of length of paths on M. A path on a manifold M is a parameterized submitted to COMPUTER GRAPHICS Forum (10/2018).
3
/
curve given by a map γ(t) : t → M, where t ∈ I = [a, b]. According to [dC76], γ is a geodesic at t ∈ I if the field of its tangent vectors γ0 (t) are parallel along γ at t. In other words, if the covariant
in essence to the Fast Marching method and it uses a modification of its update function. Hence, for the sake of comprehensiveness, we present it in the next subsections.
Dγ0 (t)
derivative dt = 0. A parameterized curve γ is a geodesic if it is a geodesic at all t ∈ I and a minimizing geodesic or shortest path R p when it is given by arg in fγ L(γ) = ab γ(t)0T Gγ(t)0 dt. We define a length metric as dL (x, y) = in f L(γ), γ : [a, b] → M, γ(a) = x, γ(b) = y. Some concepts related to straightest geodesic and curvature on polyhedral surfaces are explained in [PS98]. 3.2. Distance maps The Multiple Sources Distance Map problem (MSDMP) is defined as follows. Given a metric space (M, dL ) and a set of source points S ⊂ M define a map dS (x) = min dL (s, x) that associates to each x ∈ M the s∈S
shortest distance to S. The single source distance map problem is a particular case of the multiple source problem and will not be explicitly defined here. One way to solve the problem of computing distance maps is to simulate the propagation of a signal (the distance information) from the source points towards all other points in the space. For the sake of argument, consider that the signal propagates with constant speed |v| = 1 where v is a velocity vector. In nature, signals like light and sound travel according to the Fermat Principle, i.e., by choosing the quickest path. Hence, the signal that propagates from a point source s will choose the direction of propagation that causes the greatest increase in distance. This direction is the gradient of the distance function ||∇dS ||. One can show that the gradient of the distance function is parallel to the tangent of the minimal geodesic γ(t)0 . Thus, as ||γ(t)0 || = 1, it is also possible to demonstrate (see [BBK08]) that for a manifold M,
||∇M dV || = 1
(2)
where ∇M dV is the intrinsic gradient of distance function on M. Equation 2 is the Eikonal Equation seen before defined on manifolds. 3.3. Discrete Distance Maps Many graphical objects are described by 2-d manifolds, embedded in a three-dimensional space, that is, embedded surfaces. Surfaces are usually represented by piecewise linear representations known as triangle meshes T = (V, E, F), where V is the set of vertices, E the set of edges and F the set of faces. We now state the problem of computing distance maps on a triangulated mesh T . Let T be a triangulated mesh. Given a subset S ⊂ V , called source set, compute a map dS (v) : V → < that associates to each v ∈ V the minimum distance to S. For the sake of simplicity, we denote dS as d. In the literature, one can find many ways to solve the MSDMP problem as it was summarized in Section 2. Our method is closer submitted to COMPUTER GRAPHICS Forum (10/2018).
4. Proposed Method The method proposed here works by simulating the propagation of the distance information via a set of sequential iterations. One of the main features of the method is to take for granted the natural ordering induced by the topology of the graph associated with the mesh. Vertices with the same distance value in the unweighted graph induced by the mesh are grouped in sets defined here as topological level sets. The topological level sets and their distances to the source are used to guide the propagation and also mark off its scope. Our algorithm is an iterative algorithm that uses the preliminary ordering defined by the topological distances as an initial estimate of the real continuous distance. At each iteration, the distances of a subset of all topological sets, defining a band (the update band), are updated in parallel using a relaxation scheme similar to the update function of the Fast Marching Method. This relaxation process is applied for a fixed number set of iterations until all distances converge. In this section, we define more precisely the concept of topological level sets and describe the notion of topological level sets propagation which is the kernel of our algorithm. Next, we describe the proposed algorithm and its parallel version. Finally, we present its complexity analysis and explain how to leverage the properties of our method to solve the multi-source version of the problem. 4.1. Topological level sets propagation The topological level sets propagation relies on the concept of topological level sets. Definition 1 (r-topological level set) Let G be a unweighted graph induced by the combinatorial topological structure of a triangle mesh T = (V, E, F). A topological level set of order r (defined here as r-topleset, for short) in G, is the set of all vertices v ∈ G, such that the length of the shortest path p, from v to the source s in G is equal to a constant r > 0, r ∈ N. Definition 2 (Vertices at r-topological level set) Let T = (V, E, F) be a triangular mesh and S ⊂ V the set of source vertices; Vr ⊂ V is the set of vertices at topleset r and is defined by the recurrence relation ( ) Vr =
v ∈ N (Vr−1 ) : v 6∈
r−1 [
Vr0
r0 =0
where V0 = S. We can define the following properties of a topleset: 1.
ρ [
Vr = V
r=0
2. ∀r, r0 ∈ [0, ρ], r 6= r0 : Vr ∩Vr0 = ∅ ρ
3.
∑ |Vr | = |V |
r=0
where ρ is the number of toplesets from S ∈ V in a triangular mesh and N (Vr ) is the set of all the vertices that are neighbors of the vertices v ∈ Vr .
4
/
From now on, for the sake of simplicity of notation use, we identify a r-topleset with the set of vertices Vr that belong to it.
Algorithm 4.1 Proposed method: Parallel Toplesets Propagation (PTP).
A topological level set propagation is defined as the propagation of the distance information through a sequence of toplesets which defines a partial ordering on the vertices of unweighted graph G induced by the mesh’s combinatorial structure.
Require: Triangular mesh (V, F), source vertices S ⊂ V , Vr and r ∈ [0, ρ] Ensure: Distances map d : V → R 1: pre-compute s(B(k)) for each k-topleset 2: dk current distance map at iteration k 3: ∀v ∈ V : d0 (v) ⇐ ∞ 4: ∀s ∈ S : d0 (s) ⇐ 0 5: d1 ⇐ d0 6: for k ⇐ 1 to K do S 7: for all v0 ∈ kr=s(B(k)) Vr (in parallel) do 8: for all (v0 , v1 , v2 ) ∈ F(v0 ) do 9: update(dk , dk−1 , v0 , v1 , v2 ) 10: end for 11: end for 12: end for 13: return d ⇐ dK
A finite sequence of topological level sets (Vi )bi=a , is a set of contiguous topological level sets where a is the starting index of the sequence and b is the ending index. We classify a sequence (Vi )bi=a according to the behavior of the growth of the cardinality of each topleset that belongs to it, as follows: 1. Monotonically increasing topleset sequence: when |Vi | − |Vi−1 | > 0, a ≤ i ≤ b 2. Stationary topleset sequence: when |Vi | − |Vi−1 | = 0, a ≤ i ≤ b 3. Monotonically decreasing topleset sequence: when (|Vi | − |Vi−1 | < 0), a ≤ i ≤ b Now, let T be a triangle mesh with ρ toplesets and n = |V |. T is a monotonically increasing mesh when all of its toplesets define ρ one monotonically increasing sequence (Vi )i=0 . Similarly, T is a monotonically decreasing mesh when all of its toplesets define one ρ monotonically decreasing sequence (Vi )i=0 . When all its toplesets have the same cardinality, except for a small finite number of toplesets c 1, we have the double of edges that can be used to define updating triangles (bolded red lines). Hence, 2|Vr−1 | vertices have their distances fixed except for i0 = i which may fix less than |Vr−1 | vertices as |Vr | ≥ 0 (the number of remaining distances to be fixed cannot be negative). When all vertices v ∈ Vr have their distances fixed, |Vr | = 0. Hence, we state that: |Vr | − |Vr−1 | − 2(i − 1)|Vr−1 | = 0
(19)
r=0
ρ
ρ
∑ |Vr | ≤ ∑ br
r=0
r=0
i=
|Vr | + |Vr−1 | 2|Vr−1 |
(20)
submitted to COMPUTER GRAPHICS Forum (10/2018).
15
/
increasing sequence. Then, the maximum number of iterations is √ K = O( n), where n = |V |. Proof To proof Theorem 3 we use the Lemma 5. According to it, the number of iterations K to compute the final ldistance m to the last √ ∆v −3 topleset Vρ is K = cρ − 1, ρ ≤ n, and c = . Thus, we 2 √ √ can affirm that K ≤ c n and K = O( n). Observe that for regular meshes c = 2. Figure 9: Counting iterations to updated the topleset Vr . Appendix B: Analysis of the degrees of the vertices (21)
3000 2603
5191
|Vr | ≤ (∆v − 4)|Vr−1 |
5000
number of vertices
Besides, according to Lemma 4, equation (16) (lower bound to the number of toplesets of a mesh), we know that:
6000
number of vertices
Consequently, we also affirm that: |Vr | + |Vr−1 | Kr ≤ (r − 1) + 1 2|Vr−1 |
4000 3000 2000 1000
599
0
1
49
3
4
583 51
5
6
7
2500 2000
1569
1500 1000 598
571
500 120
49
1
8
1962
0
9
3
4
5
6
7
degree
where ∆v is the maximum degree of v ∈ Vr . Thus,
(a) fandisk 12000
(∆v − 4)|Vr−1 | + |Vr−1 | |Vr | + |Vr−1 | ≤ 2|Vr−1 | 2|Vr−1 |
10000 8000 6000 4000 1650
1602
16051
12000 10000 8000 6000
4316
6
7
4310
4000 2000
5
0
8
8
122
3
4
5
6
degree
|Vr | + |Vr−1 | ∆v − 3 ≤ 2|Vr−1 | 2
(c) kitten
|Vr | + |Vr−1 | (r − 1) + 1 2|Vr−1 |
25000 20000 15000 10000 3955
5000 0
41
450
3
4
5
3888
6
Kr ≤
40370
7
30000
26294
25000 19533
20000 15000 10000
6156
5659
5000
299
23
3
1
1
8
9
10
11
22
1477
116
0
3
4
5
6
7
9
330
53
11
3
10
11
12
13
∆v − 3 (r − 1) + 1 2
(e) bunny
(22) 100000
(f) tyra 300000
90928
80000 70000 60000 50000
2|Vr−1 | (r − 1) + 1 2|Vr−1 |
35088
30000 20000 0
271438
3
4
250000 210680
200000 149538
150000 92052
100000
69694
50000
24135
5326
4660 41
5
6
7
138
10
1
2
9
10
11
12
8
6472 1421 245
520
0
3
4
5
6
7
degree
8
9
50
11
6
1
2
1
10 11 12 13 14 15 16 17 20
degree
(g) armadillo
(h) ramesses
3.5x106
3214415
3x106
number of vertices
When the mesh has toplesets whose cardinality is stationary, that is |Vr | = |Vr−1 | for all r we have: |Vr | + |Vr−1 | (r − 1) + 1 Kr ≤ 2|Vr−1 |
36780
40000
10000
Kr ≤ 2r − 1
number of vertices
Kr ≤ 2(r − 1) + 1
number of vertices
When the mesh is regular ∆v = 6 and we have:
Kr ≤
8
degree
90000
9
35000
degree
2
8
40000
number of vertices
Kr ≤
146
(d) elephant 45000
26174
number of vertices
7
degree
30000
finally:
2
11
14000
24
0
26
10
(b) bunny_irregular 16000
2000
9
18000
11196
number of vertices
number of vertices
|Vr | + |Vr−1 | ≤ (∆v − 4)|Vr−1 | + |Vr−1 |
8
degree
2.5x106 2x106 1.5x106 1x106 500000 0
193526 351 18683
3
4
5
142976 31552 6415 1204
6
7
8
9
244
65
15
5
3
1
10 11 12 13 14 15 16
degree
(i) dragon
then Kr ≤ r, and one iteration is sufficient to fix all distances in Vr once Vr−1 has its distances fixed.
Figure 10: Degree meshes.
Theorem 3 [Maximum number of iterations K to compute the distances of a monotonically increasing mesh] Let T = (V, E, F) be a triangular mesh and s ∈ V be a source vertex such that the set of its toplesets Vr ordered by their distances to s define a monotonically
Figure 10 shows the distribution of mesh degrees considering all the meshes used in the experiments. We can observe that the predominant degrees are 6, 4 and 5.
submitted to COMPUTER GRAPHICS Forum (10/2018).
16
/ 250
250
200
200
150 100 50
250
200
200
50
0
10
20
30
40
50
0
10
20
30
250
600
number of vertices
number of vertices
40
50
60
70
(b) bunny_irregular 700
10
20
30
40
50
60
70
80
90
150 100 50 0
30
600
300
500
40
50
60
70
120
140
500 400 300 200 100
0
10
20
30
40
50
60
70
80
90
0
100
0
20
40
60
80
100
toplesets
(c) kitten
400
(d) elephant 1000 900
200
100
20
toplesets
100 0
200
500
0
10
(b) bunny_irregular 600
300
0
toplesets
250
50
(a) fandisk
0
0
100
toplesets
50
50
60
(a) fandisk
toplesets
100
50
700
0
150
40
300
60
200
30
100
150
0
20
40
60
toplesets
80
100
120
140
toplesets
number of vertices
0
20
number of vertices
100
10
number of vertices
150
0
150
toplesets
number of vertices
number of vertices
number of vertices
0
250
number of vertices
Figure 11 shows the distribution of toplesets for each mesh in the experiments. We observe that the curves are non-constant and the vertices are distributed in each topleset.
number of vertices
Appendix C: Analysis of the distribution of toplesets
400 300 200 100
800 700 600 500 400 300 200 100
(c) kitten
(d) elephant
600
0
0
20
40
60
80
100
0
120
0
50
100
toplesets
1000
150
200
250
toplesets
300 200 100
(e) bunny
800 700 600 400 300 200 100
0
20
40
60
80
100
0
120
0
50
100
toplesets
(e) bunny
250
1600
1000 800 600 400 200 0
1400 1200 1000 800 600 400 200
0
50
100
150
200
250
0
300
0
100
200
300
toplesets
1800
400
500
600
700
800
toplesets
1600
number of vertices
number of vertices
200
(f) tyra
1000 800 600 400 200 0
150
toplesets
1200
1800
(g) armadillo
1400
6000
1000 800 600 400 200
0
50
100
150
200
250
0
300
0
100
200
300
toplesets
400
500
600
700
800
toplesets
(g) armadillo
(h) ramesses
5000 4000 3000 2000 1000 0
0
200
400
600
800
1000
1200
1400
toplesets
6000
number of vertices
(h) ramesses
1200
number of vertices
0
(f) tyra
1200
500
number of vertices
400
number of vertices
500
number of vertices
number of vertices
900
5000
(i) dragon
4000 3000
Figure 12: Sorted toplesets meshes distribution.
2000 1000 0
0
200
400
600
800
1000
1200
1400
toplesets
(i) dragon
Figure 11: Toplesets meshes distribution. Figure 12 shows the distribution of toplesets sorted by the number of vertices, and the functions y = x and y = 2x. We can observe that the curve increases over the minimum increase constant c = 1, which is considerate in the proofs. This plots confirm that the num√ ber of toplesets ρ ≤ n. Appendix D: Analysis of error single precision
submitted to COMPUTER GRAPHICS Forum (10/2018).
/ 1.14
2.22
1.13
1.146 1.144
2.2
1.142
1.1 1.09
error (%)
2.18
1.11
error (%)
error (%)
1.12
2.16
2.14
1.136
1.08 2.12
1.07 1.06
60
65
70
75
80
85
2.1
90
1.134
70
75
80
85
# iter
90
95
100
105
1.132
110
# iter
(b) bunny_irregular
0.92
(c) kitten
0.99
1.35 1.3
0.985
0.915
1.25
0.98
0.905
0.9
1.2
0.975
error (%)
error (%)
error (%)
0.91
0.97 0.965
0.895
170
180
190
200
0.95 120
210
0.9 130
140
# iter
(d) elephant
160
170
0.85 200
180
(e) bunny
0.7 0.65 0.6
0.5
260
280
300
320
340
360
# iter
(g) armadillo
380
400
0.288 0.286
0.282
0.45 0.4 750
320
0.284
0.55
0.7
300
0.29
0.75
error (%)
error (%)
0.71
280
0.292
0.8
0.72
260
(f) tyra
0.9
0.73
240
0.294
0.85
0.74
220
# iter
0.95
0.75
error (%)
150
# iter
0.76
0.69 240
1.1 1.05
0.95
0.955
160
1.15
1
0.96
150
95 100 105 110 115 120 125 130 135 140 145 150
# iter
(a) fandisk
0.89 140
1.14 1.138
800
850
900
950 1000 1050 1100 1150
# iter
(h) ramesses
0.28 1300 1400 1500 1600 1700 1800 1900 2000 2100
# iter
(i) dragon
Figure 13: Analysis of the error with single precision k ∈ [ρ : 1.5ρ].
submitted to COMPUTER GRAPHICS Forum (10/2018).
17