learning objectives 3d object representations 3d object representations polyhedron polyhedron...

Post on 27-Mar-2015

312 Views

Category:

Documents

7 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Learning ObjectivesLearning Objectives 3D Object Representations3D Object Representations PolyhedronPolyhedron Quadrics, SuperQuadricsQuadrics, SuperQuadrics Spline, BezierSpline, Bezier BlobbyBlobby Constructive Solid GeometryConstructive Solid Geometry

3D Object 3D Object RepresentationsRepresentations

Graphics scenes melibatkan berbagai jenis Graphics scenes melibatkan berbagai jenis objek dan material surfacesobjek dan material surfaces Trees, flowers, clouds, rocks, water, bricks, wood paneling, Trees, flowers, clouds, rocks, water, bricks, wood paneling,

rubber, paper, marble, steel, glass, plastic, etc.rubber, paper, marble, steel, glass, plastic, etc.

Bagaimana merepresentasikan objek 3D Bagaimana merepresentasikan objek 3D pada openGL?pada openGL?

3D Object 3D Object RepresentationsRepresentations Untuk merepresentasikan objek 3D, ada Untuk merepresentasikan objek 3D, ada

beberapa teknikbeberapa teknik Menggunakan Menggunakan polygonpolygon dan dan quadric quadric untuk membuat untuk membuat

objek seperti polyhedrons ataupun ellipsoidsobjek seperti polyhedrons ataupun ellipsoids Untuk membuat permukaan berkurva seperti pada Untuk membuat permukaan berkurva seperti pada

sayap pesawat, gears, bodi mesin, etc, digunakan sayap pesawat, gears, bodi mesin, etc, digunakan Spline surfaces Spline surfaces

Constructive solid geometry Constructive solid geometry untuk menyusun untuk menyusun bentuk geometri dasar menjadi objek komplekbentuk geometri dasar menjadi objek komplek

Untuk memodelkan pegunungan, awan, tumbuhan, Untuk memodelkan pegunungan, awan, tumbuhan, atau air terjun digunakan procedural methods atau air terjun digunakan procedural methods seperti seperti fractalsfractals dan dan particle systemparticle system

Predefined ObjectsPredefined Objects

OpenGL sudah menyediakan fungsi OpenGL sudah menyediakan fungsi menggambar beberapa objek dasar yang menggambar beberapa objek dasar yang tinggal dipakai. Tak perlu membuat dari awal.tinggal dipakai. Tak perlu membuat dari awal.

Objek-objek dari OpenGL ini dapat disusun Objek-objek dari OpenGL ini dapat disusun untuk membuat bentuk yang kita inginkanuntuk membuat bentuk yang kita inginkan

Beberapa yang sudah disediakan OpenGL Beberapa yang sudah disediakan OpenGL antara lain:antara lain: PolyhedraPolyhedra Polyhedron functionsPolyhedron functions Quadric SurfacesQuadric Surfaces SuperquadricsSuperquadrics

5

Object with Object with SuperquadricsSuperquadrics

6

A. PolyhedronA. Polyhedron A polyhedron is a connected mesh of simple A polyhedron is a connected mesh of simple

planar polygons that encloses a finite amount planar polygons that encloses a finite amount of space. of space.

Polyhedron adalah rangkaian jala polygon Polyhedron adalah rangkaian jala polygon (polygon mesh) dengan kriteria sbb(polygon mesh) dengan kriteria sbb

Setiap edge dipakai oleh 2 facesSetiap edge dipakai oleh 2 faces

Sedikitnya 3 edge bertemu pada setiap Sedikitnya 3 edge bertemu pada setiap vertex.vertex.

Faces tidak saling menembus, tetapi Faces tidak saling menembus, tetapi berhenti pada suatu edge.berhenti pada suatu edge.

Euler’s formulaEuler’s formula : If : If FF, , EE, , VV represent the represent the number of faces, vertices and edges of a number of faces, vertices and edges of a polyhedron, then polyhedron, then

VV + + FF EE = 2. = 2.

7

3D Object 3D Object RepresentationRepresentation

The data for polygonal meshes can be The data for polygonal meshes can be represented in two ways.represented in two ways. Method 1:Method 1:

Vertex ListVertex List Normal ListNormal List Face List (Polygon List)Face List (Polygon List)

Method 2:Method 2: Vertex ListVertex List Edge ListEdge List Face List (Polygon List)Face List (Polygon List)

Surface NormalSurface Normal

n

9

01

2 3

45

6 7

Vertices and Faces - E.g. CubeVertices and Faces - E.g. Cube

0

1

23

4

5

Face Index

Vertex Index

01

2 3

5

6 7

10

Data representation using vertex, face and normal lists:xyz axis

Vertex List Normal List Polygon List

30 30 30 0.0 0.0 1.0 0 1 2 3-30 30 30 0.0 0.0 -1.0 4 7 6 5-30 -30 30 0.0 1.0 0.0 0 4 5 1 30 -30 30 -1.0 0.0 0.0 1 5 6 2 30 30 -30 0.0 -1.0 0.0 2 6 7 3-30 30 -30 1.0 0.0 0.0 3 7 4 0-30 -30 -30 30 -30 -30

11

Vertex List Edge List Polygon Listx[i] y[i] z[i] L[j] M[j] P[k] Q[k] R[k] S[k]

30 30 30 0 1 0 1 2 3-30 30 30 1 2 4 7 6 5-30 -30 30 2 3 0 4 5 1 30 -30 30 3 0 1 5 6 2 30 30 -30 4 5 2 6 7 3-30 30 -30 5 6 3 7 4 0-30 -30 -30 6 7 30 -30 -30 7 4

0 41 52 63 7

Data representation using vertex, face and edge lists:

12

Normal Vectors Normal Vectors (OpenGL)(OpenGL)

Assigning a normal vector to a polygon:

glBegin(GL_POLYGON); glNormal3f(xn,yn,zn);

glVertex3f(x1,y1,z1);glVertex3f(x2,y2,z2);glVertex3f(x3,y3,z3);glVertex3f(x4,y4,z4);

glEnd();

Enabling automatic conversion of normal vectors to unit vectors:

glEnable(GL_NORMALIZE);

13

Regular Polyhedra Regular Polyhedra ((Platonic Solids)Platonic Solids)

Jika semua face pada polyhedron adalah identik Jika semua face pada polyhedron adalah identik dan berupa regular polygon, maka polyhedron dan berupa regular polygon, maka polyhedron tsb disebut tsb disebut platonic solidplatonic solid. .

Hanya ada 5 jenis platonic solidHanya ada 5 jenis platonic solid

The Platonic SolidsThe Platonic Solids Regular tetrahedron (or triangular Regular tetrahedron (or triangular

pyramid) has 4 facespyramid) has 4 faces Regular hexahedron (or cube) with 6 Regular hexahedron (or cube) with 6

facesfaces Regular octahedron with 8 facesRegular octahedron with 8 faces Regular dodecahedron with 12 facesRegular dodecahedron with 12 faces Regular icosahedron with 20 facesRegular icosahedron with 20 faces

Menggambar polyhedronMenggambar polyhedron

Ada 2 caraAda 2 cara Method1 : Fitting the surface with a Method1 : Fitting the surface with a

polygon mesh. polygon mesh. Membungkus Membungkus permukaan objek polyhedron dengan permukaan objek polyhedron dengan susunan jala polygonsusunan jala polygon. . Proses ini disebut Proses ini disebut juga dengan juga dengan surface tesselationsurface tesselation

Method 2 : Memakai fungsi yang Method 2 : Memakai fungsi yang disediakan library GLUTdisediakan library GLUT

Method-1 Polygon Method-1 Polygon MeshMesh

In fitting polygons to a surface, we In fitting polygons to a surface, we are not limited to using are not limited to using GL_POLYGONGL_POLYGON

We can also useWe can also use GL_TRIANGLESGL_TRIANGLES GL_TRIANGLE_STRIPGL_TRIANGLE_STRIP GL_TRIANGLE_FANGL_TRIANGLE_FAN GL_QUADSGL_QUADS GL_QUAD_STRIPGL_QUAD_STRIP

17

Polygon MeshPolygon Mesh Polygon meshPolygon mesh ini juga bisa dipakai ini juga bisa dipakai

untuk memodelkan permukaan untuk memodelkan permukaan objek lainnyaobjek lainnya

Method 2- OpenGL Method 2- OpenGL Polyhedron FunctionsPolyhedron Functions

5 functions produce 5 functions produce wire frameswire frames which can which can be be easily useeasily usedd

Ex: glutWireX(), where X is one of the names Ex: glutWireX(), where X is one of the names Cube, Tetrahedron, Octahedron, Cube, Tetrahedron, Octahedron, Dodecahedron, or Icosahedron (with the first Dodecahedron, or Icosahedron (with the first letter capitalized).letter capitalized).

5 functions produce polyhedra facets as 5 functions produce polyhedra facets as shaded fill areasshaded fill areas - the characteristics of these - the characteristics of these are determined by material and lighting are determined by material and lighting properties.properties.

Ex: glutSolidX(), where X is as above.Ex: glutSolidX(), where X is as above.

GLUT Library of Polyhedron GLUT Library of Polyhedron FunctionsFunctions

Example: prog8OGLGLUTPolyhedra.cppExample: prog8OGLGLUTPolyhedra.cpp

glutWireTetrahedron() glutWireTetrahedron() and glutWireCube(1.0) and glutWireCube(1.0)

4 faces 6 faces

glutWireOctahedron() andglutWireOctahedron() andglutWireDodecahedron()glutWireDodecahedron()

8 faces 12 faces

And, And, glutWireIcosahedron()glutWireIcosahedron()

20 faces

B.Quadrics

• Sphere

• Ellipsoid

• Torus

• General form

23

x 2 y 2 z2 r2

x

rx

2

y

ry

2

z

rz

2

1

r x

rx

2

y

ry

2

2

z

rz

2

1

ax 2 by 2 c z2 2 f yz 2gxz 2hxy 2px 2qy 2rz d 0

Objek yang didefinisikan sebagai persamaan quadraticsObjek yang didefinisikan sebagai persamaan quadratics

Quadric surfaces

• Double cones

• Ellipsoids

• Hyperboloids of one sheet

• Hyperboloids of two sheets

Quadric surfaces

• Elliptic paraboloids

• Hyperbolic paraboloids

Superquadrics• the squaring operations are replaced by

arbitrary powers.

• Superellipses1

/2/2

SS

b

y

a

x

Superquadrics

• Superellipsoids

11

1221 /2//2/2

SSSSS

c

x

b

y

a

x

GLUT Quadric Functions – GLUT Quadric Functions – for Solids, Substitute for Solids, Substitute

Solid for WireSolid for Wire glutWireSphere(radius, slices, glutWireSphere(radius, slices,

stacks);stacks); glutWireCone(base, height, slices, glutWireCone(base, height, slices,

stacks);stacks); glutWireTorus(innerRadius, glutWireTorus(innerRadius,

outerRadius, nsides, rings);outerRadius, nsides, rings);

and the following is provided also!and the following is provided also!

glutWireTeapot(size);glutWireTeapot(size);

GLUT Quadric FunctionsGLUT Quadric Functions

QuadricSurfs.cpp

GLU Quadric-Surface GLU Quadric-Surface FunctionsFunctions

void void gluSpheregluSphere (GLUquadricObj *qobj, (GLUquadricObj *qobj, GLdouble radius,GLint slices, GLint GLdouble radius,GLint slices, GLint stacks);stacks);

void void gluCylindergluCylinder (GLUquadricObj *qobj, (GLUquadricObj *qobj, GLdouble baseRadius,GLdouble GLdouble baseRadius,GLdouble topRadius, GLdouble height,GLint slices, topRadius, GLdouble height,GLint slices, GLint stacks);GLint stacks);

void void gluDiskgluDisk (GLUquadricObj *qobj, (GLUquadricObj *qobj, GLdouble innerRadius,GLdouble GLdouble innerRadius,GLdouble outerRadius, GLint slices, GLint rings);outerRadius, GLint slices, GLint rings);

GLU Quadric-Surface GLU Quadric-Surface FunctionsFunctions

void void gluPartialDiskgluPartialDisk (GLUquadricObj *qobj, GLdouble (GLUquadricObj *qobj, GLdouble innerRadius,GLdouble outerRadius, innerRadius,GLdouble outerRadius, GLint slices, GLint rings,GLdouble GLint slices, GLint rings,GLdouble startAngle, GLdouble sweepAngle);startAngle, GLdouble sweepAngle);

GLU Quadric-Surface GLU Quadric-Surface FunctionsFunctions

Quadric.c

WHY IS THE TEAPOT WHY IS THE TEAPOT POPULAR?POPULAR?

Pada zaman dahulu belum ada library packages untuk Pada zaman dahulu belum ada library packages untuk 3D modelling. Pemodelan objek 3D dilakukan dengan 3D modelling. Pemodelan objek 3D dilakukan dengan tangan, menggambar kurva dan titik2nya dicatat tangan, menggambar kurva dan titik2nya dicatat secara manual.secara manual.

Computer graphics researcher Computer graphics researcher Martin Newell, ketika , ketika hendak mencari barang untuk dibuat model hendak mencari barang untuk dibuat model matematika tak sengaja menemukan teapotmatematika tak sengaja menemukan teapot

Teapot adalah model yang ideal untuk eksperimen 3D Teapot adalah model yang ideal untuk eksperimen 3D modelling, karenamodelling, karena Mudah dikenalMudah dikenal Topologi yang komplekTopologi yang komplek Mempunyai proyeksi bayangan pada dirinya sendiriMempunyai proyeksi bayangan pada dirinya sendiri Melibatkan topik hidden surfaceMelibatkan topik hidden surface Memiliki permukaan cekung dan cembung, juga Memiliki permukaan cekung dan cembung, juga

saddle points (curved up and down)saddle points (curved up and down) Doesn't take much storage space Doesn't take much storage space

The Utah TeapotThe Utah Teapot The real teapot---The real teapot---

The teapot was donated to the Boston Computer The teapot was donated to the Boston Computer Museum but now resides in the Ephemera collection Museum but now resides in the Ephemera collection of the of the Computer History Museum where it's where it's catalogued as "Teapot used for Computer Graphics catalogued as "Teapot used for Computer Graphics rendering" catalogue number X00398.1984. rendering" catalogue number X00398.1984.

Many Versions of Many Versions of TeapotsTeapots

From Steve Baker’s History of the Teapot site: http://www.sjbaker.org/teapot/index.html

%^$@ Teapot!%^$@ Teapot!

From Steve Baker’s History of the Teapot site: http://www.sjbaker.org/teapot/index.html.

wireframewireframe

Lighting & shadingLighting & shading

Texture mappedTexture mapped

Multiple Teapots of Various Multiple Teapots of Various MaterialsMaterialsteapots.c

C. Spline RepresentationsC. Spline Representations Splines are used to design curves and Splines are used to design curves and

surfaces based on a set of user-defined surfaces based on a set of user-defined pointspoints

Control pointsControl points Himpunan titik koordinat yang mengontrol Himpunan titik koordinat yang mengontrol

bentuk kurvabentuk kurva InterpolationInterpolation

Semua control points tersambung satu sama lain Semua control points tersambung satu sama lain pada garis kurvapada garis kurva

ApproximateApproximate Semua atau beberapa control points terletak di Semua atau beberapa control points terletak di

luar garis kurvaluar garis kurva

Spline RepresentationsSpline Representations

Interpolated

Approximate

Bezier Spline CurvesBezier Spline Curves

Developed by French engineer Developed by French engineer Pierre Bézier for use in the design of Pierre Bézier for use in the design of Renault automobile bodiesRenault automobile bodies

Easy to implementEasy to implement Widely used in CAD systems, graphics, Widely used in CAD systems, graphics,

drawing and painting packagesdrawing and painting packages

Bezier Curve EquationsBezier Curve Equations Diketahui sejumlah n +1 control points,Diketahui sejumlah n +1 control points,

nilai k antara 0 sampai nnilai k antara 0 sampai n Persamaan garis Bezier akan membentuk Persamaan garis Bezier akan membentuk

titik-titik garis kurva sesuai control point titik-titik garis kurva sesuai control point yang didefinisikanyang didefinisikan

),,( kkkk zyxp

Bezier Curve EquationsBezier Curve Equations Degree 1 – Linear CurveDegree 1 – Linear Curve

Degree 2Degree 2

Degree 3Degree 3

Degree nDegree n

Bezier Spline CurvesBezier Spline Curves

A common use for Bezier curves is in A common use for Bezier curves is in font definitionfont definition

Bezier Spline CurvesBezier Spline Curves

If we specify the first and the last If we specify the first and the last control point as the same point, we control point as the same point, we can generate a closed Bezier curvecan generate a closed Bezier curve

Bezier SurfacesBezier Surfaces

Two sets of Bezier curves can be Two sets of Bezier curves can be used to design an object surfaceused to design an object surface

with pwith pj,kj,k specifying the location of specifying the location of (m+1) by (n+1) control points(m+1) by (n+1) control points

)()(),( ,,0 0

, uBEZvBEZpvuP nkmj

m

j

n

kkj

Bezier SurfacesBezier Surfaces

u and v parametersu and v parameters

Bezier SurfacesBezier Surfaces

An example Bezier surfaceAn example Bezier surface

OpenGL Approximation OpenGL Approximation Spline FunctionsSpline Functions

Bezier splines and B-splines can be Bezier splines and B-splines can be displayed using OpenGL functionsdisplayed using OpenGL functions

The core library contains Bezier The core library contains Bezier functions, and GLU has B-spline functions, and GLU has B-spline functionsfunctions

Bezier functions are often hardware Bezier functions are often hardware implementedimplemented

OpenGL Bezier-Spline OpenGL Bezier-Spline Curve FunctionsCurve Functions

We specify parameters and activate We specify parameters and activate the routines for Bezier-curve display the routines for Bezier-curve display withwith

glMap1*(GL_MAP1_VERTEX_3, uMin, uMax, glMap1*(GL_MAP1_VERTEX_3, uMin, uMax, stride, nPts, *ctrlPts);stride, nPts, *ctrlPts);

glEnable(GL_MAP1_VERTEX_3);glEnable(GL_MAP1_VERTEX_3); and deactivate withand deactivate with

glDisable(GL_MAP1_VERTEX_3);glDisable(GL_MAP1_VERTEX_3); uMin and uMax are typically 0 and 1.0uMin and uMax are typically 0 and 1.0 stride=3 for 3Dstride=3 for 3D nPts is the number of control pointsnPts is the number of control points ctrlPts is the array of control pointsctrlPts is the array of control points

OpenGL Bezier-Spline OpenGL Bezier-Spline Curve FunctionsCurve Functions

After setting parameters, we need to After setting parameters, we need to evaluate positions along the spline evaluate positions along the spline path and display the resulting curve. path and display the resulting curve. To calculate coordinate positions we To calculate coordinate positions we useuse

glEvalCoord1*(uValue);glEvalCoord1*(uValue);

where uValue is assigned some where uValue is assigned some value in the interval from uMin to value in the interval from uMin to uMaxuMax

Example OpenGL CodeExample OpenGL Code GLfloat ctrlPts [4][3] = { {-40.0, 40.0, 0.0}, {-10.0, 200.0, 0.0},GLfloat ctrlPts [4][3] = { {-40.0, 40.0, 0.0}, {-10.0, 200.0, 0.0}, {10.0, -200.0, 0.0}, {40.0, 40.0, 0.0} };{10.0, -200.0, 0.0}, {40.0, 40.0, 0.0} };

glMap1f (GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4, *ctrlPts);glMap1f (GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4, *ctrlPts); glEnable (GL_MAP1_VERTEX_3);glEnable (GL_MAP1_VERTEX_3);

GLint k;GLint k;

glColor3f (0.0, 0.0, 1.0); // Set line color to blue.glColor3f (0.0, 0.0, 1.0); // Set line color to blue. glBegin (GL_LINE_STRIP); // Generate Bezier "curve".glBegin (GL_LINE_STRIP); // Generate Bezier "curve". for (k = 0; k <= 50; k++)for (k = 0; k <= 50; k++) glEvalCoord1f (GLfloat (k) / 50.0);glEvalCoord1f (GLfloat (k) / 50.0); glEnd ( );glEnd ( );

glColor3f (1.0, 0.0, 0.0); // Set point color to red.glColor3f (1.0, 0.0, 0.0); // Set point color to red. glPointSize (5.0); // Set point size to 5.0.glPointSize (5.0); // Set point size to 5.0. glBegin (GL_POINTS); // Plot control points.glBegin (GL_POINTS); // Plot control points. for (k = 0; k < 4; k++)for (k = 0; k < 4; k++) glVertex3fv (&ctrlPts [k][0]);glVertex3fv (&ctrlPts [k][0]); glEnd ( );glEnd ( );

prog8OGLBezierCurve.cpp

Example OpenGL CodeExample OpenGL Code

prog8OGLBezierCurve.cpp

OpenGL Bezier-Spline OpenGL Bezier-Spline SurfaceSurface Functions Functions

We specify parameters and activate the We specify parameters and activate the routines for Bezierroutines for Bezier surface surface display with display with

glMapglMap22*(GL_MAP*(GL_MAP22_VERTEX_3, uMin, uMax, _VERTEX_3, uMin, uMax, uSuStride, tride, nnuuPts, Pts, vMin, vMax, vStride, nvPts, vMin, vMax, vStride, nvPts, *ctrlPts);*ctrlPts);

glEnable(GL_MAPglEnable(GL_MAP22_VERTEX_3);_VERTEX_3);

and deactivate withand deactivate with glDisable(GL_MAPglDisable(GL_MAP22_VERTEX_3);_VERTEX_3);

uMinuMin,, uMax uMax, v, vMinMin and and vvMaxMax are typically 0 and are typically 0 and 1.01.0

stride=3 for 3Dstride=3 for 3D nnuuPts Pts and nvPts areand nvPts are the the size of the arraysize of the array ctrlPts is the ctrlPts is the double subscripted double subscripted array of control array of control

pointspoints

Example OpenGL CodeExample OpenGL CodeGLfloat ctrlpoints[4][4][3] = {GLfloat ctrlpoints[4][4][3] = { {{-1.5, -1.5, 4.0}, {-0.5, -1.5, 2.0}, {{-1.5, -1.5, 4.0}, {-0.5, -1.5, 2.0}, {0.5, -1.5, -1.0}, {1.5, -1.5, 2.0}}, {0.5, -1.5, -1.0}, {1.5, -1.5, 2.0}},

{{-1.5, -0.5, 1.0}, {-0.5, -0.5, 3.0}, {{-1.5, -0.5, 1.0}, {-0.5, -0.5, 3.0}, {0.5, -0.5, 0.0}, {1.5, -0.5, -1.0}}, {0.5, -0.5, 0.0}, {1.5, -0.5, -1.0}},

{{-1.5, 0.5, 4.0}, {-0.5, 0.5, 0.0}, {{-1.5, 0.5, 4.0}, {-0.5, 0.5, 0.0}, {0.5, 0.5, 3.0}, {1.5, 0.5, 4.0}}, {0.5, 0.5, 3.0}, {1.5, 0.5, 4.0}},

{{-1.5, 1.5, -2.0}, {-0.5, 1.5, -2.0}, {{-1.5, 1.5, -2.0}, {-0.5, 1.5, -2.0}, {0.5, 1.5, 0.0}, {1.5, 1.5, -1.0}}{0.5, 1.5, 0.0}, {1.5, 1.5, -1.0}}};};

glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, &ctrlpoints[0][0][0]);glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, &ctrlpoints[0][0][0]); glEnable(GL_MAP2_VERTEX_3);glEnable(GL_MAP2_VERTEX_3); for (j = 0; j <= 8; j++) {for (j = 0; j <= 8; j++) { glBegin(GL_LINE_STRIP);glBegin(GL_LINE_STRIP); for (i = 0; i <= 30; i++)for (i = 0; i <= 30; i++) glEvalCoord2f((GLfloat)i/30.0, (GLfloat)j/8.0);glEvalCoord2f((GLfloat)i/30.0, (GLfloat)j/8.0); glEnd();glEnd(); glBegin(GL_LINE_STRIP);glBegin(GL_LINE_STRIP); for (i = 0; i <= 30; i++)for (i = 0; i <= 30; i++) glEvalCoord2f((GLfloat)j/8.0, (GLfloat)i/30.0);glEvalCoord2f((GLfloat)j/8.0, (GLfloat)i/30.0); glEnd();glEnd(); }}

bezsurf.c

Example OpenGL CodeExample OpenGL Code

bezsurf.c

59

Bézier Surfaces: Bézier Surfaces: ExampleExample

Utah Teapot Utah Teapot modeled by 32 modeled by 32 Bézier PatchesBézier Patches

60

D. Blobby ObjectsD. Blobby Objects

Memodelkan Memodelkan objek yang dapat objek yang dapat berubah bentuk berubah bentuk tapi volumenya tapi volumenya tetaptetap

ContohContoh Water dropsWater drops Molecules Molecules Force fieldsForce fields

Blobby ObjectsBlobby Objects A collection of density functionsA collection of density functions

Equi-density surfacesEqui-density surfaces

62

Metaballs (Blinn Metaballs (Blinn Blobbies)Blobbies)

E.Constructive Solid E.Constructive Solid GeometryGeometry

Primitives Transformed Combined

Bermula dari objek geometri primitive, ditransformasikan dan dikombinasikan membentuk objek yang kompleks

top related