12.07.2015 Views

Real-Time GPU Silhouette Refinement using adaptively blended ...

Real-Time GPU Silhouette Refinement using adaptively blended ...

Real-Time GPU Silhouette Refinement using adaptively blended ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

espect to T . Then p = u i p i + u j p j + u k p k andS m [f](p) = u i f(p i ) + u j f(p j ) + u k f(p k ). (7)Given two tessellations P s and P m and two integerss ≤ m, the set of vertices of P s is contained in the setof vertices of P m and a triangle of P m is contained in atriangle of P s . Since both maps are linear on each triangleof S m[Ss [f] ] and agrees at the corners, the two mapsmust be equal in the whole of P 0 . This implies that atessellation can be refined to a finer level without changingits geometry: Given a map f : P 0 → R d , we have acorresponding tessellationS m[Ss [f] ] = S s [f]. (8)We say that S m[Ss [f] ] has topological refinement levelm and geometric refinement level s. From the previousresult we can define tessellations for a non-integerrefinement level s = m + α where m is an integer andα ∈ [0, 1). We refine S m [f] to refinement level m+1 andlet α control the blend between the two refinement levels,S m+α [f] = (1 − α)S m+1 [S m [f]] + αS m+1 [f]. (9)See Figure 5 for an illustration of non-integer leveltessellation. The sampling operator S m is linear, i.e.S m [α 1 f 1 + α 2 f 2 ] = α 1 S m [f 1 ] + α 2 S m [f 2 ] for all realα 1 , α 2 and maps f 1 , f 2 . As a consequence, (8) holds fornon-integer geometric refinement level s.Our objective is to define for each triangle T =[v i , v j , v k ] a tessellation T of the corresponding patch F<strong>adaptively</strong> with respect to the silhouetteness of the edgese ij , e jk , e ki . To that end we assign a geometric refinementlevel s ij ∈ R + to each edge, based on its silhouettenessas computed in Section 3. More precisely, we use s ij =Mα ij where M is a user defined maximal refinementlevel, typically M = 3. We set the topological refinementlevel for a triangle to be m = ⌈max{s ij , s jk , s ki }⌉,i.e. our tessellation T has the same topology as P m . Now,it only remains to determine the position of the vertices ofT . We use the sampling operator S s with geometric refinementlevel varying over the patch and define the vertexpositions as follows. For a vertex p of P m we let the geometricrefinement level bes(p) ={s qr if p ∈ (p q , p r );max{s ij , s jk , s ki } otherwise,DraftDraft(10)Figure 4: The surfaces resulting from the center controlpoint rule (4) (left) and (5) (right), applied to a tetrahedronwith one normal vector per vertex. The difference ismarginal, although the surface to the right can be seen tobe slightly flatter.where (p q , p r ) is the interior of the edge of P 0 correspondingto e qr . Note that the patch is interpolated at thecorners v i , v j , v k . The vertex v of T that corresponds top is then defined asv = S s(p) [F](p) = S m[Ss(p) [F] ] (p). (11)Note that s(p) is in general a real value and so (9) is usedin the above calculation. The final tessellation is illustratedin Figure 6.The topological refinement level of two neighboringpatches will in general not be equal. However, our choiceof constant geometric refinement level along an edge ensuresthat neighboring tessellations match along the commonboundary. Although one could let the geometric refinementlevel s(p) vary over the interior of the patch, wefound that taking it to be constant as in (10) gives goodresults.6 ImplementationWe next describe our implementation of the algorithm.We need to distinguish between static meshes for whichthe vertices are only subject to affine transformations, anddynamic meshes with more complex vertex transformations.Examples of the latter are animated meshes andmeshes resulting from physical simulations. We assumethat the geometry of a dynamic mesh is retained in a textureon the <strong>GPU</strong> that is updated between frames. This5

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!