Hiểu về nghệ thuật pixel trong Unity 2d


9

Tôi đang đấu tranh để hiểu những điều cơ bản đằng sau nghệ thuật pixel trong Unity.

Tôi hiểu đơn vị là gì và nếu tôi vẽ sprite của mình với 16x16 pixel, tôi nên đặt PPU thành 16.

Lấy ví dụ thung lũng stardew, trong hình ảnh bên dưới, bạn có thể thấy rõ rằng người chơi không phải là hình vuông. Người tạo ra trò chơi cho biết ông đã tạo ra mọi thứ trong 16x16, nhưng sau đó làm thế nào có quá nhiều chi tiết trong các nhân vật? Chắc chắn bạn không vá nhiều hình vuông 16x16 lại với nhau để tạo thành một nhân vật (như bạn làm với một tilemap)?

nhập mô tả hình ảnh ở đây

Cách "phổ biến" để đối phó với những thứ không vuông, như các ký tự trong ảnh. Bạn chỉ cần tạo 16x32 sprite và đặt PPU thành 16? Sẽ không làm cho nó trông hơi kỳ lạ bên cạnh các sprite 16x16? Bạn thường chọn một kích thước (tức là 16, 32, 64) Và sau đó bám vào đó cho mọi thứ trong trò chơi?

Vấn đề trực quan mà tôi đã thấy là vấn đề này, trong đó một sprite 32x32 trông rất lạc lõng (quá sắc nét) bên cạnh một sprite 16x16.

nhập mô tả hình ảnh ở đây

Vì vậy, tôi tự hỏi, làm thế nào để bạn trộn các kích thước trong khi có hiệu ứng này trong đó một hình ảnh trông sắc nét hơn nhiều so với hình ảnh khác. Ví dụ, nếu tôi muốn một ký tự là 16x32 hoặc bất kỳ giá trị không vuông nào, thì các ô của tôi là 16x16


2
PPU không liên quan gì đến kích thước kết cấu của các họa tiết của bạn, nó chỉ quyết định tỷ lệ mà chúng được hiển thị so với hệ tọa độ thế giới của bạn. Hai sprite có cùng PPU sẽ hiển thị cùng mật độ pixel (nghĩa là kích thước hiển thị của từng khối pixel sẽ giống nhau từ sprite này sang sprite khác khi xem trực tiếp), ngay cả khi hình ảnh có kích thước hoàn toàn khác nhau. Vì vậy, tôi không chắc ý của bạn là "sẽ không khiến nó trông hơi kỳ lạ" - bạn có thể giải thích chính xác vấn đề hình ảnh mà bạn quan sát được không?
DMGregory

@DMGregory Chắc chắn, hãy để tôi tải lên một hình ảnh
Green_qaue

1
Hiệu ứng hiển thị trong ảnh chụp màn hình ví dụ của bạn sẽ xảy ra nếu bạn đặt hai hình ảnh cùng với các giá trị PPU khác nhau (hoặc nếu một hình ảnh có pixel của nó tăng gấp đôi / gấp ba trong chính kết cấu hoặc bạn đã áp dụng tỷ lệ cho một hình ảnh chứ không phải hình ảnh khác) . Nếu bạn tuân theo một giá trị PPU nhất quán và không chia tỷ lệ các họa tiết của mình thì bạn sẽ giữ mật độ điểm ảnh nhất quán
DMGregory

@DMGregory Vì vậy, nếu các ô của tôi là 16x16 và tôi muốn một ký tự có nhiều chi tiết hơn (như bạn có thể thấy ký tự 16x16 ở trên có rất ít chi tiết), ví dụ 32x16, tôi nên tạo một sprite 32x16 và giữ PPU ở mức 16 (giống nhau như gạch)?. Hoặc ví dụ nếu tôi muốn một con voi, thì có lẽ đó phải là 64x128, sau đó tôi có đặt nó thành 16 PPU không?
Green_qaue

1
PPU là số lượng pixel phù hợp trong một đơn vị thế giới. Nếu bạn luôn muốn các pixel của mình có cùng kích thước, thì bạn phải luôn sử dụng một giá trị PPU nhất quán. (Điều đó có nghĩa là một cây bụi 16x16 và một con voi 64x128 ở cả 16 PPU đều sẽ hiển thị cùng mật độ pixel và con voi sẽ bao phủ diện tích màn hình nhiều hơn 32 lần so với cây bụi). Đó có phải là tất cả những gì bạn đã tự hỏi về?
DMGregory

Câu trả lời:


15

Tóm tắt các điểm ở trên, điều quan trọng đối với hai tác phẩm nghệ thuật pixel phù hợp là mật độ pixel của chúng (texels trên mỗi diện tích màn hình / đơn vị thế giới) là như nhau.

Lấy một số họa tiết từ Thung lũng Stardew làm ví dụ, chúng ta có thể thấy rằng mặc dù các họa tiết có kích thước kết cấu khác nhau, chúng vẫn khớp với nhau trên một lưới nhất quán vì mỗi pixel được vẽ cùng kích thước.

Ví dụ hiển thị hai họa tiết có kích thước khác nhau ở cùng mật độ pixel.

Nếu chúng ta nghĩ về kích thước của nhà máy là một ô / một đơn vị không gian thế giới, chúng ta có thể thấy đơn vị này trải dài 16 pixel theo chiều ngang và chiều dọc. Ký tự, có chiều cao gấp đôi cây, cũng bao gồm gấp đôi số lượng gạch / đơn vị thế giới, do đó mật độ pixel vẫn giữ nguyên ở mức 16 pixel trên mỗi đơn vị thế giới.

Đối với Unity cụ thể, nó hiển thị điều này cho bạn dưới dạng cài đặt Pixels Per Unit trong trình kiểm tra cài đặt nhập Sprite . Miễn là bạn sử dụng một số nhất quán ở đây cho tất cả các họa tiết của mình, Unity sẽ tự động xử lý vẽ chúng ở kích thước phù hợp trong thế giới của bạn để giữ mật độ pixel này - ngay cả khi chúng có kích thước kỳ lạ và không phải là hai hoặc chính xác bội số kích thước gạch của bạn. Vì vậy, trong ví dụ này, cả cây bụi và nhân vật và mọi thứ khác trong trò chơi sẽ sử dụng PPU OF 16.

Con số chính xác bạn chọn không phải là vấn đề lớn, đó là sự nhất quán quan trọng nhất. Nếu chúng ta muốn mỗi ô trải rộng 2 đơn vị thế giới, để khi chỉnh sửa cấp độ, chúng ta có thể dễ dàng chụp vào các góc của ô (số lẻ) và trung tâm ô (số chẵn), thì chúng ta sẽ sử dụng PPU 8 thay cho tất cả các họa tiết của chúng ta.

Đừng bỏ nó xuống quá thấp. Bạn sẽ thấy một số bài viết ngoài đó đề xuất cài đặt PPU là 1, có nghĩa là một sprite 256 pixel sẽ trải rộng 256 đơn vị thế giới. Mặc dù điều này có vẻ không đáng báo động, nhưng các hệ thống như vật lý được điều chỉnh giả định rằng phần lớn lối chơi của bạn sẽ diễn ra ở quy mô từ mười đến mười đơn vị, và làm cho quy mô của bạn quá lớn có thể khiến chúng hoạt động kém. Cố gắng chọn một số pixel có ý nghĩa trong trò chơi của bạn, như chiều rộng của nhân vật hoặc ô của bạn. Điều này cũng sẽ giúp toán học của bạn dễ dàng hơn trong việc lập trình & thiết kế cấp độ (ví dụ: "Tôi muốn nhân vật này gạch ngang 3 ô đúng, vì vậy đó x + 3.0f")

Lưu ý rằng việc chia tỷ lệ sprite, hình ảnh UI hoặc cha mẹ của nó bằng các thuộc tính biến đổi sẽ làm biến dạng chúng khỏi mật độ pixel nhất quán này, vì vậy hãy cẩn thận với các thuộc tính tỷ lệ và giữ cho hầu hết hoặc tất cả cảnh của bạn ở tỷ lệ 1.0 để đơn giản.

Một lưu ý cuối cùng là không ai trong số này xác định các sprite của bạn thực sự lớn như thế nào trên màn hình của bạn - điều đó được xác định bởi kích thước của cửa sổ / màn hình trò chơi của bạn và kích thước / foV / góc của máy ảnh của bạn. Để pixel 2D hoàn hảo, bạn cũng cần đảm bảo rằng chiều cao của cửa sổ của bạn là bội số của số pixel pixel mà máy ảnh của bạn nhìn thấy (chiều cao hình ảnh của camera x 2 x PPU)

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.