Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.

Similar presentations


Presentation on theme: "1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science."— Presentation transcript:

1 1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science Laboratory University of New Mexico Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

2 2 Computer Viewing Projection Ed Angel Professor Emeritus of Computer Science University of New Mexico Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

3 3 Objectives Introduce the mathematics of projection Add WebGL projection functions in MV.js Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

4 4 Projections and Normalization The default projection in the eye (camera) frame is orthogonal For points within the default view volume Most graphics systems use view normalization ­All other views are converted to the default view by transformations that determine the projection matrix ­Allows use of the same pipeline for all views x p = x y p = y z p = 0 Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

5 5 Homogeneous Coordinate Representation x p = x y p = y z p = 0 w p = 1 p p = Mp M = In practice, we can let M = I and set the z term to zero later default orthographic projection Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

6 6 Simple Perspective Center of projection at the origin Projection plane z = d, d < 0 Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

7 7 Perspective Equations Consider top and side views x p =y p = z p = d Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

8 8 Homogeneous Coordinate Form M = consider q = Mp where p =  q = Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

9 9 Perspective Division However w  1, so we must divide by w to return from homogeneous coordinates This perspective division yields the desired perspective equations We will consider the corresponding clipping volume with mat.h functions that are equivalent to deprecated OpenGL functions x p =y p = z p = d Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

10 10 WebGL Orthogonal Viewing ortho(left,right,bottom,top,near,far) near and far measured from camera Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015 negative

11 11 WebGL Orthogonal Viewing Try “ortho.html” (which uses ortho.js)ortho.htmlortho.js IMPORTANT NOTE : ­In ortho.js, the following lines were modified to show the effect of moving the near and far planes. Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015 document.getElementById("Button1").onclick = function () { near += 0.1; far += 0.1; }; // original code-> function(){near *= 1.1; far *= 1.1;}; document.getElementById("Button2").onclick = function () { near -= 0.1; far -= 0.1; }; // original code-> function(){near *= 0.9; far *= 0.9;};

12 12 WebGL Perspective (frustum not implemented in MV.js) frustum(left,right,bottom,top,near,far) Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015 negative

13 13 Using Field of View With frustum it is often difficult to get the desired view perpective(fovy, aspect, near, far) often provides a better interface aspect = w/h front plane Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

14 Computing Matrices (see perspective2.html + perspective2.js)perspective2.htmlperspective2.js Compute in JS file, send to vertex shader with gl.uniformMatrix4fv Dynamic: update in render() or shader 14 Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

15 persepctive2.js 15 var render = function(){ gl.clear( gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); eye = vec3(radius*Math.sin(theta)*Math.cos(phi), radius*Math.sin(theta)*Math.sin(phi), radius*Math.cos(theta)); modelViewMatrix = lookAt(eye, at, up); projectionMatrix = perspective(fovy, aspect, near, far); gl.uniformMatrix4fv( modelViewMatrixLoc, false, flatten(modelViewMatrix) ); gl.uniformMatrix4fv( projectionMatrixLoc, false, flatten(projectionMatrix) ); gl.drawArrays( gl.TRIANGLES, 0, NumVertices ); requestAnimFrame(render); } Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

16 vertex shader 16 attribute vec4 vPosition; attribute vec4 vColor; varying vec4 fColor; uniform mat4 modelViewMatrix; uniform mat4 projectionMatrix; void main() { gl_Position = projectionMatrix*modelViewMatrix*vPosition; fColor = vColor; } Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

17 Try « projection.exe » from the « Tutor » zip file. 17 Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009


Download ppt "1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science."

Similar presentations


Ads by Google