Skip to main content

Advanced 3d Modeling

Credits
6
Types
Specialization compulsory (Computer Graphics and Virtual Reality)
Requirements
This subject has not requirements , but it has got previous capacities
Department
CS
Web
www.lsi.upc.edu/~virtual/SGI
This course covers the techniques, algorithms and data structures used to acquire, represent and query geometric models of solids and surfaces. The course covers various modeling techniques, including boundary representations, implicit representations, instantiation and Boolean combinations of shapes, as well as procedural modeling. We will also discuss effective data structures for representing various types of objects, as well as the process of acquiring models from real objects.

Teachers

Person in charge

Others

Weekly hours

Theory
2
Problems
0
Laboratory
2
Guided learning
0
Autonomous learning
7.1111

Competences

Computer graphics and virtual reality

  • CEE1.1 - Capability to understand and know how to apply current and future technologies for the design and evaluation of interactive graphic applications in three dimensions, either when priorizing image quality or when priorizing interactivity and speed, and to understand the associated commitments and the reasons that cause them.
  • Generic

  • CG1 - Capability to apply the scientific method to study and analyse of phenomena and systems in any area of Computer Science, and in the conception, design and implementation of innovative and original solutions.
  • Appropiate attitude towards work

  • CTR5 - Capability to be motivated by professional achievement and to face new challenges, to have a broad vision of the possibilities of a career in the field of informatics engineering. Capability to be motivated by quality and continuous improvement, and to act strictly on professional development. Capability to adapt to technological or organizational changes. Capacity for working in absence of information and/or with time and/or resources constraints.
  • Reasoning

  • CTR6 - Capacity for critical, logical and mathematical reasoning. Capability to solve problems in their area of study. Capacity for abstraction: the capability to create and use models that reflect real situations. Capability to design and implement simple experiments, and analyze and interpret their results. Capacity for analysis, synthesis and evaluation.
  • Objectives

    1. Understand the foundations of geometric modeling systems
      Related competences: CEE1.1, CG1, CTR5, CTR6,
    2. Understand and being able to implement the most relevant representation schemes for solids.
      Related competences: CEE1.1, CG1, CTR6,
    3. Understand the details of the Boundary Representation: main features, implementation, and basic queries/algorithms operating on BReps.
      Related competences: CEE1.1, CTR6,
    4. Understand the details of Space Decomposition Models (voxelizations, octrees). : main features, implementation, and basic queries/algorithms operating on these models.
      Related competences: CEE1.1, CTR6,
    5. Understand the details of Constructive Solid Modeling: main features, implementation, and basic queries/algorithms operating on CSGs
      Related competences: CEE1.1, CTR6,
    6. Being able to implement scripts (Python) and programs (C++) solving geometric modeling problems on different representation schemes for solids.
      Related competences: CEE1.1, CTR5, CTR6,
    7. Understand Procedural Modeling techniques, including Fractals, L-systems and CGA grammars.
      Related competences: CEE1.1, CTR5, CTR6,
    8. Understand implicit modeling techniques: scalar fields, surface extraction algorithms, metaballs and associated algorithms.
      Related competences: CEE1.1, CTR6,

    Contents

    1. Foundations of 3D modeling
      Elements of a geometric modeling system. Solid models. Closed, bounded and regular sets of points. Two-manifold surfaces. Abstraction levels in geometric modeling.
    2. Boundary representation (BRep)
      Polyhedra. Cells, shells, faces, loops, edges and vertices. Genus of a surface. Euler equation for polyhedra. Incidence relationships. Creation of BRep models. Sweep. Boolean operations. Curves and Surfaces for Geometric Modeling
    3. Subdivision surfaces
      Subdivision surfaces. Interpolation and approximation. Update rule. Classification. Catmull-Clark subdivision.
    4. CSG models
      Constructive Solid Geometry. CSG trees. Basic operations. Point-inside-CSG test.
    5. Space decomposition models
      Voxelizations. Octrees. Classic, Face and Extended octrees. Octree representation. Basic operations on octrees.
    6. Implicit modeling
      Scalar fields. Surface reconstruction from scalar fields. Blobby molecules, metaballs and soft objects.
    7. Data structures for triangle meshes
      Euler equation for triangle meshes. Face-based, Vertex-based and edge-based representations. The half-edge data structure. APIs for geometry processing.
    8. Geometric tests and queries
      Estimating normal and tangent planes at vertices of polygonal meshes. Discrete curvature at mesh vertices. Mesh quality. Non-selfintersection test.
    9. Procedural modeling
      Fractals. Lindenmayer systems (L-systems). Stochastic and parametric grammars. Shape grammars. Generative modeling.
    10. Geometry acquisition
      Pipeline for the acquisition of 3D models. Technologies. Registration and merge.

    Activities

    Activity Evaluation act


    Lectures

    Material will be presented in lectures along the term. You are expected to conduct complementary readings and exercises will also be assigned on occasion, to be presented at a later date or turned in.
    Objectives: 1 2 3 4 5 7 8
    Theory
    23h
    Problems
    0h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    40h

    Implementation of selected algorithms

    A selection of relevant algorithms will be assigned to implement in Lab sessions and on your own. You may be required to present your solution to the class. You must turn in fully functional source code that runs in the indicated platform. Usual languages are C++ and Python.
    Objectives: 1 2 3 4 5 6 7 8
    Theory
    0h
    Problems
    0h
    Laboratory
    27h
    Guided learning
    0h
    Autonomous learning
    56h

    Final exam

    At the end of the term you will have a final exam, which may be a take-home.

    Week: 17
    Theory
    0h
    Problems
    0h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    0h

    Partial exam

    At the middle of the term you will have a partial exam, which may be a take-home.

    Week: 7
    Theory
    0h
    Problems
    0h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    0h

    Teaching methodology

    The teaching methodology will be based based on weekly theory classes and lab classes. Course concepts will be introduced in the theory classes. Exercises will be used to consolidate these concepts, which will be further developed in the lab sessions.

    The lab sessions basically involve the teacher presenting the guidelines for the practical work (split by sessions) and the concepts bearing on the software to be used. Students will complete the design and programming of the various applications bearing on the course contents. The exercises will be carried out individually.

    Evaluation methodology

    Partial: mark based on the student's performance in the partial exam

    Exam: mark based on the student's performance in the final exam

    Lab: grade stem from the student's implementations of selected algorithms (including occasionally their presentation of their
    solution in a laboratory class)

    The final grade for the course will be computed as:

    Final Grade = 0.4 Exam + 0.3 Partial + 0.3 Lab

    Bibliography

    Basic

    Complementary

    Previous capacities

    The course requires a basic linear algebra and 2D/3D geometry background.

    Background on Computer Graphics (rendering pipeline, shaders, OpenGL) is strongly recommended.

    Lab exercises will be implemented in Python and C++ languages, so students should have at least C/C++ programming skills.