Geosemantic Snapping for Sketch-Based Modeling

Alex Shtof, Alexander Agathos, Yotam Gingold, Ariel Shamir, Daniel Cohen-Or
In Proceedings of Eurographics 2013. Also in Computer Graphics Forum.
Best Paper Award Nominee

Paper: PDF (2 MB)
Supplementary notes on the optimization process: PDF (.1 MB)
Code: application | automatic differentiation library only
Presentation: Keynote (39 MB, zipped) | PDF (20 MB) | PDF with notes (20 MB)


Modeling 3D objects from sketches is a process that requires several challenging problems including segmentation, recognition and reconstruction. Some of these tasks are harder for humans and some are harder for the machine. At the core of the problem lies the need for semantic understanding of the shape's geometry from the sketch. In this paper we propose a method to model 3D objects from sketches by utilizing humans specifically for semantic tasks that are very simple for humans and extremely difficult for the machine, while utilizing the machine for tasks that are harder for humans. The user assists recognition and segmentation by choosing and placing specific geometric primitives on the relevant parts of the sketch. The machine first snaps the primitive to the sketch by fitting its projection to the sketch lines, and then improves the model globally by inferring geosemantic constraints that link the different parts. The fitting occurs in real-time, allowing the user to be only as precise as needed to have a good starting configuration for this non-convex optimization problem. We evaluate the accessibility of our approach with a user study.

Video (MP4, 17 MB):

Novice modeling sessions (MP4, 7 MB)


  title     = {Geosemantic Snapping for Sketch-Based Modeling},
  author    = {Alex Shtof and Alexander Agathos and Yotam Gingold and Ariel Shamir and Daniel Cohen-Or},
  journal   = {Computer Graphics Forum},
  year      = {2013},
  pages     = {245--253},
  volume    = {32},
  number    = {2},
  publisher = {Blackwell Publishing Ltd},
  issn      = {1467-8659},
  url       = {},
  doi       = {10.1111/cgf.12044},
  note      = {Proceedings of Eurographics 2013}