Các nhà khoa học đồ họa máy tính luôn muốn tạo được những hình ảnh như thật như trong tự nhiên. Điều đó có thể đạt được khi ngày nay máy tính đã trở nên mạnh hơn, những thiết bị xuất nhập đồ họa trở nên phổ biến.
Vì thế không ai không bị gây ấn tượng khi những gì họ thấy trong phim khoa học viễn tưởng thực chất là do máy tính tạo ra. Đối với những công việc cần có mô hình phức tạp và tốn công để vẽ thì bây giờ có thể mô hình hóa trên máy tính với những chi tiết phức tạp nhưng lại cho ra những kết quả hết sức trung thực.
55 trang |
Chia sẻ: Mr Hưng | Lượt xem: 1035 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Photoshop - Ray tracing, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
*Ray Tracing*Giới thiệuCác nhà khoa học đồ họa máy tính luôn muốn tạo được những hình ảnh như thật như trong tự nhiên. Điều đó có thể đạt được khi ngày nay máy tính đã trở nên mạnh hơn, những thiết bị xuất nhập đồ họa trở nên phổ biến. Vì thế không ai không bị gây ấn tượng khi những gì họ thấy trong phim khoa học viễn tưởng thực chất là do máy tính tạo ra. Đối với những công việc cần có mô hình phức tạp và tốn công để vẽ thì bây giờ có thể mô hình hóa trên máy tính với những chi tiết phức tạp nhưng lại cho ra những kết quả hết sức trung thực.*Giới thiệu (cont.)Nền tảng để máy tính xây dựng các hình ảnh chính là cách mô hình hình học chính xác các hình ảnh đó. Hiện nay có nhiều thuật giải đã được phát hiện dùng để hiển thị cho nhiều mô hình toán học hiển thị mặt cong: mặt tham số hóa, các mặt bậc ba, các mặt dạng ẩn Sự khác nhau giữa các thuật giải này chính là sự khác nhau về mặt hình học của đối tượng cần được hiển thị. Vì vậy đối với mỗi loại đối tượng khác nhau cần có một phương pháp hiển thị khác nhau tương ứng.*Ưu điểmKhắc phục được nhược điểm trên, Ray Tracing là phương pháp tổng quát rất hữu hiệu để hiển thị các mặt cong bởi vì: là tính đơn giản của thuật toán, sử dụng nguyên lý quang hình nên tạo ra những hình ảnh rất giống thực tế, áp dụng cho nhiều loại mặt cong. *Điều kiện áp dụng thuật toán Ray TracingĐể áp dụng thuật toán Ray Tracing cho các mặt cong thì ta phải xác định được 2 điều: giao điểm của một đường thẳng với một mặt congpháp vector tại một điểm trên mặt cong. Những mặt cong nào thỏa mãn 2 điều kiện này thì có thể áp dụng phương pháp Ray Tracing để hiển thị. *Tính chất của Ray TracingRay tracing là phương pháp để tạo ra những hình ảnh giống như thật:sự tương tác giữa ánh sáng và bóng tối với các vật thể được thể hiện giống như ta thấy trong tự nhiên.sự kết hợp đơn giản của các hiệu ứng như bóng, sự phản xạ, khúc xạ. mô phỏng theo đường đi giữa tia sáng và vật thể theo quy luật của quang hình học.Những gì (hình ảnh) mà chúng ta thấy được là sự tổ hợp màu của hàng tỉ tia sáng đi vào mắt chúng ta. Vì vậy, Ray Tracing đề ra phương pháp để tính toán màu sắc của tia sáng. *Tính chất của Ray TracingScreenEyepointScene*Tia này không giao với vật thể nào. Màu của điểm ảnh tương ứng được xác định bởi màu nền.Mô hình tạo ảnh của Ray TracingNguồn sángVật thểTia này giao với một vật thể. Màu của điểm ảnh tương ứng tùy thuộc vào màu của vật thể và những yếu tố khác.View PlaneViewpointLocationTương ứng giữa View Plane và Buffer lưu trữ hình ảnh.Buffer*Mô hình tạo ảnh của Ray tracingMô hình tạo ảnh của Ray Tracing, bao gồm: light source (nguồn sáng), object (vật thể), viewing geometry (tầm nhìn).Light source bao gồm các thuộc tính vị trí và màu sắc.Object có các thuộc tính: màu sắc, vị trí, độ phản xạ, khúc xạ, phương trình mặt, vectơ trực chuẩn.Viewing geomeotry (tầm nhìn) được định nghĩa phức tạp hơn. Thực chất, tầm nhìn xác định vị trí mắt người nhìn, hướng của mắt sẽ nhìn tới và vùng nào trong không gian mà mắt sẽ nhìn thấy 3 chiều thông qua một cửa sổ gọi là viewplane. *Viewing GeometryMắtView PlaneMắtDirectionLocationUpRightKhông gian vật thể phía sau View PlaneView Plane*Viewing GeometryChúng ta sử dụng 4 vector để định nghĩa viewing geomeotry: Location: xác định vị trí của mắt trong hoạt cảnh 3 chiều. Vị trí của mắt được xác định trong cùng hệ tọa độ với các vật thể. Direction: định nghĩa bởi một vector từ vị trí mắt điểm giữa của viewplane. Độ lớn của vector này xác định khoảng cách giữa mắt và viewplane. Up: vector có gốc là điểm giữa của viewplane và ngọn là điểm giữa của cạnh trên viewplane. Right: vector có gốc là điểm giữa của viewplane và ngọn là điểm giữa của cạnh phải viewplane.*Phương pháp tạo ảnhTrên thực tế, tia sáng xuất phát từ nguồn sáng, đi vào hoạt cảnh 3 chiều, sau khi tương tác với các vật thể tia sáng đi ra khỏi hoạt cảnh, có thể được mắt nhìn thấy hoặc không. Phương pháp này thường được gọi là Ray Tracing thuận và phải tính toán rất nhiều. Sở dĩ như vậy là vì khi muốn tạo hình ảnh của hoạt cảnh ta phải xây dựng hàng tỉ tia sáng (có thể hơn thế nữa) đi từ nguồn sáng mà chỉ có một số ít có hướng đi đúng qua viewplane và tới mắt người xem. Như thế máy tính PC không thể trong thời gian ngắn hoàn thành được công việc đồ sộ như vậy.*Phương pháp tạo ảnh (cont.)Bằng cách thay phương pháp đi của tia sáng, ta được một kỹ thuật tạo ảnh nhanh chóng hơn nhiều thường được gọi là Ray Casting hay Ray Tracing ngược. Ý tưởng của phương pháp này là cho tia sáng xuất phát từ vị trí mắt và đi qua từng điểm trên viewplane vào hoạt cảnh 3 chiều. Khi tia sáng tương tác với các vật thể trong hoạt cảnh, điểm trên viewplane (và điểm màu trên buffer) tương ứng với tia sáng đó sẽ có màu của giao điểm của vật thể gần nhất mà tia sáng tương tác.*Ray CastingScreenEyepointScene*Lighting modelMàu sắc của một điểm trên vật thể bị ảnh hưởng bởi những yếu tố sau đây:Giữa điểm đó và nguồn sáng có vật thể nào che khuất hay không, nếu không nó được chiếu sáng hoàn toàn.Sự phản xạ của bề mặt vật thể. Điển hình là cái gương nó phản xạ hoàn toàn các tia sáng tới. Cái gương không hề có màu của nó mà mang màu của những tia sáng đi tới. Sự khúc xạ ánh sáng của bề mặt vật thể. Ví dụ khi nhìn miếng thủy tinh ta không hề thấy màu của miếng thủy tinh mà chỉ thấy màu của những vật thể phía sau nó. *Shadow – BóngĐường thẳng nối giao điểm và nguồn sáng giao với vất thể khác.*Inter-object reflections – Phản xạTạo tia sáng phản xạ ra khỏi vật thể,Nếu nó tương tác với vật thể khác thì tính toán màu sắc của nó và phối hợp màu với giao điểm đầu tiên.*Refraction – Khúc xạVật thể trong suốt bẻ cong ánh sáng khi đi qua nó*Recursive ray tracing - Đệ qui*Lighting model (cont.)Do vậy để tính màu tại một điểm ta phải tổng hợp màu: màu do nguồn sáng (local shading), màu do tia phản xạvà màu do tia khúc xạ mang tới (recursive shading). Hai màu do tia phản xạ và khúc xạ tạo nên có được bằng cách xây dựng thêm hai tia phản xạ và khúc xạ và tiếp tục tính màu của hai tia trên bằng phương pháp trên. Đây được gọi là sự đệ qui trong cách xây dựng màu của vật thể. *Ưu điểm và nhược điểmƯu điểm:TransparencyReflectionShadowNo clipping, no projections, no scan conversionNhược điểm:Tính toán giao điểm phức tạp*Thuật toán Ray Tracing tổng quátVới mỗi điểm ảnh trên buffer,Xác định điểm P tương ứng trên viewplane;Xây dựng tia Ray đi từ mắt qua P;Xác định giao điểm gần nhất giữa tia Ray và các vật thể Objects trong khung cảnh;Nếu không tồn tại giao điểm thì điểm ảnh có màu là màu nền;Ngược lại,Tính vector trực chuẩn của vật thể tại giao điểm;Màu điểm ảnh là màu ambient;Với mỗi nguồn sáng,Tạo tia đi từ giao điểm đến nguồn sáng;Tính sự phân phối ánh sáng diffuse tới vật thể và cộng dồn vào màu của điểm ảnh;Nếu vật thể phản xạ,Tính toán tia phản xạ;Xác định màu của tia phản xạ;Cộng dồn vào màu của điểm ảnh;Nếu vật thể trong suốt,Tính toán tia khúc xạ;Xác định màu của tia khúc xạ;Cộng dồn vào màu của điểm ảnh;*Ứng dụng Ray TracingChúng ta chỉ cần xác định giao điểm của tia và mặt cong, vector trực chuẩn của mặt cong tại giao điểm đó:Biểu diễn tiaBiểu diễn vật thểGiao điểm của tia và vật thểVectơ pháp tuyến tại giao điểm*Biểu diễn tiaTia đóng vai trò quan trọng trong thuật toán ray tracing. Tia bao gồm gốc và hướng. Tia được tạo bởi hai vector, một cho gốc và một cho hướng của tia. Để mô tả tia di chuyển như thế nào ta xem thời gian như tham số t, ta có phương trình của tia như sau: R(t) là tập hợp những điểm tạo nên đường đi của tia. Tia chỉ đi về một hưóng được định bởi t>0.Rd:hướng của tia.R0:gốc của tia.R0Rd*Phương trình R(t) được xét trong không gian 3 chiều nên ta có cách khác:hướng của tia được mô tả bởi vector (xd, yd , zd)gốc của tia mô tả bởi vector (xo, yo , zo) . Như bạn đã biết, thuật toán ray tracing liên quan rất nhiều đến việc xác định giữa tia và vật thể có giao với nhau hay không. Sử dụng phương trình tham số của tia, chúng ta dễ dàng có thể xác định giao điểm giữa tia và vật thể. Phương trình tham số của tiaR0Rd*Hiển thị mặt ẩn – Implicit SurfaceMặt ẩn (S) là tập hợp điểm thỏa mãn phương trình f(x,y,z)=0. Vector trực chuẩn tại một điểm trên mặt ẩn được tính bằng vector gradient của hàm f tại điểm đó:Phương trình giao điểm của tia R(t) với mặt (S) có được bằng cách thay thế x,y,z trong phương trình f(x,y,z)=0 với x=x(t), y=y(t), z=z(t) ta được một phương trình mới theo biến t: f*(t)=0 là phươngtrình giao điểm của tia R(t) với (S)*Hiển thị mặt ẩn – Implicit SurfaceNếu f*(t)=0 vô nghiệm thì tia không cắt vật thể, nếu nó không có nghiệm dương thì tia cắt vật thể ở phía sau gốc của nó. Nghiệm t0 > 0 nhỏ nhất xác định điểm cắt gần nhất của tia đối với vật thể.Để xác định giao điểm gần nhất của tia đối với vật thể ta thế t0 vào phương trình của tia R(t):và để xác định vector trực chuẩn của mặt (S) tại p ta thế toạ độ p vào phương trình N(p). *Hiển thị mặt xác định – Explicit SurfaceMặt xác định (S) là tập hợp những điểm {x,y,z} thỏa mãn phương trình z=g(x,y). Nếu đặt f(x,y,z) = z-g(x,y) thì ta có thể xác định mặt (S) theo dạng ẩn thỏa điều kiện f(x,y,z)=0Vector trực chuẩn tại một điểm trên mặt (S) được tính như trên:Cách xác định giao điểm của tia và vật thể có thể áp dụng như đối với mặt ẩn ở trên.*Hiển thị mặt đại sốNhiều mặt cong được biểu diễn dưới dạng đa thức (thường là đa thức bậc thấp). Thực chất mặt đại số cũng là mặt dạng ẩn với f dược biễu diễn dưới dạng đathức P(x,y,z). Dạng tổng quát của P:Bậc của đa thức P:*Hiển thị mặt đại số (cont.)Phương trình giao điểm của f*(t) giữa tia và mặt (S) trở thành đa thức theo biến t:Nếu thì P*(t)=0 có nghiệm được xác định bằng công thức chính xác. Nếu d>4 thì nghiệm của P*(t)=0 phải dựa trên phương pháp số để tìm nghiệm gần đúng. Tuy nhiên, mục đích của chúng ta là tìm nghiệm dương bé nhất nên phương pháp tính nghiệm đơn giản.*Hiển thị mặt đại số (cont.)Phương trình giao điểm của f*(t) giữa tia và mặt (S) trở thành đa thức theo biến t:Nếu thì P*(t)=0 có nghiệm được xác định bằng công thức chính xác. Nếu d>4 thì nghiệm của P*(t)=0 phải dựa trên phương pháp số để tìm nghiệm gần đúng. Tuy nhiên, mục đích của chúng ta là tìm nghiệm dương bé nhất nên phương pháp tính nghiệm đơn giản.*Hiển thị mặt tham sốHàm f(u,v) với hai biến u,v biểu diễn mặt tham số tương ứng với các thành phần x=x(u,v), y=y(u,v), z=z(u,v)ví dụ: mặt phẳng đi qua điểm f0 và chứa hai đường thẳng f = f0 + u n1 và f = f0 + v n2 với và u1 và u2 là hai vector đơn vị được định nghĩa bằng phương trình:Vector trực chuẩn tại một điểm trên mặt tham số hóa được xác định bằng:*Hiển thị mặt tham số (cont.)Khi tia giao với mặt tham số hóa thì tọa độ giao điểm thỏa hệ phương trình:Đây là hệ phương trình phi tuyến (trừ khi f(u,v) là mặt phẳng). Dùng phương pháp giải hệ xấp xỉ ta có thể tìm giao điểm *THUẬT TOÁN CHI TIẾT*Khả năng của thuật toánVật thể ở bất cứ vị trí nào trong không gianNhiều nguồn sáng với nhiều màu sắc khác nhauĐiểm quan sát ở bất kì vụ trí nàoBề mặt vật thể có nhiều tính chất:AmbientDiffuseSpecularReflectionRefractionThay đổi độ phân giải của bức ảnh tạo ra*Dữ liệuVECTOR : tọa độ, x y zCOLOR : màu sắc, RedGreenBlueRAY : tia, Gốc : Origin Hướng của tia : Direction*Dữ liệuVIEWPOINT : Viewing Geometry, Vị trí quan sát : LocationHướng nhìn : DirectionHai vectơ đơn vị của viewplane :Up RightSURFACE : tính chất bề mặt vật thể, Màu sắc : ColorÁnh sáng xung quanh : AmbientÁnh sáng khuếch tán : Diffuse và Brilliance, Ánh sáng phản chiếu : Specular và RoughnessMức độ phản xạ – ReflectionMức độ khúc xạ – Refraction.*Dữ liệuOBJECT : đối tượng,Hàm xác định giao điểm của tia và vật thể – IntersectHàm tính vectơ trực chuẩn tại một điểm trên vật thể – NormalTính chất của bề mặt vật thể – PropertiesDanh sách các đối tượng ObjectListDanh sách các nguồn sáng LightList*Các bước chínhThuật toán sẽ tạo bức ảnh có kích thước là Width và Height640x480800x6001024x768Do đó, có một vùng đệm Buffer tương ứng với bức ảnhBufferRayMắt*Các bước chính (cont.)Quá trình tạo ảnh diễn ra như sau: Tính toán màu cho mỗi pixel của bức ảnh, bằng cách quét từng hàng và từng pixel một (tương ứng với 2 vòng lặp). Để tính màu cho mỗi pixel, ta cho một tia Ray đi từ Viewpoint qua Viewplane vào khung cảnh 3D, màu của pixel là màu của tia tương ứng. Quá trình này thông qua 3 bước: MakeRay, tạo tia từ mắt qua Viewplane Trace, dò theo đường đi của tia Ray để định màu Color của tia. Do tia có thể phản xạ hay khúc xạ nhiều lần, nên ta phải dùng hằng số MAXRECURSELEVEL để giới hạn số lần đệ qui. Sau khi tính toán màu của tia, lưu trữ màu vào vị trí tương ứng trong Buffer.*Thuật toánCreateImage( Width, Height){for( y = 0; y 0 && T < MinT) { MinT = T MinObject = Object }}Point = Ray.Origin + MinT * Ray.DirectionNormal = MinObject.Normal(Point)*ShadeXác định màu cho tia RayKết hợp các qui luật và tính chất bề mặt vật thể để xác định màu của tiaShade(MinObject, Ray, Normal, Point, Color, RecurseLevel)MinObject : Vật thể gần nhất mà tia Ray giaoPoint : Giao điểm của tia Ray và MinObjectNormal : Pháp vectơ tại giao điểm Point của MinObjectRecurseLevel : mức đệ quiColor : màu của tia Ray “cần phải xác định”*ShadeXác định màu cho tia Ray (cont.)Shade( MinObject, Ray, Normal, Point, Color, RecurseLevel) { // Xác định các tia phản xạ và khúc xạ ReflectedRay, RefractedRay // Xác định tô bóng địa phương Color = AmbientColor + DiffuseColor + SpecularColor // Xác định tô bóng đệ qui if (RecurseLevel < MAXRECURSELEVEL) { Color += ReflectedColor Color = (1 – K) * Color + K * RefractedColor }}*ShadeXác định tia phản xạ và khúc xạReflectedRay ReflectedRay.Origin = Point ReflectedRay.Direction = - 2 * Normal * (Ray.Direction dot Normal) + Ray.DirectionRefractedRay C = Ray.Direction dot Normal *ShadeTô bóng địa phươngAmbientColor : KAMBIENT = MinObject.Properties.Ambient AmbientColor = KAMBIENT * MinObject.Properties.ColorKAMBIENT = 0.0, 0.2, 0.4, 0.6. *ShadeTô bóng địa phươngDiffuseColorDiffuseColor = 0Nguồn sáng Light LightList { Tạo tia LightRay : đi từ giao điểm Point đến nguồn sáng Light LightColor : màu của nguồn sáng Diffuse = LightRay.Direction dot Normal KDIFFUSE = MinObject.Properties.Diffuse Diffuse = KDIFFUSE * DiffuseMinObject.Properties.Brilliance DiffuseColor += Diffuse * LightColor * MinObject.Properties.Color}*ShadeShadowDistance = Khoảng cách từ Point đến LightObject ObjectList { T = Object.Intersect( LightRay) if (T < Distance) //Shadow LightColor = 0}PointLightRayLightShadowObject*ShadeTô bóng địa phươngSpecularColorSpecularColor = 0Nguồn sáng Light LightList { Tạo tia LightRay : đi từ giao điểm Point đến nguồn sáng Light LightColor : màu của nguồn sáng Specular = LightRay.Direction dot Reflected.Direction KSPECULAR = MinObject.Properties.Specular Specular = KSPECULAR * SpecularMinObject.Properties.Roughness SpecularColor += Specular * LightColor}*ShadeTô bóng đệ quiTiếp tục cho các tia phản xạ và khúc xạ đi vào không gian và xác định màu của chúngReflectedColor Trace( ReflectedRay, ReflectedColor, RecurseLevel + 1)ReractedColor Trace( RefractedRay, RefractedColor, RecurseLevel + 1)
Các file đính kèm theo tài liệu này:
- raytracing_3078.ppt