ceng 477 introduction to computer...
TRANSCRIPT
![Page 1: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/1.jpg)
CENG 477Introduction to Computer Graphics
Texture Mapping
![Page 2: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/2.jpg)
Until Now• We assumed that objects have fixed R, G, B reflectance values• Surface orientation and light direction determined the shading
of objects• Our best image so far is something like:
CENG 477 – Computer Graphics 2
![Page 3: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/3.jpg)
Texture Mapping• Goal: Increase visual realism by using images to simulate
reflectance characteristics of objects.• A cheap and effective way to spatially vary surface reflectance.
From
http
://im
g.tfd
.com
CENG 477 – Computer Graphics 3
![Page 4: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/4.jpg)
Texture Mapping• Image (texture) sizes and object sizes may vary• We need a uniform way so that any object can be mapped by
any texture
CENG 477 – Computer Graphics 4
![Page 5: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/5.jpg)
Texture Mapping• Step 1: Associate a (u, v) coordinate system with the texture
image where (u, v) � [0,1]x[0,1]
u
v
CENG 477 – Computer Graphics 5
![Page 6: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/6.jpg)
Texture Mapping• Step 2: Parameterize the surface to be texture mapped using
two coordinates. For instance, a sphere:
x = rsinΘcosϕy = rcosΘz = rsinΘsinϕ
Θ = arccos(y / r)
ϕ = arctan(z / x)
(Θ, ϕ) � [0, π]x[-π, π]
Assuming that the center is at (0, 0, 0):
CENG 477 – Computer Graphics 6
In practice, ϕ = atan2(z, x)0π
-π 0
![Page 7: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/7.jpg)
Texture Mapping• Assume you want to wrap the image such that:
CENG 477 – Computer Graphics 7
u = (-ϕ + π) / (2π)v = Θ / π
![Page 8: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/8.jpg)
Texture Mapping• Step 3: Compute a (u, v) value for every surface point. For
instance, a sphere:
• Step 4: Find the texture image coordinate (i, j) at the given (u, v) coordinate:
i = u.nx
j = v.ny
nx = texture image widthny = texture image height
Note that i, j can be fractional!
CENG 477 – Computer Graphics 8
u = (-ϕ + π) / (2π)v = Θ / π
![Page 9: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/9.jpg)
Texture Mapping• Step 5: Choose the texel color using a suitable interpolation
strategy– Nearest Neighbor: fetch texel at nearest coordinate (faster)
Color(x, y, z) = fetch(round(i, j))
– Bilinear Interpolation: Average four closest neighbors (smoother):
(i,j)
dxdy
p = floor(i)q = floor(j)dx = i – pdy = j - qColor(x, y, z) = fetch(p, q).(1 – dx).(1 – dy) +
fetch(p+1, q).(dx).(1 – dy) +fetch(p, q+1).(1 – dx).(dy) +fetch(p+1, q+1).(dx).(dy)
CENG 477 – Computer Graphics 9
(p,q)
![Page 10: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/10.jpg)
NN vs Bilinear Interpolation
CENG 477 – Computer Graphics 10
Nea
rest
-nei
ghbo
r
![Page 11: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/11.jpg)
NN vs Bilinear Interpolation
CENG 477 – Computer Graphics 11
Bili
near
![Page 12: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/12.jpg)
NN vs Bilinear Interpolation
CENG 477 – Computer Graphics 12
Nearest-neighbor Bilinear
![Page 13: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/13.jpg)
Texture Color• Once we have the texture color, what to do with it?• Several options possible: replace shading color, blend with
shading color, replace kd component, etc.
CENG 477 – Computer Graphics 13
![Page 14: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/14.jpg)
Texture Color• For instance, to replace the kd component:
CENG 477 – Computer Graphics 14
n
x
wi
woΘ
!"#(%,'") = *#+,-.′!0 %,'0
Outgoingradiance
Incomingradiance
+,-.′ = max(0, '0.7)
kd = textureColor / 255
where
![Page 15: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/15.jpg)
Texture Color• Replacing kd typically improves realism over replacing the
entire diffuse color:
CENG 477 – Computer Graphics 15
Diffuse color replaced kd component replaced
![Page 16: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/16.jpg)
Animation
CENG 477 – Computer Graphics 16
• Animation, shading, and texture mapping enhances realism:
![Page 17: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/17.jpg)
Texture Mapping Triangles• First, we must associate (u, v) coordinates for each vertex• The (u, v) coordinates inside the triangle can be found using
the barycentric coordinates• Recall that the position of point p at barycentric coordinates (β, γ) is equal to:
p(β, γ) = a + β(b – a) + γ(c – a)
• Texture coordinates can be interpolated similarly:
u(β, γ) = ua + β(ub – ua) + γ(uc – ua)v(β, γ) = va + β(vb – va) + γ(vc – va)
CENG 477 – Computer Graphics 17
![Page 18: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/18.jpg)
Texture Mapping Triangles
CENG 477 – Computer Graphics 18
• Assume we want the texture map a rectangle made of two triangles:– v3, v1, v2
– v1, v3, v0
v0
v1v2
v3
(0, 0)
(0, 1) (1, 1)
(1, 0)Texture image
![Page 19: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/19.jpg)
Texture Mapping Triangles
CENG 477 – Computer Graphics 19
• We associate a texture coordinate with each vertex of each triangle:– v3, v1, v2: (1, 0), (0, 1), (1, 1)– v1, v3, v0: (0, 1), (1, 0), (0, 0)
v0
v1v2
v3
(0, 0)
(0, 1) (1, 1)
(1, 0)Texture image
![Page 20: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/20.jpg)
Texture Mapping Triangles
CENG 477 – Computer Graphics 20
• This way, the texture image gets stretched to match the triangles’ positions– v3, v1, v2: (1, 0), (0, 1), (1, 1)– v1, v3, v0: (0, 1), (1, 0), (0, 0)
v0
v1v2
v3
![Page 21: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/21.jpg)
Combined Result
CENG 477 – Computer Graphics 21
![Page 22: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/22.jpg)
Tiling• For large surfaces, stretching may excessively distort the
texture image making it unrealistic
CENG 477 – Computer Graphics 22
![Page 23: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/23.jpg)
Tiling• Tiling is the process of repeating a texture instead of stretching• Multiple copies of the texture fill the surface• Tiling may also look unrealistic if repetition is clear
CENG 477 – Computer Graphics 23
1 2 3 4 5 6
7 8 9 10 11 12
![Page 24: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/24.jpg)
Tiling• To support tiling, tex. coords. are not limited to [0, 1] range
CENG 477 – Computer Graphics 24
(0, 0) (6, 0)
(6, 2)(0, 2)
u = ubarycentric – floor(ubarycentric)v = vbarycentric – floor(vbarycentric)
![Page 25: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/25.jpg)
Procedural Textures• The previous approach requires us to use an image as the
texture to be mapped• We can also achieve spatial variation without using any texture
image at all• Solution:
– Generate textures procedurally for each surface point
• Problem:– How to make them look natural?
CENG 477 – Computer Graphics 25
![Page 26: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/26.jpg)
Procedural Textures• Periodic patterns are easy to generate but they do not look
natural (e.g. evaluate a sine function at every point):
CENG 477 – Computer Graphics 26
![Page 27: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/27.jpg)
Procedural Textures• We need a function that returns a random value for each (x, y,
z) point in space• However, too random is not good as it will appear as noise:
CENG 477 – Computer Graphics 27
![Page 28: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/28.jpg)
Procedural Textures• There are various techniques such as Perlin noise that allow
on-the-fly computation of controlled random patterns
CENG 477 – Computer Graphics 28
![Page 29: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/29.jpg)
Procedural Textures• Image and procedural textures can be used together:
CENG 477 – Computer Graphics 29
![Page 30: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/30.jpg)
CENG 477Introduction to Computer Graphics
Data Structures for Graphics
![Page 31: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/31.jpg)
Until Now
• We rendered virtual objects– Ray tracing– Ray are easy: r(t) = o + dt– Mathematical objects also easy: x2 + y2 + z2 = R2
– How about arbitrary objects embedded in 2D/3D scenes?
• Today we will learn about– explicitly representing those objects
• triangle meshes
– organizing them for efficency• spatial structures
CENG 477 – Computer Graphics 2
![Page 32: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/32.jpg)
Triangle Meshes• The most popular way of representing geometry embedded in
2D or 3D• A triangle mesh is a piecewise linear surface representation
CENG 477 – Computer Graphics 3
2D mesh 3D mesh
![Page 33: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/33.jpg)
Triangle Meshes• Smoothness may be achieved by using a larger number of
smaller pieces
CENG 477 – Computer Graphics 4
![Page 34: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/34.jpg)
Manifolds• Our meshes will be manifolds:
– Each edge is shared by at most two faces
– And faces containing a vertex form a closed or open fan:
CENG 477 – Computer Graphics 5
Closed fan
Open fan
https://www.cs.mtu.edu/~shene
![Page 35: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/35.jpg)
Non-manifolds• The following meshes are non-manifolds:
CENG 477 – Computer Graphics 6
https://www.cs.mtu.edu/~shene
![Page 36: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/36.jpg)
Triangle Meshes• A triangle mesh is an undirected graph with triangle faces
– It has vertices, edges, and faces– The degree or valance of a vertex is the # of incident edges– A mesh is called k-regular if the degree of all vertices are k
CENG 477 – Computer Graphics 7
G = <V, E, F>V = {A, B, C, …, K}E = {(A, B), (A, E), …}F = {(A, E, B), (B, E, F), …}
deg(A) = 4deg(E) = 5
![Page 37: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/37.jpg)
Graph Planarity• A graph is planar if it can be drawn in the plane such that no
two edges cross each other (except at the vertices):
• Planarize:
CENG 477 – Computer Graphics 8
http://www.personal.kent.edu/~rmuhamma
![Page 38: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/38.jpg)
Mesh Statistics• Almost every mesh is a planar graph• For such graphs Euler formula holds:
CENG 477 – Computer Graphics 9
#V – #E + #F = 2
![Page 39: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/39.jpg)
Mesh Statistics
• Based on Euler’s formula:
CENG 477 – Computer Graphics 10
#F ~ 2V#E ~ 3VAVD ~ 6
Average vertex degree
![Page 40: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/40.jpg)
Mesh Structures
• How to store geometry & connectivity of a mesh
3D vertex coordinates Vertex adjacency
• Attributes are also stored: normals, colors, texture coordinates, labels, …
• Efficient algorithms on meshes to get:– All vertices/edges of a face– All incident vertices/edges/faces of a vertex
CENG 477 – Computer Graphics 11
![Page 41: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/41.jpg)
Face-based Structures
• Face-Set Data Structure (.stl format)– Aka polygon soup as there is no connectivity information
– Vertices and associated data replicated L– Using 32-bit single precision numbers to represent vertex coords, we need
32/8 (bytes) * 3 (x-y-z coords) * 3 (# vertices) = 36 bytes per face– By Euler formula (F ~ 2V), each vertex consumes 72 bytes on average
CENG 477 – Computer Graphics 12
![Page 42: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/42.jpg)
Face-based Structures• Indexed Face-Set Data Structure (.obj, .off, .ply, our XML format)
– Aka shared-vertex data structure
– No vertex replication J– We need 4 (bytes) * 3 (# indices) = 12 bytes per face (24 bytes per vertex)– We also need 4 (bytes) * 3 (x-y-z coords) = 12 bytes per vertex– Total = 36 bytes per vertex, half of Face-Set structure J
CENG 477 – Computer Graphics 13
![Page 43: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/43.jpg)
Face-based Structures
• Regardless of the structure, triangle vertices must be stored in a consistent order– Mostly counterclockwise (CCW)
CENG 477 – Computer Graphics 14
![Page 44: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/44.jpg)
Data Structures for Graphics
• With large number of triangles, rendering tasks tend to take too long if data is not properly organized
• Many data structures exist– Quadtree– Octree– BSP tree– k-D tree– BVH
CENG 477 – Computer Graphics 15
![Page 45: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/45.jpg)
Quadtree and Octree• Quadtrees are used in 2D and octrees in 3D
CENG 477 – Computer Graphics 16
Quadtree Octree
![Page 46: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/46.jpg)
Binary Space Partitioning (BSP)• Divide the space with freely oriented lines (2D) and planes (3D)
Quadtree BSP tree
CENG 477 – Computer Graphics 17
![Page 47: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/47.jpg)
Binary Space Partitioning (BSP)• BSP trees are view-independent (no need to reconstruct if the
viewer moves)• BSP trees can be used to draw a scene in back-to-front order with
respect to the viewer
CENG 477 – Computer Graphics 18
Corresponding BSP tree
![Page 48: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/48.jpg)
Binary Space Partitioning (BSP)
• Assume camera is at point C• Always traverse the half-space first that does not contain C• This guarantees back-to-front traversal w.r.t. the camera
CENG 477 – Computer Graphics 19
Corresponding BSP treeC
1
2
3
45
![Page 49: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/49.jpg)
Binary Space Partitioning (BSP)
• BSP trees do not need to be recreated if the camera moves– Their traversal depends on the camera position
• How to create a BSP tree?• Step 1: Select a polygon and create a plane aligned with it
– Put that polygon to your root
• Step 2: Separate the other polygons into two sets– One above the plane and other below the plane– If the plane intersects some polygons, split them and place them to their
corresponding sets
• Step 3: Recursively apply Step 1 and 2 until you reach a desired stopping condition
CENG 477 – Computer Graphics 20
![Page 50: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/50.jpg)
Binary Space Partitioning (BSP)
CENG 477 – Computer Graphics 21
Sample Input Step 1
Step 2 Step 3
See: https://en.wikipedia.org/wiki/Binary_space_partitioning
![Page 51: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/51.jpg)
Binary Space Partitioning (BSP)
CENG 477 – Computer Graphics 22
Step 4 Step 5
Step 6 Step 7
See: https://en.wikipedia.org/wiki/Binary_space_partitioning
![Page 52: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/52.jpg)
Binary Space Partitioning (BSP)
CENG 477 – Computer Graphics 23
Step 9
See: https://en.wikipedia.org/wiki/Binary_space_partitioning
![Page 53: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/53.jpg)
k-D Tree
• In a k-D tree, a scene is recursively divided into 2 convex sets by axis-aligned hyperplanes: a special case of BSP tree
CENG 477 – Computer Graphics 24
wikipedia.com
![Page 54: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/54.jpg)
k-D Tree
• k-D tree is a binary tree
• Each node is a k-dimensional point
• Splitting planes are alternatingly chosen between dimensions:
– First x, then y, then z, back to x and so on (axis = (axis + 1) % 3)
• It will be a balanced tree if the median element is chosen at each
split
– Log2(n) depth in that case
CENG 477 – Computer Graphics 25
![Page 55: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/55.jpg)
k-D Tree• Basic algorithm:
CENG 477 – Computer Graphics 26
wikipedia.com
![Page 56: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/56.jpg)
k-D Tree• A 2-D example (k = 2):
CENG 477 – Computer Graphics 27
![Page 57: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/57.jpg)
Bounding Volume Hierarchy (BVH)
• While k-D trees partition space into disjoint regions, a BVH partitions objects into disjoint polygons– k-D tree: space subdivision– BVH: object subdivision
• Objects are contained within bounding boxes (aka bounding volumes)
CENG 477 – Computer Graphics 28
![Page 58: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/58.jpg)
Bounding Volume Hierarchy (BVH)• Rays missing the bounding boxes are not intersected with the
actual objects
CENG 477 – Computer Graphics 29
Bounding box
ray
![Page 59: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/59.jpg)
Bounding Volume Hierarchy (BVH)
• Bounding boxes can be made hierarchical• Overlap between bounding boxes are possible (whereas in a
k-D tree overlap between regions is not possible)
CENG 477 – Computer Graphics 30
ray
![Page 60: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/60.jpg)
Bounding Volume Hierarchy (BVH)• Bounding boxes can be made hierarchical• Overlap between bounding boxes are possible
CENG 477 – Computer Graphics 31
ray
![Page 61: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/61.jpg)
Bounding Volume Hierarchy (BVH)• BBs may go all the way down to individual primitives
(triangles)
CENG 477 – Computer Graphics 32
ray
![Page 62: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/62.jpg)
Bounding Volume Hierarchy (BVH)• This is represented as a binary tree where only the leaf BBs
contain the actual objects
CENG 477 – Computer Graphics 33
![Page 63: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/63.jpg)
Bounding Volume Hierarchy (BVH)
CENG 477 – Computer Graphics 34
A ray missing this boxcannot intersect anyobjects it bounds
![Page 64: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/64.jpg)
Bounding Volume Hierarchy (BVH)
CENG 477 – Computer Graphics 35
A ray missing this boxcannot intersect anyobjects it bounds
![Page 65: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/65.jpg)
Bounding Volume Hierarchy (BVH)• Note that a ray may intersect with multiple bounding boxes
CENG 477 – Computer Graphics 36
ray
![Page 66: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/66.jpg)
Bounding Volume Hierarchy (BVH)• Intersecting boxes are shown in bold• Note that this ray does not intersect with any real object
CENG 477 – Computer Graphics 37
![Page 67: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/67.jpg)
Bounding Volume Hierarchy (BVH)• Basic traversal algorithm:
CENG 477 – Computer Graphics 38
![Page 68: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/68.jpg)
Bounding Volume Hierarchy (BVH)
• BVH affords significant speed-up in ray tracing:– This scene contains 31584 objects (all triangles except 2 spheres)
CENG 477 – Computer Graphics 39
![Page 69: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/69.jpg)
Bounding Volume Hierarchy (BVH)
• BVH affords significant speed-up in ray tracing:– This scene contains 31584 objects (all triangles except 2 spheres)
CENG 477 – Computer Graphics 40
No-BVHTotal rendering time: 12 mins 33 secs
Test conducted onIntel Core i7 960 CPU
with 8 cores at 3.2GHz
![Page 70: CENG 477 Introduction to Computer Graphicssaksagan.ceng.metu.edu.tr/courses/ceng477/files/pdf/04_A_texture... · Introduction to Computer Graphics Texture Mapping. Until Now • We](https://reader033.vdocuments.us/reader033/viewer/2022042419/5f35958acc815a182c74dd93/html5/thumbnails/70.jpg)
Bounding Volume Hierarchy (BVH)
• BVH affords significant speed-up in ray tracing:– This scene contains 31584 objects (all triangles except 2 spheres)
CENG 477 – Computer Graphics 41
No-BVHTotal rendering time: 12 mins 33 secs
Test conducted onIntel Core i7 960 CPU
with 8 cores at 3.2GHz
With-BVHTotal rendering time: 1.2 secs
Test conducted onIntel Core i7 960 CPU
with 8 cores at 3.2GHz