Bài giảng Đồ họa hiện thực ảo - Bài 3: Các giải thuật cơ sở - Lê Tấn Hưng
Xén tỉa - Clipping
Nhiệm vụ cơ bản trong đồ họa là giữ các
phần của đối tượng lựa chọn nằm bên
ngoài đồ hoạ.
Xén tỉa là việc di chuyển tất cả các đối
tượng hoặc các phần của đối tượng thuộc
mô hình ngữ cảnh ra bên ngoài của sổ thế
giới thực
Việc loại từng điểm ảnh của đối tượng
thường chậm nhất là khi đối tượng mà
phần lớn nằm ngoài cửa sổ hiển thị.
Kỹ thuật thực hành là cần thiết để nâng
cao tốc độ trong thực hiện nhiệm vụ

Trang 1

Trang 2

Trang 3

Trang 4

Trang 5

Trang 6

Trang 7

Trang 8

Trang 9

Trang 10
Tải về để xem bản đầy đủ
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Đồ họa hiện thực ảo - Bài 3: Các giải thuật cơ sở - Lê Tấn Hưng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Đồ họa hiện thực ảo - Bài 3: Các giải thuật cơ sở - Lê Tấn Hưng
Bài 3:
Các giảithuậtcơ sở
Le Tan Hung
hunglt@it-hut.edu.vn
0913030731
(c) SE/FIT/HUT 2002 1
Nội dung
Các giảithuậtxéntỉa - Clipping
Các thuật toán tô miềnkín
Phép tô mầu
Phép xử lý Antialiasing
(c) SE/FIT/HUT 2002 2
Xén tỉa - Clipping
Nhiệm vụ cơ bản trong đồ họa là giữ các
phần của đối tượng lựa chọn nằm bên
ngoài đồ hoạ.
Xén tỉalàviệc di chuyển tất cả các đối
tượng hoặc các phần của đối tượng thuộc
mô hình ngữ cảnh ra bên ngoài của sổ thế
giới thực Định nghĩa
Việcloạitừng điểm ảnh của đốitượng Clipping điểm
thường chậmnhấtlàkhiđốitượng mà
xmin ≤ x ≤ xmax
phầnlớnnằm ngoài cửasổ hiểnthị.
ymin ≤ y ≤ ymax
Kỹ thuật thực hành là cần thiết để nâng
cao tốc độ trong thực hiện nhiệm vụ
(c) SE/FIT/HUT 2002 3
Clipping đoạnthẳng
Lines are defined by their endpoints, so it should be
possible just to examine these (in a similar way to points) and
determine whether or not to clip without considering every
pixel on the line
We often have windows that are either very large, i.e. nearly
the whole scene fits inside, or very small, i.e. most of the
scene lies inside the window
Hence, most lines may be either trivially accepted or rejected
(c) SE/FIT/HUT 2002 4
Giảithuật Cohen Sutherland
Outcode
The Cohen-Sutherland line-clipping algorithm is particularly
fast for “trivial” cases, i.e. lines completely inside or outside
the window.
Non-trivial lines, i.e. ones that cross a boundary of the
window, are clipped by computing the coordinates of the new
boundary endpoint of the line where it crosses the edge of the
window
Each point on all lines are first assigned an “outcode”
defining their position relative to the clipping rectangle
(c) SE/FIT/HUT 2002 5
(c) SE/FIT/HUT 2002 6
Giảithuật Cyrus-Beck
Lyang Barsky
The Cohen-Sutherland algorithm requires the window
to be a rectangle, with edges aligned with the co-
ordinate axes
It is sometimes necessary to clip to any convex
polygonal window, e.g. triangular, hexagonal, or
rotated.
The, and Liang-Barsky line clippers better optimise the
intersection calculations for clipping to window
boundary
Nicholl-Lee-Nicholl reducing redundant boundary
clipping by identifying edge and corner regions
(c) SE/FIT/HUT 2002 7
P = − Dx
q = x − x 1
1 1 m
P 2 = Dx
q2 = xM − x1
P = − Dy
q = y − y 3
3 1 m
P 4 = Dy
q4 = yM − y1
(c) SE/FIT/HUT 2002 8
NếuPk= 0 : điều đótương đương vớiviệc
đoạnthẳng đang xét song song vớicạnh
thứ kcủahìnhchữ nhật clipping.
a) Nếuqk< 0 ⇒ vô nghiệm)
b)Nếuqk>= 0 thì bấtphương trình luôn
thoả mãn.
(c) SE/FIT/HUT 2002 9
NếuPk≠ 0 :
uk = qk/Pk.
Pk < 0
• u ≥ qk/Pk Ù u ≥ uk.
Pk > 0
• u ≥ uk u ≤ qk/Pk
• u ≤ uk vớiuk= qk/Pk
• đoạnthẳng có dạng đitừ trong ra ngoài so với
cạnh k.
(c) SE/FIT/HUT 2002 10
Pk < 0 và uk < 0
uk ≤ u< 0 thoả mãn bấtphương trình sẽ không nằm
trên đoạnthẳng cầnxét.
=> uk sẽ nhậnlà0 khi uk<0
Pk > 0 và uk > 1
=> uk tương ứng sẽ nhậngiátrị 1.
điểmnằm trong cửasổ clipping sẽ có dạng như
sau:
U1 ≤ u ≤ U2
(c) SE/FIT/HUT 2002 11
q
U = min 1 ∪ u : u = k , P > 0
2 {} k k k
Pk
q
U = max 0 ∪ u : u = k , P < 0
1 {} k k k
Pk
(c) SE/FIT/HUT 2002 12
Nicholl-Lee-Nicholl clipping
Some edges are irrelevant to
clipping, particularly if one vertex a
lies inside region.
Cases:
x1 in
x1 in corner region a
x1 in edge region
For each case, we generate
a
specialized test regions for x2, which
use simple tests (slope, >, <), and
tell which edges to clip against.
(c) SE/FIT/HUT 2002 13
Nicholl-Lee-Nicholl (2)
Special cases for each endpoint location and slope
Number of cases explodes in 3D, making it
12
unsuitable Reject
3
Top
Left Top, Right
4
Left, bottom
Top, Bottom
(c) SE/FIT/HUT 2002 14
Giảithuật đường biên (Boundary - File
Algorithm)
Giải_thuật_đường_biên ( x, y )
Color : biếnmầu
Begin
Color = Readpixel ( x, y );
If ( Color = mầu tô ) or ( Color = mầu đường biên )
Kếtthúcvìchạmbiên
hoặcchạmphần đãtô
Else
Giải_thuật_đường_biên ( x+1, y );
Giải_thuật_đường_biên ( x-1, y );
Giải_thuật_đường_biên ( x, y+1 );
Giải_thuật_đường_biên ( x, y-1 );
// Thựchiệnlạigiảithuậtvớicácđiểmlâncận
End.
(c) SE/FIT/HUT 2002 15
Giảithuật dòng quét-Scanline cho việctô
mầu vùng
round down
round up
AET =
yma current x denominator current numerator
(c) SE/FIT/HUT 2002 16
x
Giảithuật tô vùng kín theo mẫu
(Pattern Filling)
Phương pháp 1
Phương pháp 2
(c) SE/FIT/HUT 2002 17
Hiệu ứng răng cưa
Aliasing
SPATIAL ALIASING, IN PICTURES
moire patterns arise in
image warping & texture mapping
jaggies arise in rendering
TEMPORAL ALIASING, IN AUDIO
when resampling an audio signal at a lower
sampling frequency,
e.g. 50KHz (50,000 samples per second) to
10KHz
TEMPORAL ALIASING, IN
FILM/VIDEO
strobing and the “wagon wheel effect”
jaggies in foreground.
jaggies
(c) SE/FIT/HUT 2002 18
Antialiasing
Méo thông tin trong quá trình lấymẫutầnsố thấp
sampling frequency
In raster images – leads to jagged edges with hiệu
ứng bậc thang – staircase effect
We can reduce effects by antialiasing methods to
compensate for undersampling
(c) SE/FIT/HUT 2002 19
When Does Spatial Aliasing
Occur?
During image synthesis:
when sampling a continuous (geometric) model to create a raster
image,
e.g. scan converting a line or polygon.
Sampling: converting a continuous signal to a discrete signal.
During image processing and image synthesis:
when resampling a picture, as in image warping or texture mapping.
Resampling: sampling a discrete signal at a different
sampling rate.
Example: “zooming” a picture from nx by ny pixels to snx by sny pixels
s>1: called upsampling or interpolation
can lead to blocky appearance if point sampling is used
s<1: called downsampling or decimation
can lead to moire patterns (c)and SE/FIT/HUT jaggies 2002 20
Phương pháp khử hiệu ứng răng cưa
Antialiasing Methods
1. Cốđịnh tín hiệubằng phương pháp lọc-prefiltering:
Giảm độ rộng dảitần tín hiệubỏibộ lọcthấphơntrước khi lấy
mẫu.
Highest quality method, but often impractical.
2. Cốđịnh mẫubằng siêu mẫu supersampling:
Use more samples to raise the Nyquist frequency.
Simple and widely used.
3. Cốđịnh mẫubằng phương pháp mẫubấtkỳ
- stochastic sampling:
Sample randomly, not uniformly.
Relatively simple, usually used in combination with
supersampling.
(c) SE/FIT/HUT 2002 21
Antialiasing by
supersampling
(c) SE/FIT/HUT 2002 22
(c) SE/FIT/HUT 2002 23
anti aliasing (1)
(c) SE/FIT/HUT 2002 24
Antialiasing (2)
(c) SE/FIT/HUT 2002 25
Hệ tọa độ thực
(WCS-World Coordinate System)
Đơn vị trong hệ
thống tọa độ phụ
thuộc vào không
gian và kích thước
của đốitượng được
mô tả, có thể từ A0,
nm, mm ... đếnm,
km ...
(c) SE/FIT/HUT 2002 26
Hệ tọa độ thiếtbị
(DCS-Device Coordinate System)
subselect.me
Vïng täa ®é thiÕt bÞ
VGA=640x480
ThiÕt bÞ hiÓn thÞ
(c) SE/FIT/HUT 2002 27
Hệ tọa độ chuẩn
(NCS - Normalized Coordinate System)
Giảiquyếtvấn đề khi ứng dụng chạy trên các thiếtbị
khác nhau
Có kích thước1x1
NCS Dcs
Wcs chuyÓn ®æi 2
chuyÓn ®æi 1
(c) SE/FIT/HUT 2002 28
Windows and Viewports
The World (what you can see, the real
world) The World Window (the bit
we want to capture)
Screen
Screen Window
Viewport
(c) SE/FIT/HUT 2002 29
Đặc điểm
•The world window is a rectangle.
•The viewport is a rectangle.
•Both are not necessarily the
same size or have the same
aspect ratio.
•Coordinates need to be
stretched, shrunk and moved to
make them fit.
World Window
Example Viewports
(c) SE/FIT/HUT 2002 30
Windows and Viewports
World Window Viewport
This is called
Mapping
(0,0) (100,0) (0,0) (100,0)
(wxmax,wymax)
(vxmax,vymax)
(wx,wy) (vx,vy)
(vxmin,vymin)
(c) SE/FIT/HUT 2002 31
(wxmin,wymin)
Windows and Viewports
Example
World Window400 Viewport
(10,6)
(-10,-6) 0
0 600
Recall from the last lecture:
x’ = Ax + B
y’ = Cy + D
This is exactly how mapping is achieved!!
What are A, B, C & D ??
(c) SE/FIT/HUT 2002 32
Phép chuyển đổi
(c) SE/FIT/HUT 2002 33
Example
World Window400 Viewport
(10,6)
(-10,-6) 0
0 600
A = 600/20 = 30
B = 400/12 = 33.3333 If this is correct, (-10,-6)
should map to (0,0) and
C = 0 – 30 * -10 = 300 (10,6) -> (600,400) ☺
☺
D = 0 – 33.3333 * -6 = 200 sx = A * -10 + C = 0
sy = B * -6 + D = 0 ☺
sx = A * 10 + C = 600 ☺
xy = B * 6 + D = 400
(c) SE/FIT/HUT 2002 34
OpenGL ?
Do you need to perform these
calculations each time you draw
something with OpenGL??
No
OpenGL does all the hard work for
you.
But it important that you
understand what is going on..
(c) SE/FIT/HUT 2002 35
Windows and Viewports
Each time you call for a vertex to be drawn (e.g.
glVertex2f() etc..) the coordinates of the point are
passed through a set of transformations that map world
coordinates into viewport coordinates.
First set the world window coordinates
with:
Then set the viewport with:
(c) SE/FIT/HUT 2002 36
Windows and Viewports
void myInit(void)
{
glClearColor(1.0,1.0,1.0,0.0);
glColor3f(0,0,0);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//set the viewing coordinates
gluOrtho2D(-10.0, 10.0, -6.0, 6.0); glPointSize(10.0);
glViewport(0,0,600,400);
} glBegin(GL_POINTS);
glVertex2i(-10,-6);
glVertex2i(0,0);
*NOTE: Vertex are given in
glVertex2i(10,6);
World Coordinates and OpenGL
glEnd();
maps them to the Viewport
Coordinates.
(c) SE/FIT/HUT 2002 37
0.4
0.3
-0.4 -0.2
Say we want to map
this to a 640x480
viewport
480
640
(c) SE/FIT/HUT 2002 38
Wx=-.2 Vxmax=640
Wy=.3
Wxmax=0 Vxmin=-0.4
Wxmin=-0.4 Vymax=0
Wymax=0.4 Vymin=480
Wymin=0
Vx= (-.2-(-0.4))*(640-0) + 0 = 320
0-(-0.4)
Vy= (.3-0)*(0-480) + 480 = 120
0-(-0.4)
320
120
(c) SE/FIT/HUT 2002 39File đính kèm:
bai_giang_do_hoa_hien_thuc_ao_bai_3_cac_giai_thuat_co_so_le.pdf

