Giter VIP home page Giter VIP logo

comp371-project's Introduction

Hi there I'm Cedric πŸ‘‹

  • πŸ”­ PhD student in Computer Science (Computer Graphics)
  • πŸ‘‰ My favorite programming language is C++
  • 🌱 I'm currently learning higher math, and Rust
  • I like to make tiny indie games: Itch.io

comp371-project's People

Contributors

laemtl avatar luigibesani avatar mansour365 avatar martenscedric avatar peterghimself avatar

Watchers

 avatar  avatar  avatar

comp371-project's Issues

Input Handling

The application should handle the following input:

  • The user can incrementally size up the model by pressing β€˜U’ to scale-up and β€˜J’
    to scale-down. Each key press should result in a small size change.

  • The user can control the model position and orientation using keyboard input,
    i.e., A β†’ move left, D β†’ move right, W β†’ move up, S β†’ move down, a β†’ rotate
    left 5 degrees about Y axis, d β†’ rotate right 5 degrees about Y axis. You may
    add other rotations about other axis, if you want.
    2– The world orientation is changed by using keyboard input i.e. left arrow β†’ Rx,
    right arrow β†’ R-x, up arrow β†’ Ry, down arrow β†’ R-y. (Rx denotes a small anti-
    clockwise rotation about positive x axis, R-x about negative x axis, etc.) Pressing
    β€œHome” button should reset to the initial world position and orientation.
    – The user can change rendering mode for the model, i.e. points, lines, triangles
    based on keyboard input, namely, key β€˜P’ for points, key β€˜L’ for lines, key β€˜T’ for
    triangles.
    – The user can pan and tilt the camera as follows:
    βˆ— While right button is pressed β†’ use mouse movement in x direction to pan;
    and
    βˆ— While middle button is pressed β†’ use mouse movement in y direction to tilt.
    – The user can zoom in and out of the scene - while left button is pressed β†’ use
    mouse movement to move into/out of the scene.

Comment Code

The application must use OpenGL 3.1 and onwards and must include brief comments
explaining each step.

[Input] Scale up/down

The user can incrementally size up the model by pressing β€˜U’ to scale-up and β€˜J’
to scale-down. Each key press should result in a small size change.

Enclose the entire model in a big sphere

Enclose the entire model in a big sphere (like bubble soccer and use triangle mesh
representations. You should have lower half of the model outside the bubble.)

Incrementally size up/down

The user can incrementally size up the Model by pressing β€˜U’ for scale-up and β€˜J’for scale-down. Each key press should result in a small size change (define deltachange in a variable)

Window resize

Window resize handling: The application should handle window resize events and correctly adjust the aspect ratio accordingly. This means, the meshes should not be distorted in anyway.

Reorder children before drawing

For blending to work we need to draw far children first (otherwise transparent objects can hide others behind them).
We have to reorder children based on distance from camera before drawing.

Refactor shader usage

One issue we currently have is that we can't easily add a new shader because how viewmatrix is unaccessible from the camera.

We need to reinvent the way we set the view matrix on the camera so each model can have a shader.

(Perhaps we should pass the camera to the models?)

[Input] Zoum in/out

The user can zoom in and out of the scene - while left button is pressed β†’ use
mouse movement to move into/out of the scene.

Create an alphabet and a digit model as described earlier and like the one depicted in the figure by suitably transforming a unit cube. There must be one model by each of the team members based on their name and student ID.

A mesh is a set of polygons that share vertices and edges which describe the shape of
a geometric object. In this assignment you have to first create a unit cube in 3D at the
origin, then using appropriate modeling transformations create the third alphabet from your
first name and fourth digit from your student ID. (see Figure 1 – an illustration of a sample
output for a student name SAURIN SHAW with student ID 27391432) (U9)

Model Splitting

Make the model move by moving the segments touching the ground (lower half
of the model), while also providing either lateral/vertical movement to the upper
half of the model. (One key of your choice for one small forward movement, and
other key for continuous forward movement. Same for reverse movement).

[Input] Model position

The user can control the model position using keyboard input,
i.e., A β†’ move left, D β†’ move right, W β†’ move up, S β†’ move down.

[Input] Model rotation

The user can control the model orientation using keyboard input, a β†’ rotate
left 5 degrees about Y axis, d β†’ rotate right 5 degrees about Y axis. You may
add other rotations about other axis, if you want.

[Input] Tilt camera

The user can pan and tilt the camera as follows:
βˆ— While right button is pressed β†’ use mouse movement in x direction to pan;
and
βˆ— While middle button is pressed β†’ use mouse movement in y direction to tilt.

Texture

Render the scene with tiled texture on the ground mesh, box texture on the
alphabet and shiny metal finish (color of your choice) for the digit (set key β€˜X’
for toggling texture on/off).

[Input] World orientation

The world orientation is changed by using keyboard input i.e. left arrow β†’ Rx,
right arrow β†’ R-x, up arrow β†’ Ry, down arrow β†’ R-y. (Rx denotes a small anti-
clockwise rotation about positive x axis, R-x about negative x axis, etc.) Pressing
β€œHome” button should reset to the initial world position and orientation.

Shadows

Render the scene with shadows using the two-pass shadow algorithm (set key β€˜B’
to toggle).

Camera movement

Different camera... You should have simple interaction mechanisms to navigate through the virtual world and view it from different angles.

[Input] Rendering mode

The user can change rendering mode for the model, i.e. points, lines, triangles
based on keyboard input, namely, key β€˜P’ for points, key β€˜L’ for lines, key β€˜T’ for
triangles.

Place a virtual camera with the world space origin as the point of focus.

Place a virtual camera with the world space origin as the point of focus. For display
and animation:

  • Create a GLFW window of size 1024x768 with double buffering support.
  • Render the coordinate axis, ground and all the models in the window.
  • The application should use a perspective view to display all the objects and enable hidden surface removal.

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.