Download presentation

Presentation is loading. Please wait.

Published byTrever Maris Modified over 2 years ago

1
2IV60 Computer graphics set 7: Basic Geometric Modeling Jack van Wijk TU/e

2
Geometric modeling 1 The world is full of all kind of objects: Trees, people, cars, housed, clouds, rocks, waves, pencil sharpeners, fire, mountains, plants, … How can we describe these, such that they are -easy to enter; -easy to process; -easy to display? Complex problem, HUGE topic!

3
Geometric modeling 2 Input: by user -preferably on a high level, customized to application by scanning objects -laser scanners: points -medical scanners: voxels

4
Geometric modeling 3 triangles User Scanner conversion graphics pipeline image 3D points, voxels Instructions, specifications

5
Smooth Curves (2D) Two standard methods: Parametric: X(t) = (x(t), y(t)) Implicit: f(x, y) = 0 H&B A-8,9:772-774

6
Parametric description line 1 Given point P and vector V: X(t) = P + Vt Given two points P en Q: X(t) = P + (Q P)t, or = P(1 t) + Qt Segment: t min t t max x y P V t Q H&B A-8,9:772-774

7
Parametric description curve X(t) = (x(t), y(t)) Drawing a curve in a simple way, approximate with a polyline: MoveTo(X(0)); for i := 1 to N do LineTo(X(i t)); H&B A-8,9:772-774

8
Drawing a curve with OpenGL 1 X(float t):Point; { P[0]= …; P[1]=…; P[2]=…; return P; }; DrawX(); { N = 12; // use symbolic name for the number of segments int i; float dt := (tmax – tmin)/N; glBegin(GL_LINE_STRIP); // GL_LINE_LOOP if closed curve for (i = 0; i <= N; i++) // bounds here: 0 - N glVertex3fv(X(tmin + i*dt)); glEnd(); } H&B 4-5:82-83

9
Drawing a curve with OpenGL 2 Using too few points: –jagged appearance; Using too many points: –slow, –fat appearance (many segments per pixel). H&B 4-5:82-83

10
Drawing a curve with OpenGL 3 Decide on #points: –characteristics shape; –size of shape on screen. –beforehand or adjust automatically. H&B 4-5:82-83

11
Implicit description line (X P).N = 0 with N.V = 0 (N: normal vector) Also: ax+by+c=0 x y P V N H&B A-8,9:772-774

12
Implicit description curve f >0 f <0 f = 0 f =-1 f = 1 f =-2 H&B A-8,9:772-774

13
Circle x y r H&B A-8,9:772-774

14
Curves (3D) Two standard methods: Parametric: X(t) = (x(t), y(t), z(t)) Implicit: f(x, y, z) = 0 and g(x, y, z) = 0 Intersection of two surfaces H&B A-8,9:772-774

15
Circle in 3D x y r z H&B A-8,9:772-774

16
Surfaces H&B A-8,9:772-774 Polyhedra Parametric surfaces Implicit surfaces

17
Polyhedra Set of polygons that describe the surface of an object Often only triangles (hardware!) Many variations for storage (zie H&B 4-7) Often additional information per vertex (color, normal, texture, …) H&B 13-1:418

18
Curved surfaces Parametric: X(u,v) = (x(u,v), y(u,v), z(u,v)) Implicit: f(x, y, z) = 0 H&B 13-3:421-422

19
Sphere 1 x y z v constant, u varies u constant, v varies H&B 13-4:422-424

20
Sphere 2 x y H&B A-8,9:807-808 z v constant, u varies u constant, v varies u v

21
Sphere 3 x y z H&B 13-4:422-424

22
Partial Derivatives 1 H&B A10:774

23
Partial Derivatives 2 H&B A10:774

24
Normal on surface 1 H&B A-10:774-775 T(u)T(u) P(u)P(u) u

25
Normal on surface 2 T u (u,v) P(u,v) u T v (u,v) v H&B A-10:774-775

26
Normal on surface 3 T u (u,v) P(u,v) u T v (u,v) v N H&B A-10:774-775

27
Normal on surface 4 x y z v u TuTu TvTv N H&B A-10:774-775

28
Normal on surface 5 H&B A-10:774-775

29
Normal on surface 6 N(x,y,z) (x,y,z) f(x,y,z)=0 H&B A-10:774-775

30
Normal on surface 7 f >0 f <0 f = 0 H&B A-10:774-775

31
Normal on surface 8 x y z N H&B A-10:774-775

32
Quadratic surfaces 1 x y z H&B 13-4:422-424

33
Quadratic surfaces 2 x y z a c b H&B 13-4:422-424

34
Quadratic surfaces 3 (0, y, z) y as rara r z as y (x, y, z) y as x as H&B 13-4:422-424

35
Drawing surfaces with OpenGL 1 Quadratic surfaces: GLU and GLUT offer some basic functions: –glutSolidSphere(r, nLon, nLat); –glutSolidCone(rbase, rheight, nLon, nLat); –glutSolidTeapot(size); –gluSphere, gluCylinder, Teapot? –Google: Utah teapot; –Google: Stanford bunny. H&B 13-6:425-431

36
Drawing surfaces with OpenGL 1 Quadratic surfaces: GLU and GLUT offer some basic functions: –glutSolidSphere(r, nLon, nLat); –glutSolidCone(rbase, rheight, nLon, nLat); –glutSolidTeapot(size); –gluSphere, gluCylinder, Alternative: Define your own, custom versions, based on standard way to render parametric surfaces. H&B 13-6:425-431

37
Drawing surfaces with OpenGL 2 X(float u, v):Point; { P[0]= …; P[1]=…; P[2]=…; return P; }; DrawX(); { NU, NV = 12; // use symbolic names for numbers of points again int i, j; float du := (umax – umin)/NU; float dv := (vmax – vmin)/NV; for (j = 0; j < NV; j++) { glBegin(GL_QUAD_STRIP); for (i = 0; i <= NU; j++) { glVertex3fv(X(umin + i*du, vmin + j*dv)); glVertex3fv(X(umin + i*du, vmin + (j+1)*dv)); } glEnd(); }

38
Drawing surfaces with OpenGL 3 Many variations possible –using triangle strips; –inserting normals, shading info, texture,... Selecting the number of facets: –too few: jagged appearance; –too many: slow; –decide beforehand or automatically, based on size on screen and curvature surface. H&B 4-5:82-83

39
Next… We now know how to define basic objects. Stay tuned for splines: arbitrary curves and curved surfaces. But first: let’s consider illumination and shading.

Similar presentations

OK

Curves and Surfaces in OpenGL Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico.

Curves and Surfaces in OpenGL Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico.

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google