Thông tin tài liệu:
Khi biểu diễn các đối tượng 3 chiều, một yếu tố không thể bỏ qua để tăng tínhthực của đối tượng đó là tạo bóng sáng cho vật thể. Để thực hiện được điều này,chúng ta cần phải lần lượt tìm hiểu các dạng nguồn sáng có trong tự nhiên, cũng nhưcác tính chất đặc trưng khác nhau của mỗi loại nguồn sáng.
Nội dung trích xuất từ tài liệu:
Chương 8: Tạo bóng vật thể 3D CHƯƠNG VIII TẠO BÓNG VẬT THỂ 3D8.1. KHÁI NIỆM Khi biểu diễn các đối tượng 3 chiều, một yếu tố không thể bỏ qua để tăng tínhthực của đối tượng đó là tạo bóng sáng cho vật thể. Để thực hiện đ ược điều này,chúng ta cần phải lần lượt tìm hiểu các dạng nguồn sáng có trong tự nhiên, cũng nhưcác tính chất đặc trưng khác nhau của mỗi loại nguồn sáng. Từ đó đ ưa ra các giảipháp kỹ thuật khác nhau nhằm thể hiện sự tác động của các nguồn sáng khác nhaulên đối tượng.8.2. NGUỒN SÁNG XUNG QUANH Ánh sáng xung quanh là mức sáng trung bình, tồn tại trong một vùng không gian.Một không gian lý tưởng là không gian mà tại đó mọi vật đều được cung cấp mộtlượng ánh sáng lên bề mặt là như nhau, từ mọi phía ở mọi nơi. Thông thường ánhsáng xung quanh được xác định với một mức cụ thể gọi là mức sáng xung quanh củavùng không gian mà vật thể đó cư ngụ, sau đó ta cộng với cường độ sáng có được từcác nguồn sáng khác để có được cường độ sáng cuối cùng lên một điểm hay một mặtcủa vật thể. Vector pháp tuyến của mặt Ánh sáng phản xạ Ánh sáng tới Ánh sáng Ánh sáng tới phản xạ Hình 8.1. Sự phản xạ của ánh sáng Chương VIII. Tạo bóng vật thể 3D8.3. NGUỒN SÁNG ĐỊNH HƯỚNG Nguồn sáng định hướng giống như những gì mà mặt trời cung cấp cho chúng ta.Nó bao gồm một tập các tia sáng song song, bất kể cường độ của chúng có giốngnhau hay không. Có hai loại kết quả của ánh sáng định hướng khi chúng chiếu đếnbề mặt là: khuyếch tán và phản chiếu. Nếu bề mặt phản xạ toàn bộ (giống như mặtgương) thì các tia phản xạ sẽ có hướng ngược với hướng của góc tới (Hình 8.1).Trong trường hợp ngược lại, nếu bề mặt là không phản xạ toàn phần (có đ ộ nhám,xù xì) thì một phần các tia sáng sẽ bị toả đi các hướng khác hay bị hấp thụ, phần cònlại thì phản xạ lại, và lượng ánh sáng phản xạ lại này tỷ lệ với góc tới. Ở đây chúngta sẽ quan tâm đến hiện tượng phản xạ không toàn phần vì đây là hiện tượng phổbiến (vì chỉ có những đối tượng được cấu tạo từ những mặt như mặt gương mớixảy ra hiện tượng phản xạ toàn phần), và đồng thời tìm cách tính cường độ của ánhsáng phản xạ trên bề mặt. Vector pháp tuyến của mặt Vector pháp tuyến của mặt Ánh sáng phản Ánh sáng tới xạ Ánh sáng tới Ánh sáng phản xạ (a) (b) Hình 8.2. Sự phản xạ không toàn phần của ánh sáng Trong hình 8.2 thể hiện sự phản xạ ánh sáng không toàn phần. Độ đ ậm nét c ủacác tia ánh sáng tới thể hiện cường độ sáng cao, độ mảnh của các tia phản xạ thểhiện cường độ sáng thấp. Nói chung, khi bề mặt là không phản xạ toàn phần thìcường độ của ánh sáng phản xạ (hay tạm gọi là tia phản xạ) luôn bé hơn so vớicường độ của ánh sáng tới (hay gọi là tia tới), và cường độ của tia phản xạ còn tỷ lệvới góc giữa tia tới với vector pháp tuyến của bề mặt, nếu góc này càng nhỏ thìcường độ phản xạ càng cao (hình II.2 (a)), nếu góc này lớn thì cường độ phản xạ rất 105 Chương VIII. Tạo bóng vật thể 3Dthấp (hình II.2 (b)). Ở đây ta chỉ quan tâm đến thành phần ánh sáng khuyếch tán vàtạm bỏ qua hiện tượng phản xạ toàn phần. Để cho tiện trong việc tính toán ta tạmđổi hướng của tia tới thực sự, vậy bây giờ hướng của tia tới đ ược xem là h ướngngược lại của tia sáng tới. Nếu gọi θ là góc giữa tia tới với vector pháp tuyến của bề mặt thì Cos(θ) phụthuộc vào tia tới a và vector pháp tuyến của mặt n theo công thức: a.n Cos (θ ) = (8.1) a.n Trong công thức trên Cos(θ) bằng tích vô hướng của a và n chia cho tích đ ộ l ớncủa chúng. Nếu ta đã chuẩn hoá độ lớn của các vector a và n về 1 từ trước thì ta cóthể tính giá trị trên một cách nhanh chóng như sau: Cos(θ) = tích vô hướng của a và n = a.x*n.x+a.y*n.y+a.z*n.z Vì Cos(θ) có giá trị từ +1 đến -1 nên ta có thể suy ra công thức tính cường độ củaánh sáng phản xạ là: Cường độ ánh sáng phản xạ = Cường độ của ánh sáng định hướng * [(Cos(θ)+1)/2] (8.2)Trong đó [(Cos(θ)+1)/2] có giá trị trong khoảng từ 0 đến 1. Vậy qua công thức (8.1)và (8.2) chúng ta có thể tính được cường độ của ánh sáng phản xạ trên bề mặt khibiết được cường độ của ánh sáng định hướng cũng như các vector pháp tuy ến c ủamặt và tia tới.Cài đặt thuật toán Dưới đây là phần trình bày các thủ tục phục vụ cho việc vẽ đối tượng 3D đặc lồi,theo thuật toán chọn lọc mặt sau có tính đến vấn đề chiếu sáng của nguồn sáng xungquanh và nguồn sáng định hướng.Function Cuong_Do_Anh_Sang_Dinh_Huong(v,n:Vector3D):real;{Thủ tục tính cường độ ánh sáng phản xạ trên bề mặt của đa giác khi biết được tiatới v và vector pháp tuyến n}var s,t:real; 106 Chương VIII. Tạo bóng vật thể 3Dbegin s:=sqrt(v.x*v.x+v.y*v.y+v.z*v.z)*sqrt(n.x*n.x+n.y*n.y+n.z*n.z); {Gán S bằng tích của |v|*|n|} if s=0 then {Một trong hai vector bằng 0 do đó tạm xem cường độ sáng bằng 1} begin Cuong_Do_Anh_Sang_Dinh_Huong:=1;end else Begin t:=tich_vo_huong(v,n); {Tính tích vô hướng của v và n} If t>0 then {Nếu góc giữa v và n nằm trong khoảng từ 0 đến 90 độ thì} Cuong_Do_Anh_Sang_Din ...