Lập bản đồ khối – Wikipedia

Hình ảnh bên trái phía dưới hiển thị cảnh có điểm nhìn được đánh dấu bằng chấm đen. Hình trên cho thấy mạng của ánh xạ khối được nhìn từ quan điểm đó và hình dưới bên phải cho thấy khối được đặt chồng lên trên cảnh ban đầu.

Trong đồ họa máy tính, ánh xạ khối là một phương pháp của môi trường ánh xạ sử dụng sáu mặt của khối lập phương làm hình dạng bản đồ. Môi trường được chiếu lên các mặt của khối lập phương và được lưu trữ dưới dạng sáu kết cấu hình vuông, hoặc mở ra thành sáu vùng của một kết cấu. Bản đồ khối được tạo ra bằng cách hiển thị cảnh đầu tiên sáu lần từ một góc nhìn, với các khung nhìn được xác định bởi một góc nhìn 90 độ đại diện cho mỗi mặt khối. [1]

Trong phần lớn các trường hợp, ánh xạ khối được ưu tiên hơn phương pháp hình cầu cũ hơn ánh xạ bởi vì nó loại bỏ nhiều vấn đề cố hữu trong ánh xạ hình cầu như biến dạng hình ảnh, phụ thuộc quan điểm và tính không hiệu quả tính toán. Ngoài ra, ánh xạ khối cung cấp khả năng lớn hơn nhiều để hỗ trợ hiển thị các phản xạ theo thời gian thực so với ánh xạ hình cầu vì sự kết hợp giữa sự không hiệu quả và sự phụ thuộc quan điểm hạn chế nghiêm trọng khả năng ánh xạ hình cầu được áp dụng khi có quan điểm thay đổi liên tục.

Lịch sử [ chỉnh sửa ]

Ánh xạ khối được đề xuất lần đầu tiên vào năm 1986 bởi Ned Greene trong Bản đồ môi trường giấy của mình và các ứng dụng khác của các dự báo thế giới, [2] mười năm sau môi trường lập bản đồ lần đầu tiên được đưa ra bởi Jim Blinn và Martin Newell. Tuy nhiên, những hạn chế về phần cứng đối với khả năng truy cập đồng thời sáu hình ảnh kết cấu khiến cho việc thực hiện ánh xạ khối không thể thực hiện được mà không cần phát triển công nghệ. Vấn đề này đã được khắc phục vào năm 1999 với việc phát hành Nvidia GeForce 256. Nvidia đã quảng cáo lập bản đồ khối trong phần cứng vì một tính năng chất lượng hình ảnh đột phá của GeForce 256 mà … sẽ cho phép các nhà phát triển tạo ra phản xạ chính xác, theo thời gian thực. Được tăng tốc trong phần cứng, lập bản đồ môi trường hình khối sẽ giải phóng sự sáng tạo của các nhà phát triển để sử dụng phản xạ và hiệu ứng ánh sáng đặc trưng để tạo ra môi trường nhập vai thú vị. Hồi [3] Ngày nay, ánh xạ khối vẫn được sử dụng trong nhiều ứng dụng đồ họa như một phương pháp ưa thích lập bản đồ môi trường.

Ưu điểm [ chỉnh sửa ]

Ánh xạ khối được ưa thích hơn các phương pháp lập bản đồ môi trường khác vì tính đơn giản tương đối của nó. Ngoài ra, ánh xạ khối tạo ra kết quả tương tự với kết quả thu được bằng phương pháp dò tia, nhưng hiệu quả tính toán cao hơn nhiều – sự giảm chất lượng vừa phải được bù lại bằng hiệu quả lớn.

Dự đoán ánh xạ khối, ánh xạ hình cầu có nhiều lỗ hổng vốn có khiến nó không thực tế đối với hầu hết các ứng dụng. Ánh xạ hình cầu là chế độ xem phụ thuộc nghĩa là một kết cấu khác nhau là cần thiết cho mỗi quan điểm. Do đó, trong các ứng dụng có quan điểm là thiết bị di động, cần phải tự động tạo một ánh xạ hình cầu mới cho mỗi quan điểm mới (hoặc, để tạo trước ánh xạ cho mọi quan điểm). Ngoài ra, một kết cấu được ánh xạ trên bề mặt của một hình cầu phải được kéo dài và nén, và cong vênh và biến dạng (đặc biệt dọc theo rìa của hình cầu) là hậu quả trực tiếp của việc này. Mặc dù các lỗ hổng hình ảnh này có thể được giảm bớt bằng cách sử dụng các thủ thuật và kỹ thuật nhất định như trước khi kéo dài ra, nhưng điều này chỉ thêm một lớp phức tạp khác vào ánh xạ hình cầu.

Ánh xạ paraboloid cung cấp một số cải tiến về những hạn chế của ánh xạ hình cầu, tuy nhiên nó đòi hỏi hai đường chuyền kết xuất bên cạnh các hoạt động cong vênh hình ảnh đặc biệt và tính toán liên quan nhiều hơn.

Ngược lại, ánh xạ khối chỉ cần một lượt kết xuất duy nhất và do tính chất đơn giản của nó, rất dễ dàng cho các nhà phát triển hiểu và tạo. Ngoài ra, ánh xạ khối sử dụng toàn bộ độ phân giải của hình ảnh kết cấu, so với ánh xạ hình cầu và hình parabol, cũng cho phép nó sử dụng hình ảnh có độ phân giải thấp hơn để đạt được chất lượng tương tự. Mặc dù việc xử lý các đường nối của bản đồ khối là một vấn đề, các thuật toán đã được phát triển để xử lý hành vi đường may và dẫn đến sự phản xạ liền mạch.

Nhược điểm [ chỉnh sửa ]

Nếu một vật thể mới hoặc ánh sáng mới được đưa vào cảnh hoặc nếu một vật thể nào đó được phản chiếu trong nó đang di chuyển hoặc thay đổi theo cách nào đó, thì sự phản chiếu thay đổi và bản đồ khối phải được kết xuất lại. Khi bản đồ khối được gắn vào một đối tượng di chuyển qua cảnh thì bản đồ khối cũng phải được kết xuất lại từ vị trí mới đó.

Ứng dụng [ chỉnh sửa ]

Điểm nổi bật đặc biệt ổn định [ chỉnh sửa ]

Các chương trình thiết kế hỗ trợ máy tính (CAD) sử dụng các điểm nổi bật nhất tín hiệu để truyền đạt cảm giác về độ cong bề mặt khi hiển thị các đối tượng 3D. Tuy nhiên, nhiều chương trình CAD thể hiện các vấn đề trong việc lấy mẫu các điểm nổi bật cụ thể vì các tính toán ánh sáng cụ thể chỉ được thực hiện ở các đỉnh của lưới được sử dụng để thể hiện đối tượng và phép nội suy được sử dụng để ước tính ánh sáng trên bề mặt của đối tượng. Các vấn đề xảy ra khi các đỉnh lưới không đủ đậm đặc, dẫn đến việc lấy mẫu ánh sáng không đủ. Điều này lần lượt dẫn đến các điểm nổi bật với độ sáng tỷ lệ thuận với khoảng cách từ các đỉnh lưới, cuối cùng làm ảnh hưởng đến các tín hiệu thị giác biểu thị độ cong. Thật không may, vấn đề này không thể được giải quyết đơn giản bằng cách tạo ra một lưới dày đặc hơn, vì điều này có thể làm giảm đáng kể hiệu quả của việc hiển thị đối tượng.

Bản đồ khối cung cấp một giải pháp khá đơn giản và hiệu quả để hiển thị các điểm nổi bật đầu cơ ổn định. Nhiều điểm nổi bật nhất có thể được mã hóa thành một kết cấu bản đồ khối, sau đó có thể được truy cập bằng cách nội suy trên vectơ phản xạ của bề mặt để cung cấp tọa độ. Liên quan đến tính toán ánh sáng ở các đỉnh riêng lẻ, phương pháp này cung cấp kết quả sạch hơn thể hiện chính xác hơn độ cong. Một ưu điểm khác của phương pháp này là nó có tỷ lệ tốt, vì các điểm nổi bật cụ thể bổ sung có thể được mã hóa vào kết cấu mà không làm tăng chi phí kết xuất. Tuy nhiên, cách tiếp cận này bị hạn chế ở chỗ các nguồn sáng phải là ánh sáng xa hoặc vô hạn, mặc dù may mắn thay, điều này thường xảy ra trong các chương trình CAD.

Skyboxes [ chỉnh sửa ]

Ví dụ về một kết cấu có thể được ánh xạ tới các mặt của skybox khối, với các mặt được gắn nhãn

Có lẽ ứng dụng tiên tiến nhất của ánh xạ khối là để tạo các hình ảnh bầu trời toàn cảnh được kết xuất sẵn, sau đó được hiển thị bởi công cụ đồ họa dưới dạng các mặt của khối lập phương ở khoảng cách thực tế vô hạn với điểm nhìn nằm ở trung tâm của khối. Hình chiếu phối cảnh của các mặt khối được thực hiện bởi công cụ đồ họa sẽ loại bỏ các hiệu ứng chiếu môi trường để tạo bản đồ khối, để người quan sát trải nghiệm ảo giác được bao quanh bởi cảnh được sử dụng để tạo skybox. Kỹ thuật này đã được sử dụng rộng rãi trong các trò chơi video vì nó cho phép các nhà thiết kế thêm các môi trường phức tạp (mặc dù không thể khám phá) vào một trò chơi mà hầu như không mất chi phí hiệu năng.

Chiếu sáng giếng trời [ chỉnh sửa ]

Bản đồ khối có thể hữu ích để mô hình hóa chiếu sáng ngoài trời một cách chính xác. Đơn giản chỉ cần mô hình hóa ánh sáng mặt trời như một ánh sáng vô hạn duy nhất thể hiện sự chiếu sáng ngoài trời và dẫn đến ánh sáng không thực tế. Mặc dù có nhiều ánh sáng đến từ mặt trời, sự tán xạ của các tia trong khí quyển khiến toàn bộ bầu trời hoạt động như một nguồn sáng (thường được gọi là chiếu sáng giếng trời). Tuy nhiên, bằng cách sử dụng bản đồ khối, có thể thu được sự đóng góp khuếch tán từ ánh sáng bầu trời. Không giống như các bản đồ môi trường nơi sử dụng vectơ phản xạ, phương pháp này truy cập vào bản đồ khối dựa trên vectơ thông thường bề mặt để cung cấp một xấp xỉ nhanh chóng của sự chiếu sáng khuếch tán từ ánh sáng bầu trời. Một nhược điểm của phương pháp này là việc tính toán các bản đồ khối để thể hiện đúng một giếng trời là rất phức tạp; một quá trình gần đây là tính toán cơ sở điều hòa hình cầu thể hiện tốt nhất sự chiếu sáng khuếch tán tần số thấp từ bản đồ khối. Tuy nhiên, một số lượng đáng kể các nghiên cứu đã được thực hiện để mô hình chiếu sáng giếng trời hiệu quả.

Phản xạ động [ chỉnh sửa ]

Phản xạ ánh xạ khối trong hành động

Ánh xạ môi trường cơ bản sử dụng bản đồ khối tĩnh – mặc dù đối tượng có thể bị di chuyển và biến dạng, môi trường phản xạ vẫn nhất quán. Tuy nhiên, một kết cấu bản đồ khối có thể được cập nhật một cách nhất quán để thể hiện một môi trường thay đổi linh hoạt (ví dụ, cây cối đung đưa trong gió). Một cách đơn giản nhưng tốn kém để tạo ra các phản xạ động, liên quan đến việc xây dựng các bản đồ khối trong thời gian chạy cho mọi khung hình. Mặc dù điều này kém hiệu quả hơn nhiều so với ánh xạ tĩnh do các bước kết xuất bổ sung, nhưng nó vẫn có thể được thực hiện ở tốc độ tương tác.

Thật không may, kỹ thuật này không mở rộng tốt khi có nhiều vật thể phản chiếu. Một bản đồ môi trường động duy nhất thường được yêu cầu cho mỗi đối tượng phản chiếu. Ngoài ra, các biến chứng tiếp theo được thêm vào nếu các đối tượng phản chiếu có thể phản xạ lẫn nhau – bản đồ khối động có thể được tạo đệ quy xấp xỉ các hiệu ứng thường được tạo bằng cách sử dụng raytracing.

Chiếu sáng toàn cầu [ chỉnh sửa ]

Thuật toán tính toán chiếu sáng toàn cầu ở tốc độ tương tác sử dụng cấu trúc dữ liệu bản đồ khối, được trình bày tại ICCVG 2002. [1]

] [ chỉnh sửa ]

Một ứng dụng khác được sử dụng rộng rãi trong các trò chơi video là ánh xạ kết cấu chiếu. Nó dựa vào các bản đồ khối để chiếu hình ảnh của một môi trường lên khung cảnh xung quanh; ví dụ, một nguồn sáng điểm được gắn với bản đồ hình khối là hình ảnh toàn cảnh được chụp từ bên trong lồng đèn lồng hoặc khung cửa sổ qua đó ánh sáng được lọc. Điều này cho phép nhà phát triển trò chơi đạt được ánh sáng thực tế mà không phải phức tạp hóa hình học cảnh hoặc sử dụng các tính toán khối lượng bóng thời gian thực đắt tiền.

Địa chỉ bộ nhớ [ chỉnh sửa ]

Hình minh họa này cho thấy cách bản đồ khối được lập chỉ mục và xử lý.

Kết cấu khối lập chỉ mục sáu bản đồ kết cấu từ 0 đến 5 theo thứ tự Tích cực X , Âm tính X, Y dương, Y âm, Z dương, Z âm [4][5] Các hình ảnh được lưu trữ với nguồn gốc ở phía dưới bên trái của hình ảnh. Các mặt X và Y dương phải đảo ngược tọa độ Z và mặt Z âm phải phủ định tọa độ X. Nếu được cho khuôn mặt và tọa độ kết cấu

( u v ) { displaystyle (u, v)}

( x y z ) { displaystyle (x, y, z)} [19659063] (x, y, z) “/> có thể được tính theo hàm:
 void   convert_cube_uv_to_xyz  ( int   index   float   u   float   ] float   *  x   float   *  y   float   *  z )       // chuyển đổi phạm vi 0 thành 1 thành -1 thành 1     float   uc   =   2.0f   *   u   -   1.0f [19659067];     float   vc   =   2.0f   *   v   -   1.0f ;     switch [196591] 19659079] index )     {      trường hợp   0 :   *  x   =    1.0f ;   ] y   =      vc ;   *  z   =     -  uc ;   break ; / POSITIVE X       trường hợp   1 :   *  x   =   - [19659143] 1.0f ;   *  y   =      vc ;   *  z   =      uc  ] break ; 	 // NEGECT X       case   2 :   *  x   =      uc ; 19659079] y   =    1.0f ;   *  z   =     -  vc ;   break ; ] // TÍCH CỰC Y       trường hợp   3 :   *  x   =      uc ;   *  y   19659078] -  1.0f ;   *  z   =      vc ;   break ; 	 // NEGATION Y [1965trườnghợp  4 :   *  x   =      uc ;   *  y   =      vc [19659078] *  z   =    1.0f ;   break ; 	 // POSITIVE Z       case   5 [19659116]:   *  x   =     -  uc ;   *  y   =      vc ; *  z   =   -  1.0f ;   break ; 	 // NEGECT Z    }  }  

một vectơ

( x y z ) { displaystyle (x, y, z)}

có thể được chuyển đổi thành chỉ số khuôn mặt và tọa độ kết cấu

( u v ) { displaystyle (u, v)} [19659053] (u, v) “/> với chức năng:
 void   convert_xyz_to_cube_uv  ( float   x   float   y   float   ] int   *  index   float   *  u   float   *  v )       float   absX   =   fabs  ( x );     float   absY   =   19659079] y );     float   absZ   =   fabs  ( z );        int   isXPositive 19659069] x  >   0  ?   1  :   0 ;     int   isYPositive   =   >   0  ?   1  :   0 ;     int   isZPositive   =   z   19659078]?   1  :   0 ;        fl yến mạch   maxAxis   uc   vc ;        // POSITIVE X     if   ( isXP ] absX  > =   absY   &&   absX  > =   absZ )   {      // u (0 đến 1) đi từ + z đến -z       // v (0 đến 1) đi từ -y đến + y       maxAxis   =   absX ;       uc   =   -  z ;       vc   =   y ;       *  index   =   0 ;     ] // NEGECT X     if   (!  isXPositive   &&   absX  > =   absY   &&   =   absZ )   {      // u (0 đến 1) đi từ -z đến + z       // v (0 đến 1) đi từ -y đến + y [19659369] maxAxis   =   absX ;       uc   =   z ;       vc   =   9659067];       *  index   =   1 ;    }     // POSITIVE Y     if   ( isYPos   absY  > =   absX   &&   absY  > =   absZ )   {      // u (0 đến 1) từ -x đến + x       // v (0 đến 1) đi từ + z đến -z       maxAxis   =   absY ;       uc   = [19659069] x ;       vc   =   -  z ;       *  index   =   2 ;     // NEGECT Y     if   (!  isYPositive   &&   absY  > =   absX   ]> =   absZ )   {      // u (0 đến 1) đi từ -x đến + x       // v (0 đến 1) đi từ -z đến + z       maxAxis   =   absY ;       uc   =   x ;       vc   ;       *  index   =   3 ;    }     // POSITIVE Z     if   ( isZPos &&   absZ  > =   absX   &&   absZ  > =   absY )   {      // u (0 đến 1) đi từ -x đến + x       // v (0 đến 1) đi từ -y đến + y       maxAxis   =   absZ ;       uc   = [19659069] x ;       vc   =   y ;       *  index   =   4 ;     // NEGECT Z     if   (!  isZPositive   &&   absZ  > =   absX   &&     absY )   {      // u (0 đến 1) đi từ + x đến -x       // v (0 đến 1) đi từ -y đến + y [19659369] maxAxis   =   absZ ;       uc   =   -  x ;       vc   ] y ;       *  index   =   5 ;    }      // Chuyển đổi phạm vi từ -1 thành 1 thành 0 thành 1     *  u   =   0.5f   *   ( uc   /   maxAxis   +   1.0f ); *  v   =   0.5f   *   ( vc   /   maxAxis   +   1.0f  ]}  

Liên quan [ chỉnh sửa ]

Một bộ lớn các bản đồ khối lập phương miễn phí để thử nghiệm: http://www.humus.name/index.php?page=Textures

Mark VandeWettering đã lấy Bàn tay tự họa nổi tiếng của MC Escher với Reflecting Sphere và đảo ngược ánh xạ để có được những hình ảnh bản đồ khối này: trái, phải, lên, xuống, trở lại, phía trước [ ]] . Dưới đây là bản demo ba.js sử dụng những hình ảnh này (được xem tốt nhất trong cửa sổ trình duyệt rộng và có thể cần làm mới trang để xem bản demo): https://web.archive.org/web/20140519021736/http://threejs.org/examples/webgl_m vật liệu_cubemap_escher.html

Bạn cũng có thể chuyển đổi các phép chiếu môi trường khác thành bản đồ khối (ví dụ: từ phép chiếu tương đương sang bản đồ khối)

Tài liệu tham khảo [ chỉnh sửa ]

Xem thêm [ chỉnh sửa ]