1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng đồ họa và hiện thực ảo bài 3 các giải thuật cơ sở

7 80 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 468,93 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

z a Nếu qk < 0 ⇒ Đường thẳng nằm ngoài cửa sổ hệ bất phương trình trên vô nghiệm z bNếu qk >= 0 thì đoạn thẳng nằm trong hoặc nằm trên cạnh của cửa sổ clipping.. zbất phương trình sẽ có

Trang 1

Các giải thuật cơ sở

Le Tan Hung hunglt@it-hut.edu.vn 0913030731

Bài 3

2

Nội dung

zCác giải thuật xén tỉa - Clipping

zCác thuật toán tô miền kín

zPhép xử lý Antialiasing

3

Xén tỉa - Clipping

z Khái niệm

Xén tỉa là tiến trình tự động xác định

các điểm của 1 đối tượng nằm trong

hay ngoài cửa sổ hiển thị

z Tiết kiệm thời gian tiến trình rasterize

bỏ qua phần nằm ngoài cửa sổ hiển

thị

z Clipping điểm

xmin ≤ x ≤ xmax

ymin ≤ y ≤ ymax

y max

y min

4

Clipping đoạn thẳng

zTiến trình, giải thuật kiểm tra chấp nhận các đoạn thẳng nằm trong và loại bỏ các đoạn thẳng nằm ngoài dựa trên 2 điểm đầu cuối

zLý do:

zKhông kiểm tra mọi điểm trên đoạn thẳng

zHầu hết các đoạn thẳng với 1 màn hình hiển thị đều được chấp nhận hoặc loại bỏ

zRất ít các đợn thẳng cắt cửa sổ hiển thị

5

Giải thuật Cohen Sutherland Outcode

z Giải thuật Cohen-Sutherland

thực hiện nhanh với các trương

hợp đoạn thẳng nằm trong hay

ngoài cửa sổ hiện thị

z Mỗi điểm đầu cuối được gán mã

code phụ thuộc vào vị trí trong

mặt phẳng mã

z p.code = 0000

z If p.x <= xmin >> P.code or 0001

z If p.y <= ymin >> P.code or 0100

z If p.x >= xmax >> P.code or 0010

z If p.y >= ymax >> P.code or 1000

6

z If P 1 .code OR P 2 .code == 0000

Chấp nhận toàn đoạn thẳng

z If P 1 .code AND P 2 .code != 0000

Loại

z Với truờng hợp cắt, giải thuật xác định lại điểm đầu cuối là giao của đoạn thẳng và khung bao của cửa sổ hiển thị

Trang 2

Liabarsky

z x = x 1 + (x 2 - x 1 )u = x 1 + uDx

z y = y 1 + (y 2 - y 1 )u = y 1 + uDy

z xmin ≤ x 1 + Dx.u ≤ xmax ⇔ x ∈ [xm, xM]

z ymin ≤ y 1 + Dy.u ≤ ymax ⇔ y ∈ [ym, yM]

=

=

=

=

Dy P Dy P

Dx P Dx P

4 3 2 1

=

=

=

=

1 4

1 3 1 2 1 1

y y q

y y q

x x q

x x q

M m M m

8

z Nếu Pk = 0 : điều đó tương đương với việc đoạn thẳng

đang xét song song với cạnh thứ k của hình chữ nhật clipping

z a) Nếu qk < 0 ⇒ Đường thẳng nằm ngoài cửa sổ (hệ bất phương trình trên vô nghiệm)

z b)Nếu qk >= 0 thì đoạn thẳng nằm trong hoặc nằm trên cạnh của cửa sổ clipping

z Hệ bất phương trình luôn thoả mãn

9

z Nếu Pk≠ 0 : đoạn thẳng đang xét sẽ cắt cạnh k tương ứng

của cửa sổ clipping tại vị trí trên đoạn thẳng uk = qk/Pk

– Pk < 0 đoạn thẳng có dạng đi từ ngoài vào trong

zbất phương trình sẽ có dạng u≥ qk/Pk Ù u ≥ uk

– Pk > 0

zu≥ uk sẽ thuộc cửa sổ hiển thị

zbất phương trình sẽ có dạng u≤ qk/Pk

zu≤ uk với uk = qk/Pk là giao của đoạn thẳng với

cạnh k của cửa sổ clipping

zđoạn thẳng có dạng đi từ trong ra ngoài so với cạnh

k

10

z Pk < 0 và uk < 0 – cạnh k của cửa sổ clipping cắt đoạn thẳng tại phần mở rộng nằm ngoài đoạn thẳng

– uk ≤ u< 0 thoả mãn bất phương trình sẽ không nằm trên đoạn thẳng cần xét

– => uk sẽ nhận là 0 khi uk<0

z Pk > 0 và uk > 1 – => uk tương ứng sẽ nhận giá trị 1

z điểm nằm trong cửa sổ clipping sẽ có dạng như sau:

– U1≤ u ≤ U2

<

=

k

k k

P

q u u U

>

=

k

k k

P

q u u U

Sutherland-Hodgman Clipping

zBasic idea:

– Consider each edge of the viewport individually – Clip the polygon against the edge equation – After doing all planes, the polygon is fully clipped

Trang 3

Sutherland-Hodgman Clipping

zInput/output for algorithm:

– Input: list of polygon vertices in order

– Output: list of clipped poygon vertices consisting of

old vertices (maybe) and new vertices (maybe)

zNote: this is exactly what we expect from the

clipping operation against each edge

14

Sutherland-Hodgman Clipping

zSutherland-Hodgman basic routine:

– Go around polygon one vertex at a time – Current vertex has position p

– Previous vertex had position s, and it has been added

to the output if appropriate

15

Sutherland-Hodgman Clipping

zEdge from s to p takes one of four cases:

(Purple line can be a line or a plane)

inside outside

s

p

p output

inside outside

s p

no output

inside outside

i output

inside outside

s p

i output

p output

16

Sutherland-Hodgman Clipping

zFour cases:

sinside plane and pinside plane

z Add pto output

z Note: shas already been added – sinside plane and poutside plane

z Find intersection point i

z Add ito output – soutside plane and poutside plane

z Add nothing – soutside plane and pinside plane

z Find intersection point i

z Add ito output, followed by p

17

Giải thuật Cyrus-Beck

Liang Barsky

z Giải Cohen-Sutherland yêu cầu cửa sổ là hình chữ

nhật, các cạnh là cạnh của màn hình

z Vấn đề nảy sinh khi cửa sổ clip là 1 đa giác bất kỳ

hoặc hình chữ nhật quay đi 1 góc

z Giải thuật Liang-Barsky tối ưu khi tìm giao điểm của

đoạn thẳng với cử sổ hiển thị

z Nicholl-Lee-Nicholl reducing redundant boundary

clipping by identifying edge and corner regions

18

3-D Clipping

zBefore actually drawing on the screen, we have

to clip ( Why? )

zCan we transform to screen coordinates first, then clip in 2D?

– Correctness: shouldn’t draw objects behind viewer (what will an object with negative z coordinates do in our perspective matrix?) (draw it…)

Trang 4

Giải thuật đường biên (Boundary - File

Algorithm)

z Giải_thuật_đường_biên ( x, y )

Color : biến mầu

Begin

Color = Readpixel ( x, y );

If ( Color = mầu tô ) or ( Color = mầu đường biên )

Kết thúc vì chạm biên

hoặc chạm phần đã tô

Else

Putcolor(x,y, mauto)

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ực hiện lại giải thuật với các điểm lân cận

End

20

Edge Walking

zBasic idea:

– Draw edges vertically – Fill in horizontal spans for each scanline – Interpolate colors down edges

– At each scanline, interpolate edge colors across span

21

Edge Walking: Notes

zOrder vertices in x and y

– 3 cases: break left, break right, no break

zWalk down left and right edges

– Fill each span

– Until breakpoint or bottom vertex is reached

zAdvantage: can be made very fast

zDisadvantages:

– Lots of finicky special cases

– Tough to get right

– Need to pay attention to fractional offsets

22

Edge Walking: Notes

zFractional offsets:

zBe careful when interpolating color values!

zAlso: beware gaps between adjacent edges

Giải thuật đường quét

Scan-Line Algorithm

z The scan-line algorithm uses edge-coherence and

incremental integer calculations for maximum efficiency:

Tạo bảng edge table (ET) tập của các cạnh đa giác theo thứ tự

giá trị y mincủa chúng

Tạo bảng active edge table (AET) tập các cạnh giao vớI đoạn

thẳng quét scan-line

z Trong tiến trình quét các cạnh sẽ chuyển từ ET ra AET

z Các cạnh sẽ ở trong AET cho đến khi giá trị y maxcủa

cạnh đạt tới = scanline

z Lúc nay cạnh sẽ bị loại ra khỏi AET

Edge Table (ET)

y max x min

numerator denominator

scan-line

(0,0)

(15,15)

5 3

m

Trang 5

Giải thuật dòng quét-Scanline cho việc tô mầu vùng

AET =

y ma

x

current x denominator current numerator

round up

round down

26

Active Edge Table (AET)

y max current x denominator

AET =

current numerator

round up

round down

27

Scan-Line Algorithm

y = y of first non empty entry in ET

AET = null

repeat

move all ET entries in slot y to AET sort AET entries according to x min fill spans using pairs of AET entries for all AET members

if y max = y then remove from AET

y = y+1 for all AET members update numerator

if numerator>denominator numerator=numerator-denominator

x = x+1 until AET and ET empty

28

Rasterizing Triangles

zInteractive graphics hardware commonly uses

edge walking or edge equation techniques for rasterizing triangles

zTwo techniques we won’t talk about much:

– Recursive subdivision of primitive into micropolygons (REYES, Renderman)

– Recursive subdivision of screen (Warnock)

29

Recursive Triangle Subdivision

30

Edge Equations

zAn edge equation is simply the equation of the line containing that edge

– Q: What is the equation of a 2D line?

A: Ax + By + C = 0

– Q: Given a point (x,y), what does plugging x & y into

this equation tell us?

– A: Whether the point is:

zOn the line: Ax + By + C = 0

z“Above” the line: Ax + By + C > 0

z“Below” the line: Ax + By + C < 0

Trang 6

Edge Equations

z Edge equations thus define two half-spaces:

z And a triangle can be defined as the intersection of

three positive half-spaces:

A 1 x + B 1 y + C 1 < 0

A 2

x + B

2 y + C

2 < 0

A x 3 +

3

y +

C 3

< 0

A 1 x + B 1 y + C 1 > 0

A x 3 +

3

y +

C 3

> 0 A 2 x + B 2

y + C

2 > 0

32

Edge Equations

zSo…simply turn on those pixels for which all edge equations evaluate to > 0:

+ +

-33

Using Edge Equations

zAn aside: How do you suppose edge equations

are implemented in hardware?

zHow would you implement an edge-equation

rasterizer in software?

34

Using Edge Equations

zWhich pixels: compute min,max bounding box

zEdge equations: compute from vertices

zOrientation: ensure area is positive ( why? )

Hiệu ứng răng cưa

Aliasing - Antialiasing

zAliasing: signal processing term

with very specific meaning

zAliasing: computer graphics term

for any unwanted visual artifact

zAntialiasing: computer graphics

term for avoiding unwanted

artifacts

Signal Processing

zRaster display: regular sampling of a continuous function ( Really? )

zThink about sampling a 1-D function:

Trang 7

Signal Processing

zSampling a 1-D function:

38

Signal Processing

zSampling a 1-D function:

39

Signal Processing

zSampling a 1-D function:

– What do you notice?

40

Signal Processing

zSampling a 1-D function: what do you notice?

– Jagged, not smooth

41

Signal Processing

zSampling a 1-D function: what do you notice?

– Jagged, not smooth

– Loses information!

42

Antialiasing

zMéo thông tin trong quá trình lấy mẫu tần số thấp

zIn raster images – leads to jagged edges with hiệu ứng bậc thang – staircase effect

zViệc làm giảm hiệu ứng méo thông tin bằng phương pháp bù trừ

sampling frequency

Ngày đăng: 19/06/2019, 10:10

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm