Câc khâi niệm chung

Một phần của tài liệu giáo trình lý thuyết đồ họa (Trang 110 - 113)

I.1. Cấu trúcvật thểbằnghình"câcmặtđagiâc"

Một vật thể 3D có thể biểu diễn trong mây tính bằng nhiều mô hình khâc nhau, song hai mô hình phổ biến nhất đó lă mô hình khung dđy (WireFrame) vă môhình câcmặtđagiâc(Polygonmeshmodel)

• Mô hìnhWireFrame: Đêtrìnhbăyởchương trước,nóchotahìnhdângcủavật thểdướidạngmộtbộkhung

• Mô hình câc mặt đa giâc: ở đđy một vật thể 3D được xâc định thông qua câc mặt (thayvìcâccạnhnhưtrongmôhình WireFrame),vă mỗi mộtmặtlạiđược

xâc địnhthông qua câcđiểm mă câc điểm năy đư ợc xem như lă câc đỉnhcủa

mặt đa giâc, với mô hình câc mặt đa giâc thì chún g ta không chỉ tạo ra được

hình dâng của vật thể như mô hình Wireframe mă còn thể hiện được câc đặc

tính về mău sắc vă nhiều tính chấtkhâc của vật thể . Song để có thểmô tả vật

thể3Dmột câchtrungthực(như trongthếgiớithực)thìđòihỏingườilậptrình phảitính toân vă giảlậpnhiều thôngtin,mămấuchốtlăvấn đềkhử mặtkhuất vă chiếu sâng.Trong chươngnăy chúngta sẽ tậptrung nghiín cứu vấn đề khử mặtkhuất.

Ví dụ:Môtảvậtthểnhưtronghìnhvẽsau:

Trang106

Chương 7: Mô hình các mặt đa giác & Vấn đề

khử mặt khuất - Nguyễn Hữu Tài

Mặt1 2 1 3 Mặt5 Mặt Đỉnh 1 2 3 4 5 1,2,3 4,5,6 1,3,6,4 3,2,5,6 1,2,5,4

Mặt4 Mặt3 5 4 Mặt2 6 -Danh sâchcâcđỉnh:1,2,3,4,5,6

(a)MộtconCọpvớicâcmặtđagiâcchưatômău. (b)Tômăuđagiâctheomẫu

Trang107

Chương 7: Mô hình các mặt đa giác & Vâ

ún đề khử mặt khuất - Nguyễn Hữu T

ài

Mộtnhđnvậtgametheomôhìnhcâcmặtđagiâccùngvớiphĩpânhxạbềmặtvật liệulíncâcđa giâc.

Chúngtacóthểđưaranhiềucấutrúcdữliệukhâcnhauđểlưutrữchođagiâc. Dướiđđylăphâtthảomộtkiểucấutrúc:

Point3D=record {Điểm3chiều} x,y,z:real;

end;

Vector3D=record {Vector 3 chiều. Mặc giống với Point3D song ta vẫn khai để câc thuật toânđượctườngminh}

x,y,z:real; end;

RGBColor=record {Cấutrúcmăusắccủamộtmặt}

Trang108

Chương 7: Mô hình các mặt đa giác & Vâ

ún đề khử mặt khuất - Nguyễn Hữu Tài

B,G,R:Byte; end;

KieuMat=record

Sodinh:cardinal; {Sốđỉnhcủamặt}

List:arrayofinteger; {Danh sâchthứ tự câcđỉnh tạo nínmặt. Ởđđytadùngmảngđộng}

Color:RGBColor; {măusắccủamặt} end;

Obj3D=record {Đốitượng3chiều} ObjName:string; {Tíncủađốitượng} Sodinh:cardinal; {Sốđỉnh}

Dinh:arrayofpoint3d; {Danh sâch đỉnh. đđy ta dùng kiểu mảngđộng}

SoMat:cardinal; {Sốmặt}

Mat:arrayofKieuMat; {Danhsâchmặt}

Xworld,Yworld,Zworld,Zoom:Real; {Toạ độ kích thước thật củavậttronghệtoạđộthếgiới}

end;

Khi căiđặt cho một ứngdung cụ thìviệc sử dụng mảng cố địnhcó thể gđy ra câc trở ngại về kích thước tối đa hay tối thiểu, cũng như việc sử dụng bộ nhớ không tối ưu. Vì thế ngoăi câch dùng mảng cố định, ta có thể dùng mảng động trong một số ngôn ngữ như Visual Basic, Delphi hay Visual C++,… hoặc dùng cấutrúc danhsâch mócnối.Songsongvớiđiềuđólăviệcbớtđihayđưathímcâc thuộctính cầnthiếtđểbiểudiễn câcđặctínhkhâccủamặthaycủađốitượng

*Vấnđềkhửmặt khuất:

Khi thểhiệnvậtthể3Dmộtvấn đềnảy sinhlă lămsaochỉthểhiệncâcmặt có thể nhìn thấyđượcmă khôngthểhiện câc mặt khuất phía sau.Việcmột mặt bị khuất hay không bị khuất thì tuỳ thuộc văo cấu trúc câc mặt của vật thể vă vị trí củađiểmnhìncũngnhưbốicảnhmăvậtthểđóđượcđặtvăo.

Một phần của tài liệu giáo trình lý thuyết đồ họa (Trang 110 - 113)

Tải bản đầy đủ (DOCX)

(150 trang)
w