Sự khác biệt giữa Sprite và Texture là gì?


27

Tôi có một nhiệm vụ do Đại học và nhiệm vụ của tôi là thảo luận về kết cấu được sử dụng trong các trò chơi video và cách chúng phát triển.

Câu hỏi chính của tôi là, sự khác biệt cơ bản giữa việc sử dụng một sprite, hoặc sử dụng các phương pháp kết cấu khác là gì?

Sau khi thực hiện một nghiên cứu nhỏ, tôi dường như nghiêng về việc Sprites lưu trữ hình ảnh trong một tệp duy nhất và có thể được sử dụng cho hoạt hình, v.v. và thường được sử dụng với các trò chơi video cũ hơn, thường sử dụng các họa tiết như tất cả các hình ảnh trò chơi của chúng. Bây giờ, với các trò chơi hiện đại, các họa tiết tôi tin rằng có xu hướng ít được sử dụng hơn vì những tiến bộ công nghệ và các kết cấu khác có sẵn như bản đồ vết sưng. Mặc dù các sprite vẫn được sử dụng ngày nay để chứa các tính năng như thanh sức khỏe hoặc kết cấu đường dài.

Nhưng những lợi thế chính của việc sử dụng kết cấu, trên các họa tiết là gì?



5
Một là đồ uống và thứ hai thì không (Tôi xin lỗi vì trò đùa này)
CAD97

Câu trả lời:


37

Vào cuối ngày, các họa tiết và kết cấu chỉ là hình ảnh - các khối dữ liệu màu raster (mặc dù đôi khi chúng ta đẩy các giới hạn một chút để đưa dữ liệu không phải hình ảnh vào chúng). Sự khác biệt phần lớn là cách chúng ta sử dụng chúng.

Chúng ta thường gọi một hình ảnh (hoặc một phần của hình ảnh chứa nhiều mảnh riêng biệt) là "sprite" nếu mục đích kết xuất dự định của nó là được vẽ thẳng vào lưới 2D của màn hình, mà không bị biến dạng phối cảnh. Vì vậy, những gì bạn nhìn thấy trong trò chơi đang chạy về cơ bản là những gì bạn nhìn thấy trong chính tệp hình ảnh (ngoài hiệu ứng đổi màu / bảng màu / hiệu ứng trong suốt). Điều này áp dụng cho các ô nền và các ký tự / đối tượng tương tác trong trò chơi 2D, thẻ "bảng quảng cáo" như các hạt và kiểu kết xuất cây và cây bụi cũ hơn, cũng như cho các thành phần và biểu tượng giao diện người dùng trong trò chơi 3D.

Ngược lại, nếu chúng ta đang sử dụng một hình ảnh để cung cấp chi tiết bề mặt cho đa giác của một đối tượng 3D có thể được vẽ theo phối cảnh, chúng ta thường gọi hình ảnh đó là "kết cấu". Cái tên đó đã được sử dụng cho các mục đích sử dụng dữ liệu hình ảnh khác để điều chỉnh kết xuất một thứ khác, ngay cả khi chúng không còn về kết cấu theo nghĩa bạn có thể cảm nhận bằng đầu ngón tay - những thứ như phản xạ, bản đồ biến dạng, lớp phủ, mặt nạ hoặc bất kỳ mục đích sử dụng chung của hình ảnh mà chúng tôi không cảm thấy muốn đặt tên cụ thể hơn có xu hướng bị gộp lại dưới "kết cấu" trong danh pháp lỏng lẻo của chúng tôi.

Điều đó làm cho giới hạn giữa hai mờ và không đặc biệt nghiêm ngặt. Nếu tôi có một hình ảnh chứa một chuỗi các đám cháy và khói để sử dụng trong việc vẽ các hạt biển quảng cáo cho hiệu ứng nổ, tôi có thể gọi đó là "spritesheet" hoặc "kết cấu sách lật" có thể hoán đổi cho nhau. Hoặc nếu tôi có một hình ảnh lát bao gồm tất cả các ô nền cho trò chơi 2D, tôi có thể gọi đó là "tập bản đồ kết cấu" ngày nay, bằng cách tương tự với kết cấu bản đồ được phát triển cho trò chơi 3D, mặc dù dữ liệu và cách sử dụng trong trò chơi 2D của tôi không thể phân biệt được từ những gì người khác sẽ gọi là một spritesheet. Nếu tôi có một hình chữ nhật hình học có mục đích hiển thị một hình ảnh duy nhất lên màn hình, tôi có thể gọi đó là "hình tứ giác" hoặc "sprite" tùy thuộc vào những gì tôi muốn nhấn mạnh về việc sử dụng nó.

(Lưu ý ở đây trong ví dụ cuối cùng này là "sprite" là viết tắt của cả phân đoạn hình ảnh nguồn trong tài sản trò chơi của chúng tôi và ví dụ về một thực thể trò chơi được sử dụng phân đoạn hình ảnh này - một cách khác chúng tôi sử dụng thuật ngữ này hơi không nhất quán)

Bạn sẽ tìm thấy một số công cụ và thư viện mã hóa sự khác biệt này trong việc thể hiện ý định thành danh pháp riêng của họ. Chẳng hạn, trong Unity, bạn có thể chọn nhập nội dung hình ảnh dưới dạng "Sprite" - điều này cho phép thêm một bộ tùy chọn thường được yêu cầu cho hình ảnh UI hoặc tài sản trò chơi 2D, như cắt và đóng gói spritesheet và khả năng tham chiếu các phần của hình ảnh như các thực thể riêng biệt trong thiết lập cảnh và đối tượng của bạn. Trong những trường hợp này, "Sprite" thường có nghĩa là "một hình ảnh (kết cấu) cộng với siêu dữ liệu " - nhưng nó vẫn được hiển thị giống như các kết cấu thông thường dưới mui xe. Việc đóng gói thêm là một sự tiện lợi, vì vậy chúng tôi không cần phải xử lý vi phạm UV và giống như mọi nơi chúng tôi muốn sử dụng hình ảnh;


"Hoạ tiết" thường bao gồm hoặc cho phép các pixel trong suốt? Tôi sẽ nghĩ về một vật thể hoạt động như một bề mặt phẳng được ánh xạ pixel chứa các pixel trong suốt dưới dạng "sprite" cho dù bề mặt có vuông góc với trục camera hay không.
supercat

2
Họ chắc chắn có thể, mà không từ bỏ tiêu đề "kết cấu" của họ. Người ta thường thấy mọi người đề cập đến một hình ảnh để kết xuất, giả sử, lá hoặc hàng rào liên kết chuỗi, như một "kết cấu tán lá" hoặc "kết cấu hàng rào" ngay cả khi chúng được hiển thị với độ trong suốt của phép thử alpha / hòa sắc hoặc pha trộn alpha . Chúng ta cũng có thể gọi trường hợp lá là "tán lá" nếu nó được hiển thị dưới dạng biển quảng cáo đối diện với máy ảnh, nhưng sẽ không bình thường khi áp dụng tên sprite nếu được sử dụng trên hình học phối cảnh như hàng rào 3D.
DMGregory

Khi kết xuất các đối tượng được ánh xạ kết cấu mờ, một công cụ kết xuất không cần phải lo lắng về việc bên trong chúng sẽ xuất hiện như thế nào vì bề mặt mờ sẽ ẩn bên trong. Tôi nghĩ rằng một cái gì đó như hàng rào cây hoặc chuỗi liên kết sẽ được thể hiện tốt nhất bằng cách thực hiện các phần mờ đục và sau đó hiển thị các phần trong suốt như các bề mặt trong suốt riêng biệt. Mặc dù chúng có thể không khớp với thứ mà một số người sẽ gọi là "họa tiết" nếu chúng không đối diện với máy ảnh, chúng cũng sẽ không giống như các vật thể "bình thường".
supercat

Đó thực sự là cách nó được thực hiện. Hình dạng cho các cột và thân hàng rào được hiển thị trong đường chuyền mờ đục, và sau đó hình học cho các hàng rào và tán lá / cành cây sẽ được hiển thị trong một lần kiểm tra alpha hoặc pha trộn alpha sau đó.
DMGregory

1
Tôi thường nghe "kết cấu trong suốt" hoặc "kết cấu alpha" / "kết cấu với alpha" - đôi khi có thể là "kết cấu bị cắt" / "kết cấu bị cắt" nếu đó là độ trong suốt được kiểm tra cứng / alpha.
DMGregory

7

Một sprite là một bản tường thuật từ lịch sử của trò chơi máy tính. Hãy suy nghĩ Ataris 8 bit xung quanh ca. 1980. Một hình ảnh nhỏ, thường có bitmask bao phủ (hoặc màu "trong suốt" đặc biệt) có vị trí trên màn hình và được kết hợp trên màn hình theo một cách cụ thể. Với các lỗ có "lỗ" trong sprite, theo bản đồ bảo hiểm. Thông thường theo cách "chỉ hoạt động" và theo cách dễ dàng cho phép ảo tưởng các thứ di chuyển xung quanh, thường bằng cách lưu và khôi phục các pixel màn hình gốc bị ghi đè.

Trước đây, các sprite là một tính năng phần cứng trên máy tính, trước đây bạn có thể vẽ / gỡ chúng với nội dung màn hình được lưu tự động, trước đây bạn chỉ có thể có một số lượng rất hạn chế (và không chồng chéo, yay!) và được sử dụng là chúng khá nhỏ (như 16x16) và bị giới hạn.

Con trỏ chuột là thứ gần gũi nhất với sprite ngày nay (và trước đây nó một sprite thực tế trên một số hệ thống cho đến khoảng ~ 10-15 năm trước).

Ngày nay, không có thứ đó thực sự tồn tại, nhưng từ này vẫn còn. Một sprite về cơ bản là một hình ảnh 2D nhỏ mà bạn vẽ (tổng hợp) ở đâu đó. Thông thường bằng cách vẽ một hình tứ giác nhỏ.

Mặt khác, một kết cấu là khái niệm về một hình ảnh có thể đọc được sử dụng trong các API đồ họa hiện đại hơn một chút. Hay chính xác hơn là một vùng bộ nhớ ("bộ đệm" theo các API hiện đại) với một số dữ liệu bổ sung có liên quan như kích thước, có thể được lấy mẫu từ một số phương tiện. Thông thường, nhưng không nhất thiết phải bởi một shader chạy trên một đơn vị xử lý đồ họa. Thông thường, nhưng không nhất thiết, với tọa độ chuẩn hóa, và thường nhưng không nhất thiết phải lọc (và mipmapping, và một số chế độ viền cụ thể, và, và, và ...).

Do đó, một kết cấu có thể là nguồn dữ liệu bạn sử dụng để vẽ một sprite.


3
Các họa tiết phù hợp được phủ lên trong phần cứng, do đó dữ liệu video trong bộ nhớ không thay đổi và thậm chí không phải sử dụng cùng chế độ (ví dụ: trên C64, bạn có thể có các hình ảnh bitmap trên nền văn bản). Các đối tượng được kết xuất bằng cách lưu bitmap và thay thế dữ liệu được gọi là BOB (Blitter OBjects).
Simon Richter

1
@SimonRichter: Tôi không quen với C64, được thực hiện như một món đồ chơi, nhưng Amiga cũng có những thứ đó, 8 trong số chúng nếu tôi nhớ chính xác. Không chắc nó hoạt động như thế nào ở cấp độ phần cứng, nhưng cũng có thể là lớp phủ trực tiếp (dường như có khả năng). Trên ST, các sprite A00D/ AOOCopcode chắc chắn thuộc loại sửa đổi rút / rút lại bộ đệm khung. BOB, vâng, điều đó cũng tồn tại, điều Amiga điển hình. Đó là điều gần nhất với kết cấu ngày nay, tôi đoán (mọi kích thước, tải lên bộ xử lý đồ họa một lần, vẽ nhiều lần).
Damon

4

Đó là một so sánh táo và cam. Một kết cấu chỉ là một hình ảnh, trong khi một sprite là một hình ảnh cách nó được sử dụng.

Chúng tôi vẫn sử dụng các họa tiết cho các trò chơi 2d và chúng hiển thị trong các trò chơi 3d trong các hiệu ứng hạt. Ngày nay, các sprite thường đề cập đến một loại hình tứ giác có kết cấu nhất định, hoặc (hiếm khi, tôi nghĩ) một hình tam giác duy nhất. Ngay cả các thành phần UI thường vẫn là các quads có kết cấu - mà tôi sẽ gọi là các họa tiết.

Nó đã từng là trường hợp các sprite được tải sẵn vào bộ nhớ và được làm mờ (sao chép theo byte-byte) cho các điểm trên màn hình (nghĩa đen là bộ nhớ màn hình), giống như tem. Theo một cách nào đó, chúng tôi vẫn làm điều đó. Đối với hình ảnh động sprite, chúng tôi thường thay đổi tọa độ mẫu của kết cấu nguồn để sao chép các phân đoạn từ kết cấu sẽ được hiển thị trên hình tứ giác. Các hiệu ứng đổ bóng, chẳng hạn như ánh xạ vết, lấy mẫu từ kết cấu theo cùng một cách và do đó vẫn có thể sử dụng được, ví dụ, hiệu ứng phát sáng trong các họa tiết.

Cụ thể hơn với các trò chơi 2d, đó là một sự lựa chọn phong cách. Chẳng hạn, người ta có thể sáng tác các nhân vật được vẽ hoặc vẽ bằng tay trong một trò chơi bằng cách sử dụng các họa tiết. Các trò chơi South Park sẽ là một ví dụ về điều đó, về mặt kỹ thuật.

Vì vậy, bạn thực sự không thể sử dụng chỉ một kết cấu thay cho sprite.


3

Đây là một câu trả lời đơn giản và ngắn gọn. Tôi thường nghĩ về sprite như toàn bộ đối tượng bên cạnh bất kỳ chức năng và kết cấu nào đã áp dụng cho nó. Về kết cấu, tôi khá coi nó chỉ là một hình ảnh có thể được áp dụng cho một cái gì đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.