Hỗ trợ tệp hình ảnh trong Rhino 5

Rhino 5 hỗ trợ đính kèm tệp hình ảnh trong lệnh BackgroundBitmap  và PictureFrame.
Rhino hoạt động tốt nhất với các tệp hình ảnh có kích thước lũy thừa của 2 (“power of 2”).
Điều này là do Rhino luôn hiển thị các tệp hình ảnh dưới dạng kết cấu.

Hình ảnh được lưu trữ dưới dạng textures

Để hiển thị tệp dưới dạng textures, Rhino sử dụng OpenGL để lập bản đồ kết cấu một đa giác hoặc lưới đa giác. Đây là thông tin quan trọng vì nhiều lý do:

  1. OpenGL lưu trữ các textures trong bộ nhớ GPU.
  2. Do # 1, việc triển khai OpenGL có các yêu cầu phần cứng (hạn chế) về mức độ lớn của kết cấu về mặt vật lý.
  3. Vì # 2, không có kích thước xác định tối đa tiêu chuẩn cho một kết cấu. Nó dựa trên thẻ video và trình điều khiển của bạn.
  4. Vì thứ 3, Rhino không thể chỉ sử dụng bất kỳ tệp nào ở bất kỳ độ phân giải nào và cho rằng nó sẽ hoạt động.
  5. Do # 4, nếu Rhino gặp tệp hình ảnh không đáp ứng khả năng phần cứng video của bạn, nó phải thay đổi kích thước hình ảnh thành kích thước có thể được sử dụng bởi phần cứng của bạn.

Rhino 5 không bắt buộc các tệp hình ảnh phải có kích thước chính xác thành lũy thừa 2.
Tuy nhiên, biểu diễn nội bộ trong Rhino (và do đó đối với OpenGL) là lũy thừa của 2. Nói cách khác, bạn có thể ném bất kỳ tệp hoặc kết cấu nào vào Rhino 5 và nó sẽ đảm bảo rằng nó hoạt động trên hầu hết các phần cứng video.

Điều chỉnh lũy thừa bậc 2

Vì vậy, làm thế nào nó làm cho nó hoạt động nếu hình ảnh không phải là lũy thừa bậc 2?

Nếu Rhino cần thay đổi kích thước hình ảnh, nó sẽ thay đổi kích thước hình ảnh đó thành lũy thừa cao nhất của bậc 2 lớn hơn kích thước hiện tại nhưng nhỏ hơn hoặc bằng kích thước tối đa được phần cứng hiện tại hỗ trợ.

Dưới đây là một vài ví dụ để minh họa điều này. Giả sử giới hạn kích thước kết cấu của phần cứng hiện tại là 8192 x 8192. Nếu Rhino thấy tệp có kích thước:

  • 256 x 256 – Rhino sẽ không làm gì cả, lũy thừa của 2.
  • 1024 x 1024 – Rhino sẽ không làm gì cả, lũy thừa của 2.
  • 1024 x 256 – Một lần nữa, Rhino sẽ không làm gì cả, lũy thừa của 2.
  • 127 x 127 – Rhino sẽ thay đổi kích thước hình ảnh thành 128 x 128, giá trị cao nhất tiếp theo là lũy thừa của 2 và lớn hơn kích thước hiện tại.
  • 129 x 129 – Rhino sẽ thay đổi kích thước hình ảnh thành 256 x 256, một lần nữa, giá trị cao nhất tiếp theo là lũy thừa của 2 và lớn hơn kích thước hiện tại.

Rhino sẽ không bao giờ giảm kích thước hình ảnh vì đó là một hoạt động mất mát. Vì vậy, nó sẽ luôn tăng kích thước và không bao giờ giảm chúng, ngoại trừ những trường hợp sau:

  • 9000 x 6000 – Rhino sẽ thay đổi kích thước (giảm kích thước) hình ảnh thành 8192 x 8192. 9000 vượt quá giới hạn tối đa 8192 và 6000 không phải là lũy thừa của 2. Lũy thừa khả dụng tiếp theo của 2 là 8192.
  • 9000 x 9000 – Rhino sẽ thay đổi kích thước (giảm kích thước) hình ảnh thành 8192 x 8192. Cả hai kích thước đều vượt quá giới hạn phần cứng và được điều chỉnh đến giới hạn tối đa.

Pixelization

Khi Rhino thay đổi kích thước hình ảnh, nó không sử dụng bất kỳ loại lấy mẫu hoặc lọc hai tuyến tính nào. Nó là một sự kéo dài hoặc co lại tuyến tính đường thẳng . Vì vậy, nếu sự khác biệt giữa kích thước ban đầu và kích thước đã điều chỉnh càng lớn thì kết quả sẽ càng sai.

Lấy ví dụ 129 x 129 ở trên. Rhino về cơ bản phải tăng gấp đôi kích thước của hình ảnh dẫn đến mỗi pixel bây giờ là một khối 2 x 2 trong kết quả cuối cùng.

Đây là nguyên nhân chính gây ra hiện tượng pixel hóa trong hiển thị hình ảnh đính kèm.

Tuy nhiên, kết quả thậm chí có thể trông tệ hơn nếu nó đã cố gắng thay đổi kích thước thành 128 x 128. Việc phân dải thường có thể xảy ra do toàn bộ hàng hoặc cột pixel đã bị xóa.
Rhino sẽ không giảm kích thước bất cứ thứ gì trừ khi nó hoàn toàn phải do giới hạn phần cứng.

Khuyến nghị cơ bản

Luôn giữ hình ảnh gần với giá trị nhỏ hơn lũy thừa của 2 càng tốt. Và nếu bạn có thể, hãy cố gắng biến chúng thành lũy thừa của 2.

Với phần cứng video ngày nay, hai giới hạn mà chúng ta thấy nhiều nhất là 4096 x 4096 và 8192 x 8192. Vì vậy, nếu bạn đang tạo kết cấu lớn, đó là những kích thước mà bạn nên giới hạn trình tạo hình ảnh của mình.

Làm cho chúng lớn hơn bất kỳ là lãng phí thời gian, không gian và sẽ khiến Rhino cung cấp rất nhiều thông tin pixel tốt.

Biên dịch bởi Thanh Bình – Pacisoft.com.vn