Your SlideShare is downloading. ×
CG OpenGL 3D object representations-course 8
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

CG OpenGL 3D object representations-course 8

1,467
views

Published on

Published in: Design, Technology, Art & Photos

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,467
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
27
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 3D object representations Chen Jing-Fung (2006/12/5) Assistant Research Fellow, Digital Media Center, National Taiwan Normal University Video Processing Lab 臺灣師範大學數位媒體中心視訊處理研究室Ch8: Computer Graphics with OpenGL 3th, Hearn BakerCh6: Interactive Computer Graphics 3th, Addison Wesley
  • 2. 3D objects• Regular Polyhedrons – Solid – Mesh surface Video Processing Lab 2 臺灣師範大學數位媒體中心視訊處理研究室
  • 3. Graphics scenes• Contain many different kinds of objects and material surfaces – Trees, flowers, clouds, rocks, water, bricks …• Polygon and quadric surfaces provide precise descriptions for simple Euclidean objects – Polyhedrons & ellipsoids – Quadric surfaces (Ex: spline surfaces…) • Mathematical method modify those objects Video Processing Lab 3 臺灣師範大學數位媒體中心視訊處理研究室
  • 4. Useful design • The constructive solid-geometry techniques are useful design – Aircraft wings, gear and other engineering structuresThe F-15 Eagle has a large relatively Air France 747-200(Boeing)lightly loaded wing (large and low..) wing loading landing gear Video Processing Lab 4 臺灣師範大學數位媒體中心視訊處理研究室
  • 5. Polyhedrons• The most commonly used boundary to show 3D graphics object – A set of surface polygons to enclose the object interior• Simply & speed up the surface rendering and display of object – Graphics systems store all object descriptions • Standard graphics objects Video Processing Lab 5 臺灣師範大學數位媒體中心視訊處理研究室
  • 6. OpenGL polyhedron functions• Polygon Fill-Area functions – OpenGL primitive constants • GL_POLYGON, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS and GL_QUAD_STRIP – All faces compose by a group of parallelograms, all faces compose by triangular surfaces or other polygon from.. Video Processing Lab 6 臺灣師範大學數位媒體中心視訊處理研究室
  • 7. GLUT regular Polyhedron functions (1)• Five regular polyhedrons are pre-defined by routines in GLUT library – These polyhedrons are also called Platonic solids • All the faces are same regular polygons – All edges are equal, All edge angles are equal and All face angles are equal – Polyhedron are named according to numberface • Ex: regular tetrahedron (4 faces), regular hexahedron ( or cube, 6 faces) …. Video Processing Lab 7 臺灣師範大學數位媒體中心視訊處理研究室
  • 8. GLUT regular Polyhedron functions (2) – Each regular polyhedron is described in modeling coordinates • Each object’s center at world-coordinaate origin – Wire-frame object functions • glutWire*() – Tetrahedron, Octahedron, Dodecahedron and Icosahedron – Fill areas polyhedron functions • glutSolid*() – Tetrahedron, Octahedron, Dodecahedron and Icosahedron edgeLength must be pre-defined glutWireCube (edgeLength) glutSolidCube (edgeLength) Video Processing Lab 8 臺灣師範大學數位媒體中心視訊處理研究室
  • 9. Design notices• Display function – Set viewing transformation • gluLookAt()• Reshape function – glMatrixMode(GL_PROJECTION) • 3D projection – glFrustum() or glOrtho() …. demo Video Processing Lab 9 臺灣師範大學數位媒體中心視訊處理研究室
  • 10. Regular 3D object’s mesh• What is 3D object’s mesh? – Like the object’s skin• How to construct it? – Curved surfaces coordinate – What polygon can be used? Video Processing Lab 10 臺灣師範大學數位媒體中心視訊處理研究室
  • 11. Curved surfaces• General coordinates z – Cartesian coordinate y• Quadric surfaces x – Spherical surface – Ellipsoid’s surface – Torus’s surface Video Processing Lab 11 臺灣師範大學數位媒體中心視訊處理研究室
  • 12. Spherical Surface• In cartesian coordinates, a spherical z surface (x,y,z) – radius r, any point (x,y,z) φ y • x2+y2+z2=r2 θ x – Describe the spherical surface • x  r cos cos  / 2     / 2 y  r cos sin      z  r sin Video Processing Lab 12 臺灣師範大學數位媒體中心視訊處理研究室
  • 13. Think!!• We change the angle φ of the point’s axis – the angle range will be z re-computed φ (x,y,z) x  r cos cos 0     y y  r cos sin 0    2 θ x z  r sin – Want to re-range two angles in 0~1 • substituting    u,   2 v Why? Video Processing Lab 13 臺灣師範大學數位媒體中心視訊處理研究室
  • 14. Draw a sphere wire• Plot longitude and latitude to approximates the spherical surface as a quadrilateral mesh – Divide to three parts • Top, floor – The primary element is triangle Top & floor means covered the surface • Side – Construct it with rectangles – A surface Video Processing Lab 14 臺灣師範大學數位媒體中心視訊處理研究室
  • 15. Top (+z) & floor (-z) glBegin(GL_TRIANGLE_FAN); glVertex3d(x,y,z); c=3.14159/180.0; //interval Δφ, φ=80.0*cx  r cos cos z=sin(c*80.0); // z=+..top, z=-.. floor Δθ for(thet=-180.0; thet<=180.0;thet+=20.0){y  r cos sin x=cos(c*80.0)*cos(c*thet);z  r sin y=cos(c*80.0)*sin(c*thet); glVertex3d(x,y,z); } glEnd(); Video Processing Lab 15 臺灣師範大學數位媒體中心視訊處理研究室
  • 16. Side for(phi=-80.0; phi<=80.0; phi+=20.0){ glBegin(GL_QUAD_STRIP); Δθ for(thet=-180.0; thet<=180.0;thet+=20.0) { x=cos(c*phi)*cos(c*thet); y=cos(c*phi)*sin(c*thet); x2+y2+z2=r2 z=sin(c*phi);x  r cos cos glVertex3d(x,y,z); x=cos(c*(phi+20.0))*cos(c*thet);y  r cos sin y=cos(c*(phi+20.0))*sin(c*thet);z  r sin z=sin(c*(phi+20.0)); glVertex3d(x,y,z); } glEnd(); } p5 glBegin(GL_QUAD_STRIP); p1 p4 p8 glVertex3d(p1)…. glVertex3d(p8) glEnd(); p2 p3 p6 p7 Video Processing Lab 16 臺灣師範大學數位媒體中心視訊處理研究室
  • 17. Advantage of this design• Put each design component to list function in initial function – Ex: top, floor or side• In display function call our design to let them move• Next page will show how to design Video Processing Lab 17 臺灣師範大學數位媒體中心視訊處理研究室
  • 18. Display architecture Display-processor architectureSimple graphics architecture server Displayserver processor Host Host (DPU) Display file Immediate mode (display list) Ex : progressive Retained mode Ex : interlace Video Processing Lab 18 臺灣師範大學數位媒體中心視訊處理研究室
  • 19. Definition & execution of display lists• Display lists have much in common with ordinary files. – Define (create) • What contents of display list – Manipulate (place information in) • What functions of display lists – Such as: flexible enough…. Video Processing Lab 19 臺灣師範大學數位媒體中心視訊處理研究室
  • 20. OpenGL display lists • Display lists in OpenGL are defined similarly to geometric primitive Display function:Object’s name in the list *Each time that we wish to draw: glNewList(BOX, flag); (Ex: do transformation or set up time control…) glBegin(GL_POLYGON) GL_COMPILE: send list glCallList(BOX); … to server, not to display Matrix and attribute stacks: glEnd(); GL_COMPILE_AND_EXE glPushAttrib(GL_ALL_ATTRIB_BITS); CUTE: immediate display glPushMatrix(); glEndList(); Display list function: glPopAttrib(); glPopMatrix(); Video Processing Lab 20 臺灣師範大學數位媒體中心視訊處理研究室
  • 21. OpenGL GLUT Quadric-Surface sphere functions• GLUT sphere functions – Approximate the spherical surface as a quadrilateral mesh – glutWireSphere (r,nLongitudes, nLatitudes); glutSolidSphere (…) • r (sphere radius): double or float point • nLongitudes & nLatitudes: the integer number about longitude lines & latitude lines – The sphere is defined in modeling coordinates, centered at the originworld-coordinate with its polar axis along the z-axis Video Processing Lab 21 臺灣師範大學數位媒體中心視訊處理研究室
  • 22. height GLUT Cone functions rBase• GLUT cone is obtained with – glutWireCone(rBase,height,nLongitudes,nLatitudes); glutSolidCone(…); • rbase & height: float or double • nLongitudes & nLatitudes: integer Ex: 5, 6 – Each latitude line is parallel with theirseves • the quadrilateral mesh approximation Video Processing Lab 22 臺灣師範大學數位媒體中心視訊處理研究室
  • 23. Ellipsoid’s surface• Describe it an extension of a spherical surface z – Three radii rz – In Cartesian coordinates rx y 2 ry x y z 2 2       1   x  rx   ry   rz  – Representation by two angle (φ&θ) x  rx cos  cos   / 2     / 2 y  ry cos  sin      z  rz sin  This mesh is similar the spherical mesh Video Processing Lab 23 臺灣師範大學數位媒體中心視訊處理研究室
  • 24. Torus’s surface (1) raxial • What is Torus? – a doughnut-shaped object or called ring – Describe the surface • rotating a circle or an ellipse about a co- planar axis line z axis (0,y,z) r φ 0 y axis (x,y,z) 0 y axis θ raxial x axis Side view Top view Video Processing Lab 24 臺灣師範大學數位媒體中心視訊處理研究室
  • 25. Torus’s surface (2) raxial• In Cartesian equation ( x 2  y 2  raxial )2  z2  r 2• Using a circular cross section x  (raxial  r cos  )cos      y  (raxial  r cos  )sin      z  r sin Video Processing Lab 25 臺灣師範大學數位媒體中心視訊處理研究室
  • 26. • If generate a torus by rotating an ellipse & round circle about the z axis – In Cartesian equation 2  x2  y 2  r   z 2  axial    1  ry   rz    – The torus with an elliptical cross section x  (raxial  ry cos  )cos       y  (raxial  ry cos  )sin      z  rz sin  Video Processing Lab 26 臺灣師範大學數位媒體中心視訊處理研究室
  • 27. GLUT torus rout rin functions• Wire-frame or surface-shaded displays of a torus with a circular cross section – glutWireTorus(rCrossSection, rAxial, nConcentrics,nRadialSlices); glutSolidTorus(…); • rcrossSection (=inner Radius)& rAxial (=outer Radius) – float or double • nConcentrics(sides) & nRadialSlices(rings) – Integer – sides is parallel together(nCon..: the number of sides), nRadial..: the number of rings Video Processing Lab 27 臺灣師範大學數位媒體中心視訊處理研究室
  • 28. GLU Quadric-Surface functions• Quadric surface can used GLU functions to design – Assign a name to the quadric – Activate the GLU quadric render – Designate values for surface parameters• Set other parameter values to control the appearance of a GLU quadric surface. Video Processing Lab 28 臺灣師範大學數位媒體中心視訊處理研究室
  • 29. Some GLU functions• Sphere: – gluSphere(name,r,nLongitudes,nLatitudes);• Cylinder: – gluCylinder(name,rBase,rTop,height, nLongitudes,nLatitudes);• A section of ring: – gluPartialDisk(name, rin,rout,nRadii,nRings, Anglestart, Anglesweep); Video Processing Lab 29 臺灣師範大學數位媒體中心視訊處理研究室
  • 30. How to use?• Example: to draw the sphere GLUquadricObj *sphere1; sphere1 = gluNewQuadric (); gluQuadricDrawStyle(sphere1, display mode); gluSphere(sphere1,…); gluQuadricOrientation(sphere1, normalvectordirection);//signal face surface gluQuadricNormal(sphere1, generationMode);//total object pluDeleteQuadric (sphere1);//delete the object • Display mode: – GLU_LINE, GLU_POINT, GLU_FULL • Normal vector direction – GLU_OUTSIDE or GLU_INSIDE (inside: back-face, outside:fact-face) • General mode – default=GLU_NONE, flat surface=GLU_FLAT(object of constant color) Video Processing Lab 30 臺灣師範大學數位媒體中心視訊處理研究室
  • 31. Approximation of a sphere by recursive subdivision• Recursive subdivision is a powerful technique for generating approximations to curves and surfaces to any desired level of accuracy – Start from four equilateral triangles (a tetrahedron) • Four vertices (points) in unit sphere: (0,0,1),(0,2 2 / 3, 1/ 3),( 6 / 3,  2 / 3, 1/ 3),( 6 / 3,  2 / 3, 1/ 3) Video Processing Lab 31 臺灣師範大學數位媒體中心視訊處理研究室
  • 32. Triangle -> tetrahedronvoid triangle( point a, point b, point void tetrahedron() {c)// display one triangle using a line triangle(v[0],v[1],v[2]);loop for wire frame triangle(v[3],v[2],v[1]);{ triangle(v[0],v[3],v[1]);glBegin(GL_LINE_LOOP); triangle(v[0],v[2],v[3]); } glVertex3fv(a); glVertex3fv(b); v0 glVertex3fv(c); glEnd();} v1 v2 v3 Video Processing Lab 32 臺灣師範大學數位媒體中心視訊處理研究室
  • 33. void normal(point p){ void tetrahedron( int m){/* normalize a vector */ /* Apply triangle subdivision to faces of double sqrt(); tetrahedron */ float d =0.0; divide_triangle(v[0], v[1], v[2], m); int i; divide_triangle(v[3], v[2], v[1], m); for(i=0; i<3; i++) d+=p[i]*p[i]; divide_triangle(v[0], v[3], v[1], m); d=sqrt(d); divide_triangle(v[0], v[2], v[3], m);} if(d>0.0) for(i=0; i<3; i++) p[i]/=d;}  void divide_triangle(point a, point b, point c, int m){ p Vnor  /* triangle subdivision using vertex numbers det(p) righthand rule applied to create outward pointing faces */ point v1, v2, v3; v0 int j; if(m>0) { for(j=0; j<3; j++) v1[j]=a[j]+b[j]; normal(v1); for(j=0; j<3; j++) v2[j]=a[j]+c[j]; v3 normal(v2); v1 v2 for(j=0; j<3; j++) v3[j]=b[j]+c[j]; normal(v3); divide_triangle(a, v1, v2, m-1); divide_triangle(c, v2, v3, m-1); divide_triangle(b, v3, v1, m-1); divide_triangle(v1, v3, v2, m-1); } else(triangle(a,b,c)); /* draw triangle at end of recursion */} Video Processing Lab 33 臺灣師範大學數位媒體中心視訊處理研究室
  • 34. Approximate object• Recursive subdivision – We could design a object’s surface numbers. – Recursive from coarse to fine• Mesh object related its surface – Direction: Longitude and latitude Video Processing Lab 34 臺灣師範大學數位媒體中心視訊處理研究室
  • 35. How to plot 3D object• Take apart of object to several polygon facets – First, list the vertices to show one surface • primitive: – GL_POLYGON, GL_QUADS or GL_TRIANGLES… – Function: glVertex3* (pointcoordinate) » Key point: triangle: 3 points or triangle+quadrangle – Second, list its surface direction • Find function about the approximate point – Ex: approximate sphere glNormal3* (normcoordinate) • Surface function construct from those vertices Video Processing Lab 35 臺灣師範大學數位媒體中心視訊處理研究室
  • 36. Homework 1 • Draw two object’s mesh (wire & solid)name Implicit function (F=0) Parametric form v range u rangeHyperboloid (sec(v )cos(u ),sec(v )sin(u ), (  / 2, / 2) x2+y2-z2-1 (  , ) tan(v ))Elliptic cone x2+y2-z2 (v cos(u ),v sin(u ),v ) any real nums,( , )Hyperbolic v  0,( , ) -x2+y2-z (v tan(u ),v sec(u ),v 2 )superellipsoid x 2 / s2 y  2 / s2 s2 / s1 z 2 / s1 1 (coss1 (v )coss2 (u ),coss1 (v )sins2 (u ), (  / 2, / 2),(  , ) sins1 (v )) s1, s2 : 0.5 ~ 3.0(# 6)superhyperbol s2 / s1 (sec s (v )sec s (u ),sec s (v )tans (u ), v : (  / 2, / 2)  x 2 / s2  y 2 / s2   z2 / s1  1 1 2 1 2oid   tans1 (v )) u : sheet#1 or sheet#2 sheet #1: ( / 2, / 2) sheet # 2 : ( / 2,3 / 2) Superellipse demo Video Processing Lab 36 臺灣師範大學數位媒體中心視訊處理研究室
  • 37. Homework 2• Practice “Recursive subdivision” – Draw a magic box • Hint: Some things jump out the cube or this box’s sub-part can be rotated Video Processing Lab 37 臺灣師範大學數位媒體中心視訊處理研究室
  • 38. Appendixname Implicit function (F=0) Parametric form v, u rangeEllipsoid (cos(v )cos(u ),cos(v )sin(u ), v : (  / 2, / 2) x2+y2+z2-1 sin(v )) u : (  , )Hyperboloid of v : (  / 2, / 2) x2+y2-z2-1 (sec(v )cos(u ),sec(v )sin(u ),one sheet tan(v )) u : (  , )Hyperboloid of (sec(v )cos(u ),sec(v )tan(u ), v : ( / 2, / 2) x2-y2-z2-1  two sheet tan(v )) sheet# 1: u : ( , ) 2 2  3 sheet# 2 : u : ( , ) 2 2 Ellipsoid Hyperboloid of one sheet Hyperboloid of two sheet Video Processing Lab 38Ch9: Computer Graphics, Hill 臺灣師範大學數位媒體中心視訊處理研究室
  • 39. name Implicit function (F=0) Parametric form v, u rangeElliptic cone v : any real x2+y2-z2 (v cos(u ),v sin(u ),v ) u : (  , )Elliptic x2+y2-z (v cos(u ),v sin(u ),v 2 ) v0paraboloid u : (  , )Hyperboloid v0 -x2+y2-z (v tan(u ),v sec(u ),v )2paraboloid u : (  , ) Elliptic paraboloid Elliptic cone Hyperboloid paraboloid Video Processing Lab 39 臺灣師範大學數位媒體中心視訊處理研究室
  • 40. s1, s2 : 0.5 ~ 2.5(# 5)superellipsoid x 2 / s2 y  2 / s2 s2 / s1 z 2 / s1 1 (coss1 (v )coss2 (u ),coss1 (v )sins2 (u ), sins1 (v )) v : (  / 2, / 2) u : (  , )Superhyperbo s2 / s1 (sec s1 (v )coss2 (u ),sec s1 (v )sins2 (u ), v : (  / 2, / 2)loid of one x 2 / s2 y 2 / s2  z 2 / s1 1 s   tan 1 (v )) u : (  , )sheet superellipsoid Superhyperboloid of one sheet Video Processing Lab 40 臺灣師範大學數位媒體中心視訊處理研究室
  • 41. s1, s2 : 0.5 ~ 2.5(# 5) u : sheet # 2 : ( / 2,3 / 2) u : sheet #1: ( / 2, / 2)superhyperbo s2 / s1 (sec s (v )sec s (u ),sec s (v )tans (u ), v : (  / 2, / 2) 1 2 1 2loid  x 2 / s2  y 2 / s2   z2 / s1  1 s   tan (v )) 1 u : sheet#1 or sheet#2 s2 / 2 ((d  coss1 (v ))coss2 (u ), ( x 2/s  2 y 2/s 2    d)2/s1 v : (  , ) Supertorus (d  coss1 (v ))sins2 (u ), u : (  , )  z 2 / s1  1 sins1 (v )) superhyperboloid Supertorus Video Processing Lab 41 臺灣師範大學數位媒體中心視訊處理研究室