Giter Site home page Giter Site logo

gp2021-assignments's Introduction

Shape Modeling and Geometry Processing - Course Assignments

Student data

Name: 'Your real name'
Legi-Nr: 'Your legi number'

Email: 'Your email address'

Follow the instructions to updated your private repository.

Assignments Overview

Assignment 1 (Due date: 12.03.2021 10:00)

General Rules and Instructions

Plagiarism Note and Late Policy

Copying code (either from other students or from external sources) is strictly prohibited! We will be using automatic anti-plagiarism tools, and any violation of this rule will lead to expulsion from the class. Late submissions will generally not be accepted. In case of serious illness or emergency, please notify Floor and provide a relevant medical certificate.

Provided Libraries

For each assignment, you will use the geometry processing library libigl, which includes implementations of many of the algorithms presented in class. The libigl library includes a set of tutorials, an introduction which can be found online. You are advised to look over the relevant tutorials before starting the implementation for the assignments; you are also encouraged to examine the source code of all the library functions that you use in your code to see how they were implemented. To simplify compilation, we will use libigl as a header-only library (note that, if you prefer, you can compile it into a set of static libraries for faster builds at your own risk (this can be brittle on some platforms). We already included libigl as a git submodule in the course assignment repository https://github.com/eth-igl/GP2021-Assignments.git and you don't need to download it yourself. All further dependencies of libigl (like Eigen) are included as submodules in the directory 'libigl/external/' No libraries apart from those are permitted unless stated otherwise.

Installing Git and CMAKE

Before we can begin, you must have Git running, a distributed revision control system which you need to handin your assignments as well as keeping track of your code changes. We refer you to the online Pro Git book for more information. There you will also find instructions on how to to install it. On windows we suggest using git for windows.

CMake is the system libigl uses for cross-platform builds. If you are using Linux or macOS, I recommend installing it with a package manager instead of the CMake download page. E.g. on Debian/Ubuntu:

sudo apt-get install cmake

or with MacPorts on macOS:

sudo port install cmake.

On Windows you can download it from: https://cmake.org/download/

Cloning the Assignment Repository

Before you are able to clone your private assignment repository, you need to have a active Github account. Then you can create your own private online repository by following this link: https://classroom.github.com/a/-c-axeq2

In the next step you need to clone it to your local harddrive

git clone --recursive https://github.com/eth-igl/gp21-'Your_Git_Username'.git

'Your_Git_Username' needs to be replaced accordingly. This can take a moment.

Next, cd into the newly created folder, and add the base assignment repository as a remote:

cd gp21-'Your_Git_Username'
git remote add base https://github.com/eth-igl/GP2021-Assignments.git
git pull base master

Now you should have your local clone of the assignment repository ready. Have a look at the new repository folder and open the 'README.md'. It contains the text you are just reading. Please fill in your name and student number at the top of this file and save. Then you need to stage and commit this changed file:

git add README.md
git commit -m "Adjust README.md"
git push

You should now be able to see your name online on your private repository: https://github.com/eth-igl/gp21-'Your_Git_Username'

Building Each Assignment

In the assignment repository you will find the different assignment directories 'assignmentX'. For now you only see the first one 'assignment1'. To compile the assignment code we will use the CMake building system.

Create a directory called build in the assignment directory, e.g.:

cd assignment1; mkdir build

Use CMake to generate the Makefiles needed for compilation inside the build/ directory:

cd build; cmake -DCMAKE_BUILD_TYPE=Release ../

On windows use the CMAKE gui with the buttons Configure and Generate.

Compile and run the executable, e.g.:

make && ./assignment1 <some mesh file>

Or use your favorite IDE.

Please compile your code in Release mode.

If you encounter any problems, please create an issue on the assignments repository on GitHub or ask the assistant in the exercise session.

Workflow

In general, you should use Git to commit your edits as often as possible. This will help you with backtracking bugs and also serve as a backup mechanism. For more information we refer you to the Pro Git book.

Every new assignment needs to be pulled from the base repository:

git pull base master

To pull bug fixes or changes you can do the following steps:

git pull base master
rm -r libigl
git submodule sync
git submodule update --init --recursive

Solution Submission

In every assignment directory you will find a 'README.md' file in which we will specify the required screenshots and console outputs. You should briefly summarize and report your results and observations, or discuss possible problems. For a quick introduction of the Markdown syntax see: https://guides.github.com/features/mastering-markdown/

To submit your solution of the assignment please add the following commit message: "Solution assignment X". E.g:

git commit -m "Solution assignment X"
git push

You can keep updating your code before the deadline. After the deadline, please don't change the code before we send you the scores.

Using Issues for discussion

Please use the "Issues" above to post your questions and discussions about the assignments. We will try to answser your questions asap, while all students are encouraged to address these questions to help their fellows.

The solutions must be submitted before the corresponding demo session. Late submissions will not be accepted.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.