Computer Graphics: Difference between revisions

From David's Wiki
No edit summary
Line 42: Line 42:
* [[Wikipedia: Diffuse reflection | Diffuse reflection]] - reflection scattered in many directions (i.e. matte)
* [[Wikipedia: Diffuse reflection | Diffuse reflection]] - reflection scattered in many directions (i.e. matte)
* [[Wikipedia: Specular reflection | Specular reflection]] - mirror reflection
* [[Wikipedia: Specular reflection | Specular reflection]] - mirror reflection
* [[Wikipedia Refraction | Refraction]] - change in direction of light as it passes through a material
* [[Wikipedia: Refraction | Refraction]] - change in direction of light as it passes through a material


==Resources==
==Resources==
* [https://www.udacity.com/course/interactive-3d-graphics--cs291 Udacity Interactive 3D Graphics]
* [https://www.udacity.com/course/interactive-3d-graphics--cs291 Udacity Interactive 3D Graphics]

Revision as of 16:02, 3 April 2020

Basics of Computer Graphics

MVP Matrices

To convert from model coordinates \(\displaystyle v\) to screen coordinates \(\displaystyle w\), you do multiply by the MVP matrices \(\displaystyle w=P*V*M*v\)

  • The model matrix \(\displaystyle M\) applies the transform of your object. This includes the position and rotation. \(\displaystyle M*v\) is in world coordinates.
  • The view matrix \(\displaystyle V\) applies the transform of your camera.
  • The projection matrix \(\displaystyle P\) applies the projection of your camera, typically an orthographic or a perspective camera. The perspective camera shrinks objects in the distance.

View Matrix

Reference
Lookat function
The view matrix is a 4x4 matrix which encodes the position and rotation of the camera.
Given a camera at position \(\displaystyle \mathbf p\) looking at target \(\displaystyle \mathbf t\) and up vector \(\displaystyle \mathbf u\).
We can calculate the forward vector (from target to position) as \(\displaystyle \mathbf{f}=\mathbf{p} - \mathbf{t}\).
We can calculate the right vector as \(\displaystyle \mathbf u \times \mathbf f\).
Then the view matrix is written as:

r_x r_y r_z 0
u_x u_y u_z 0
f_x f_y f_z 0
p_x p_y p_z 1
Matrix lookAt(camera_pos, target, up) {
  forward = normalize(camera - target)
  up_normalized = normalize(up)
  right = normalize(cross(up, forward)
  // Make sure up is perpendicular to forward
  up = normalize(cross(forward, right)
  m = stack([right, up, forward, camera], 0)
  return m
}

Shading

Flat Shading

Gourard Shading

Phong Shading

More Terms

Resources