Kỹ thuật chạm nổi 3D

Một phần của tài liệu các kỹ thuật chạm nổi 3d và ứng dụng (Trang 21 - 63)

Chương 1: KHÁI QUÁT THỰC TẠI ẢO VÀ CHẠM NỔI 3D

1.3. Kỹ thuật chạm nổi 3D

Lịch sử phát triển của các kỹ thuật chạm nổi gắn liền với sự phát triển của các kỹ thuật đồ họa 3D. Sự ra đời của kỹ thuật chạm nổi bắt đầu từ những năm 70 của thế kỷ trước. Năm 1978 J.Blimn đã trình bày kỹ thuật chạm nổi đầu tiên, sau đó rất nhiều các nhà khoa học trên thế giới đã phát minh cải tiến các kỹ thuật chạm nổi

nhằm từng bước cho các ảnh tốt hơn để gắn các kỹ thuật này vào trong các chip đồ họa và đưa các kỹ thuật này ứng dụng phổ biến trên thực tế.

Để thực hiện chạm nổi trên ảnh 3D quả là rất khó bởi vậy chúng ta phải sử dụng ảnh 2D để làm giả 3D. Sự khác nhau giữa Displacement mapping (còn được gọi là bump mapping) và sự giả mạo (hay bump mapping 2D) là giả bump mapping chỉ xáo trộn các bề mặt chuẩn thay thế bởi hình học. Sự khác nhau này có thể xem trong hình bóng hay các hình chiếu. Trong bump mapping thực sự, các điểm nhấp nhô là được áp dụng cho hình học, làm ảnh hưởng tới một điểm nhấp nhô hình bóng. Giả bump mapping là được tính toán một cách hiệu quả và có thể được thực hiện trong thời gian thực bởi card 3D, trong khi các bump mapping thật thường được nhận cho off-line (không phải thời gian thực) các ảnh được dõi quang tia (ray- traced images). Cho mục đích đạt được thời gian thực, bump mapping thường đề cập đến một pass (pass là một quá trình từ khi bắt đầu tới khi kết thúc để sinh ra một khung) hoặc là nhiều pass (multi-pass) và có thể được thực thi như là nhiều pass (thường là ba hoặc bốn) để giảm số lượng tính toán lượng giác được yêu cầu.

Chương 2

MỘT SỐ KỸ THUẬT CHẠM NỔI

2.1. Kỹ thuật Bump mapping

Hình 2.1. Bump mapping

Là một phương pháp tái tạo hiệu ứng nhấp nhô, lổn nhổn của các bề mặt trên phạm vi nhỏ. Kỹ thuật chạm nổi là một kỹ thuật đồ họa máy tính, nơi mỗi một điểm ảnh, sự xáo trộn lên bề mặt pháp tuyến của đối tượng được lấy lại tìm trong ánh xạ kết cấu (texture map) và được áp dụng trước khi việc tính toán sự chiếu sáng được thực hiện. Kết quả là rất tốt, được chi tiết trong việc biểu diễn bề mặt hoàn toàn giống với chi tiết vốn có trong thế giới tự nhiên. Ánh xạ pháp tuyến và ánh xạ song song (Normal và parallax mapping) là những kỹ thuật thường được sử dụng để tạo các nhấp nhô nhỏ (bumps), sử dụng các kỹ thuật mới để tạo bump mapping, việc sử dụng tỷ lệ mức xám đã lỗi thời. Sự khác nhau giữa displacemen mapping và bump mapping là hiển nhiên trong các ảnh ví dụ; trong bump mapping một thành phần bình thường được xáo trộn, không ảnh hưởng đến chính hình học của nó. Các phần đầu này tạo ra các vật bên trong hình bóng của đối tượng (một khối cầu vẫn có vòng tròn bao quanh bóng).

Bump mapping là một kỹ thuật đồ họa máy tính để tái tạo bề mặt nhìn hiện thực hơn bởi mô hình tương tác của một bề mặt kết cấu nhấp nhô cùng với ánh sáng trong môi trường. Bump mapping thực hiện điều này bằng cách thay đổi độ sáng của các điểm ảnh trên bề mặt tương ứng với độ cao của bản đồ (height map) điều

h

N Normal

T,B Bề mặt phẳng

Đèn

Normal

Quan sát

Bề mặt phẳng

này là đặc biệt cho mỗi bề măt. Khi nhận lại một cảnh 3D, độ sáng và màu của các điểm ảnh được phụ thuộc vào sự tương tác của mô hình 3D cùng với ánh sáng trong cảnh. Sau đó nó được phụ thuộc vào đối tượng hữu hình, lượng giác được sử dụng để tính toán pháp tuyến bề mặt hình học (geometric’ suface normal) của đối tượng, được định nghĩa như là một vector tại mỗi vị trí của điểm ảnh trên đối tượng. Bề mặt hình học thường được định nghĩa đối tượng nào tương tác mạnh mẽ cùng với ánh sáng tới từ việc sử dụng phương pháp Phong shading hoặc thuật toán ánh sáng tương tự. Ánh sáng đi vuông góc tương tác lên bề mặt một cách mạnh mẽ hơn là ánh sáng song song tác động lên bề mặt. Sau khi sự tính toán hình học ban đầu được thực hiện, một kết cấu được tô màu thường áp dụng cho mô hình để tạo ra đối tượng xuất hiện một cách hiện thực hơn. Sau đó một sự tính toán được thực hiện cho mỗi điểm ảnh trên bề mặt của đối tượng:

- Tìm các vị trí trên bản đồ chiều cao tương ứng với vị trí trên bề mặt.

- Tính toán pháp tuyến bề mặt của bản đồ chiều cao (heightmap).

- Thêm vào pháp tuyến bề mặt từ bước 2 với pháp tuyến bề mặt hình học để pháp tuyến chỉ trong một hướng mới.

- Tính toán sự tương tác của bề mặt nhấp nhô mới cùng với các ánh sáng trong cảnh đang sử dụng. ví dụ Phong shading.

- Kết quả là một bề mặt xuất hiện để có chiều sâu thực sự. Thuật toán bảo đảm rằng bề mặt xuất hiện thay đổi như là các ánh sáng trong cảnh di chuyển vòng quanh. Kỹ thuật ánh xạ pháp tuyến (Normal mapping) thường được sử dụng trong kỹ thuật bump mapping nhưng kỹ thuật này có thể thay bằng các kỹ thuật khác như là kỹ thuật ánh xạ song song (Parallax mapping).

Đây là một phương pháp mà tại đó các ảnh phẳng của ánh xạ kết cấu (texture map) sẽ được thay đổi để tạo ra một ấn tượng của việc không phẳng (non-smooth) nhưng không thay đổi hình dạng vật lý của bề mặt. Bump mapping đang trở nên phổ biến trong các game 3D bởi nó có thể được sử dụng để thêm các chi tiết trong phạm vi nhỏ (small scale detail) như là các nếp nhăn, vết xước,.. mà không cần thêm nhiều đa giác. Nó làm điều này bằng cách sử dụng ánh xạ kết cấu khác

(texture map) để thay đổi độ sáng của điểm ảnh trong kết cấu chính trên bề mặt.

Bump mapping có thể được xem như là một phiên bản đơn giản nhất của displacement mapping. Kỹ thuật này được thực hiện trong phần cứng của đồ họa thậm chí trước cả sự phổ biến của lập trình GPUs[PAC97, Kil00, BERW97]. Nếu bề mặt không đồng đều có các nhấp nhô nhỏ thì có thể được ước tính như là hoàn toàn phẳng. Trong trường hợp bề mặt phẳng, điểm nhìn thấy được xấp xỉ bằng với điểm được xử lý. Tuy nhiên, để hình dung các nhấp nhô nhỏ, nó là cần thiết để mô phỏng các hiệu ứng ánh sáng ảnh hưởng như thế nào lên chúng. Cách đơn giản để tính toán các pháp tuyến được xáo trộn cho mỗi điểm ảnh và sử dụng các pháp tuyến này để thực hiện việc chiếu sáng [6].

2.1.1. K thut Emboss bump mapping

Đây là kỹ thuật sử dụng Texture map để đưa ra hiệu ứng chạm nổi mà không yêu cầu sự nhận lại của người sử dụng. Đây là thuật toán multi-pass là một sự mở rộng và chắt lọc của texture embossing. Đây là tiến trình sao lại kết cấu ảnh đầu tiên, thay đổi toàn bộ nó để nhận được số lượng nhấp nhô, các điểm tới bên dưới, cắt ra để phù hợp với hình dáng từ kết cấu trên đầu và trộn lẫn hai kết cấu vào thành một. Đây được gọi là 2 pass chạm nổi bóng bởi vì nó yêu cầu hai kết cấu. Nó thực hiện một cách đơn giản và không có yêu cầu về phần cứng, và do đó được giới hạn bởi tốc độ của CPU. Tuy nhiên, nó chỉ ảnh hưởng bởi ánh sáng khuếch tán và ảo ảnh được phá vỡ phụ thuộc vào góc của ánh sáng. Bump mapping còn đươc gọi là height map, nó là một phiên bản greysacle đơn giản của kết cấu để được chạm nổi, nhờ đó các giá trị texel được sử dụng để thay thế màu của các điểm ảnh ban đầu.

Height map là được kết xuất 2 lần, cùng với lần thứ hai được di chuyển nhẹ. Khi 2 bản đồ được kết hợp cùng nhau, thì kết quả của bump map mới chính là sự khác biệt giữa 2 bản đồ. Điều này sau đó nhân với kết cấu cơ bản được yêu cầu.

2.1.2. K thut Dot Product 3

Bump map được gọi là normal map, kết cấu này chứa các giá trị thay thế các pháp tuyến bề mặt của các điểm ảnh ban đầu. Một pháp tuyến bề mặt giống như một mũi tên chỉ theo hướng tới các bề mặt đối diện, như là các góc xa từ một nguồn

ánh sáng, màu sắc của điểm ảnh trở nên tối hơn (và ngược lại). Phương pháp này thường cho kết quả tốt hơn so với emboss bump mapping nhưng phức tạp hơn.

Direct3D thường đề cập tới lộ trình tập hợp dot3 bum mapping nhưng một phương pháp tổng quát hơn tồn tại, normal mapping cơ bản sử dụng quá trình này nhưng nó được thực hiện thông qua một chương trình PS (Pixel Shader).

2.1.3. K thut Environment mapping

Phương pháp này là phương pháp kết hợp các kỹ thuật bump mapping. Một height map được tạo ra sau đó pha lẫn với kết cấu cơ bản ban đầu, đem kết quả này pha tiếp với environment map (nó có thể nhận được bất cứ điều gì từ một lightmap (là một ánh xạ kết cấu được sử dụng để tạo ra hiệu ứng ánh sáng trên đầu của các kết cấu cơ bản) tới một bản đồ khối phức tạp) để đưa ra bề mặt được bump cuối cùng. Cần lưu ý rằng không bao giờ thay đổi vị trí bump mapping hoặc số lượng của các đỉnh trong bề mặt. Các cạnh trên khung nhìn và các bóng (shadows) có thể làm hỏng (spoil) những ảo ảnh nhưng nhiều thuật toán bump mapping có thể giúp làm giảm vấn đề này. Environment mapping miêu tả một đối tượng phản chiếu xung quanh nó. Trong mẫu đơn giản nhất, environment mapping đưa ra các đối tượng được kiết xuất giống như màu vàng. Environment mapping cho rằng điều kiện của đối tượng (mọi thứ xung quanh nó) là không gian vô cùng từ một đối tượng và do đó có thể mã hóa mọi hướng ảnh.

2.1.3.1. Các kết cấu bản đồ hình khối

Một bản đồ hình khối bao gồm sáu hình ảnh phù hợp với kết cấu hình vuông với nhau như mặt của một khối lập phương. Cùng với nhau sáu hình này là một hình đa hướng mà chúng ta sẽ sử dụng để mã hóa environment mapping. Hình 2.1 đưa ra một ví dụ của một bản đồ hình khối để chụp một môi trường bao gồm bầu trời nhiều mây và địa hình vùng núi sương mù.

Hình 2.2. Các ảnh kết cấu cho bản đồ khối

Một tọa độ kết cấu 2D thiết lập màu trong hình ảnh kết cấu đơn. Ngược lại truy cập một kết cấu khối lập phương cùng với 3 thành phần tọa độ kết cấu được trình bày trong véc tơ 3D. Suy nghĩ véc tơ này là một tia bắt nguồn từ trung tâm của hình khối. Như là tia bắn ra ngoài, nó sẽ giao với một trong sáu mặt của bản đồ khối. Kết quả của việc truy cập bản đồ hình khối kết cấu được lọc màu tại điểm giao nhau với một trong sáu ảnh kết cấu. Bản đồ kết cấu hình khối là một ý tưởng của environment mapping. Mỗi mặt của bản đồ hình khối mã hóa một phần sáu của môi trường xung quanh đối tượng. Một bản đồ kết cấu cung cấp một cách nhanh chóng để xác định những đối tượng trung tâm trong môi trường mà có thể nhìn thấy trong bất kỳ hướng cụ thể nào.

Để tạo ra một bản đồ hình khối, thay thế các đối tượng mà chúng ta muốn đưa chúng vào trong một máy ảnh ở vị trí đối tượng và chụp những bức ảnh trong sáu hướng (dương x, âm x, y dương, âm y, z dương, và âm z). Mỗi ảnh chụp cần có góc 90o. Khu vực quan sát và tỷ lệ vuông góc, để lập phương sáu mặt này không có khoảng trống hoặc chồng chéo lên nhau để tạo ra bức ảnh toàn cảnh đa hướng. Sử dụng những ảnh này là sáu mặt của bản đồ hình khối. Chúng ta có thể chụp một môi

trường thực tế với một tập hợp các ảnh và sau đó tập hợp chúng lại với nhau để tạo ra một bản đồ môi trường.

Khi chúng ta nhìn vào một đối tượng phản chiếu cao như một hình cầu chrome, những gì chúng ta thấy không phải là đối tượng chính nhưng làm thế nào các đối tượng phản ảnh môi trường của nó. Khi chúng ta nhìn tại một số điểm trên một bề mặt phản chiếu cao, bề mặt tại điểm đó phản ánh quan điểm tia – nghĩa là các tia đi từ mắt của chúng ta đến điểm trên bề mặt, vào môi trường.

Các đặc điểm của tia phản xạ phụ thuộc vào các tia quan sát ban đầu và trên bề mặt pháp tuyến tại điểm mà tia nhìn chạm đến bề mặt. Những gì chúng ta thấy không phải là mặt của chính nó, nhưng những gì trông giống như môi trường theo hướng của tia được phản xạ. Khi chúng ta sử dụng một bản đồ hình khối để mã hóa những gì trông giống như môi trường ở tất cả các hướng, Việc kết xuất một điểm trên bề mặt phản xạ là một vấn đề của việc tính toán theo hướng được phản chiếu cho điểm trên bề mặt. Sau đó, chúng ta có thể truy cập vào bản đồ hình khối, dựa trên các hướng quan sát được phản xạ để xác định màu của môi trường cho điểm trên bề mặt.

2.1.3.2. Việc tính toán các véc tơ phản chiếu

a b

Hình 2.3. a- Environment map, b- Tính toán véc tơ phản chiếu Hình 2.3-a đưa ra một đối tượng, vị trí của mắt và một bản đồ kết cấu khối nó lấy môi trường xung quanh đối tượng. Việc miêu tả cảnh 3D trong 2D, một đối

tượng được đưa ra là một hình thang và môi trường được đưa ra là xung quanh hình vuông, hơn nữa là hình trụ thực sự.

Véc tơ I- được gọi là tia tới: Đi từ mắt tới bề mặt của đối tượng. Khi I chạm tới bề mặt, nó được phản chiếu theo hướng R dựa trên bề mặt pháp tuyến N. Tia thứ hai là tia phản xạ. Hình 2.3-b diễn tả tình huống này. Góc của tia đến ( ) là bằng với góc của tia chiếu ( ) cho một sự phản chiếu chính xác như là gương. Ta có thể tính toán véc tơ phản chiếu R trong thuật ngữ véc tơ I và N cùng với phương trình

R=I – 2 *N( N * I) (2.1)

Việc tính toán véc tơ phản chiếu là một thao tác chung trong đồ họa máy tính, Cg cung cấp một hàm thư viện chuẩn để tính toán tia phản chiếu.

2.1.3.3. Sự giả định của environment mapping

Trên đây chúng ta đã nó rằng environment mapping môi trường là vô cùng xa đối tượng. Bây giờ chúng ta khám phá ý nghĩa của các giả định này. Lý do cho giả định này là bản đồ môi trường được truy cập hoàn toàn dựa trên một hướng 3D.

Environment mapping không có trợ cấp cho các biến thể ở vị trí ảnh hưởng đến sự xuất hiện phản xạ của bề mặt. Nếu tất cả mọi thứ trong môi trường đủ xa bề mặt, sau đó giả định này là gần đúng. Trong thực tế, các hình ảnh là kết quả khi môi trường không đủ xa thường không được chú ý tới. Những phản xạ, đặc biệt trên bề mặt cong, có đủ tinh tế rằng hầu hết mọi người không thông báo khi phản xạ không chính xác về vật thể. Khi phản xạ phù hợp với màu thô của môi trường và thay đổi phù hợp với độ cong của bề mặt, lập bản đồ bề mặt kết xuất với môi trường xuất hiện tin cậy. Lý tưởng nhất là mỗi đối tượng môi trường ánh xạ trong một cảnh phải có bản đồ môi trường riêng của mình. Trong thực tế, các đối tượng thường xuyên có thể chia sẻ bản đồ môi trường. Về lý thuyết chúng ta nên tạo một bản đồ môi trường khi các đối tượng trong môi trường di chuyển hoặc khi đối tượng phản xạ bằng cách sử dụng bản đồ di chuyển đáng kể môi trường liên quan đến môi trường. Trong thực tế, phản ánh thuyết phục là có thể với các bản đồ môi trường tĩnh. Với một bản đồ môi trường, một đối tượng có thể chỉ phản ánh môi trường, nó không thể phản xạ

chính nó. Tương tự như vậy, chúng ta không mong đợi phản xạ nhiều, chẳng hạn như khi hai vật thể sáng bóng phản xạ lẫn nhau. Bởi vì một đối tượng phản xạ môi trường có thể phản xạ duy nhất môi trường và không phải bản thân nó, lập bản đồ môi trường tốt nhất là trên hình lồi hoặc chủ yếu là các đối tượng lồi thay vì nhiều đối tượng lỏm. Môi trường lập bản đồ chỉ phụ thuộc vào hướng mà không phụ thuộc vị trí, nó hoạt động trên bề mặt phẳng phản chiếu như gương, nơi mà các phản xạ phụ thuộc rất nhiều vào vị trí. Ngược lại, lập bản đồ môi trường làm việc tốt nhất trên các bề mặt cong.

2.2. Kỹ thuật Normal mapping

Normal mapping là một kỹ thuật được sử dụng để giả mạo ánh sáng của các chỗ lồi lõm. Nó được sử dụng để thêm các chi tiết mà không phải sử dụng nhiều các đa giác. Normal mapping thường sử dụng trong ảnh RGB, nó tương ứng với toạ độ x, y, z của một pháp tuyến bề mặt từ một phiên bản chi tiết của đối tượng. Cách sử dụng chung của kỹ thuật này là tăng cường các chi tiết và làm xuất hiện nhiều mô hình đa giác thấp bằng cách tạo ra một ánh xạ pháp tuyến từ mô hình đa giác cao.

Trong đồ họa máy tính 3D, normal mapping là một ứng dụng kỹ thuật được biết đến như là bump mapping. Normal mapping đôi khi được đề cập đến như là “Dot 3 bump mapping”. Trong khi bump mapping xáo trộn các pháp tuyến (normal) hiện tại (hướng đối diện với bề mặt - the way the surface is facing) của mô hình, normal mapping thay thế hoàn toàn pháp tuyến. Giống như bump mapping, nó được sử dụng để thêm các chi tiết cho việc tạo bóng mà không cần sử dụng nhiều đa giác.

Nhưng tại đó một bump map thường được tính toán dựa trên một kênh đơn (được giải thích là grayscale) ảnh, nguồn của các pháp tuyến trong ánh xạ pháp tuyến thường là một ảnh nhiều kênh (nó là các kênh cho màu “đỏ”, “xanh lá cây”, “xanh da trời” là tương phản với một màu đơn) nhận được từ một tập hợp các phiên bản chi tiết hơn của các đối tượng.

Normal mapping thường được tìm thấy trong 2 dạng: normal mapping không gian đối tượng và Normal mapping không gian tiếp tuyến. Chúng khác nhau ở các hệ tọa độ, trong các pháp tuyến đã được lưu trữ và đo lường. Một trong những điều

Một phần của tài liệu các kỹ thuật chạm nổi 3d và ứng dụng (Trang 21 - 63)

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

(72 trang)