Upgrade to Pro — share decks privately, control downloads, hide ads and more …

val3dity overview at the 3DBGT dag

val3dity overview at the 3DBGT dag

Hugo Ledoux

June 23, 2014
Tweet

More Decks by Hugo Ledoux

Other Decks in Programming

Transcript

  1. ! an online and open-source validator for 3D geometries Hugo

    Ledoux & Jantien Stoter 3D BGT dag, Amersfoort 2014/06/19 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d val ity
  2. 3D geometric validation 2 VALIDATE YES :) NO :( 2

    / 19 1. “watertight” 2. no intersections 3. surfaces are planar 4. every 2D surface is valid 5. … valid?
  3. ≠XML schema validation (*.xsd) 3 <gml:Solid> <gml:exterior> <gml:CompositeSurface> <gml:surfaceMember> <!--top

    surface--> <gml:Polygon gml:id="a"> <gml:exterior> <gml:LinearRing> <gml:pos>0 0 1</gml:pos> <gml:pos>1 0 1</gml:pos> ... </gml:LinearRing> </gml:exterior> </gml:Polygon> </gml:surfaceMember> … only syntax is checked, eg 3 numbers separated by a space
  4. 3D validation is difficult, several complex cases 4 s1 s2

    s3 s4 invalid (1) invalid (3, 6) valid valid s9 s10 s11 s12 invalid (3 in 2D) invalid (2) valid invalid (5) s5 s6 s7 s8 invalid (6) invalid (2, 5) invalid (4) valid
  5. some real-world examples 5 Wrong orientation of faces Dangling face

    Automatic repairing of broken 3D cit With my colleague John Zhao, we’re making an ov of the most common errors/problems, such as: With my colleague John Zhao, we’ of the most common errors/prob
  6. TU Delft’s implementation 6 • free and open-source • web

    interface • international standards (ISO19107 & OGC)
  7. outputs a report with the errors 7 <val3dity> <inputFile>delft.gml</inputFile> <snaptolerance>0.001</snaptolerance>

    <time>Tue Apr 22 12:07:11 2014</time> <Solid> <id>6e359e22-e6d7-41d1-ba8c-91e0068704f7</id> <ValidatorMessage> <type>ERROR</type> <errorCode>210</errorCode> <errorType>NON_PLANAR_SURFACE</errorType> <shell>1</shell> <face>14</face> </ValidatorMessage> </Solid> <Solid> <id>59feffb1-604c-4032-b414-1d72f1d2371d</id> <ValidatorMessage> <type>ERROR</type> <errorCode>400</errorCode> <errorType>SHELLS_FACE_ADJACENT</errorType> <shell>2</shell> <face>3</face> </ValidatorMessage> </Solid> </val3dity>
  8. outputs a report with the errors 7 <val3dity> <inputFile>delft.gml</inputFile> <snaptolerance>0.001</snaptolerance>

    <time>Tue Apr 22 12:07:11 2014</time> <Solid> <id>6e359e22-e6d7-41d1-ba8c-91e0068704f7</id> <ValidatorMessage> <type>ERROR</type> <errorCode>210</errorCode> <errorType>NON_PLANAR_SURFACE</errorType> <shell>1</shell> <face>14</face> </ValidatorMessage> </Solid> <Solid> <id>59feffb1-604c-4032-b414-1d72f1d2371d</id> <ValidatorMessage> <type>ERROR</type> <errorCode>400</errorCode> <errorType>SHELLS_FACE_ADJACENT</errorType> <shell>2</shell> <face>3</face> </ValidatorMessage> </Solid> </val3dity> IDs of gml:Solid used link to specific surface where the problem is error type
  9. validation is hierarchical 8 One solid Rings and Surfaces Solid

    Shells 2D validation rules applied to primitives embedded in 3D space 1. planarity of surface 2. combinatorial consistency 3. geometric consistency 4. orientation of normals interactions between the shells with Nef polyhedra and Boolean operations valid invalid Solid is Valid Solid is Invalid valid valid invalid invalid
  10. Errors reported 9 Ring level 100: REPEATED_POINTS 110: RING_NOT_CLOSED 120:

    RING_SELF_INTERSECT Surface level (one polygon embedded in 3D) 200: SELF_INTERSECTION 210: NON_PLANAR_SURFACE 220: INTERIOR_DISCONNECTED 230: HOLE_OUTSIDE 240: HOLES_ARE_NESTED 250: ORIENTATION_RINGS_SAME Shell level (one envelop formed by several surfaces) 300: NOT_VALID_2_MANIFOLD 301: SURFACE_NOT_CLOSED 302: DANGLING_FACES 303: FACE_ORIENTATION_INCORRECT_EDGE_USAGE 304: FREE_FACES 305: SURFACE_SELF_INTERSECTS 306: VERTICES_NOT_USED 310: SURFACE_NORMALS_WRONG_ORIENTATION Solid level (1 exterior shell + 0..n exterior shells) 400: SHELLS_FACE_ADJACENT 410: SHELL_INTERIOR_INTERSECT 420: INNER_SHELL_OUTSIDE_OUTER 430: INTERIOR_OF_SHELL_NOT_CONNECTED