Tại sao công cụ trò chơi chuyển đổi mô hình thành hình tam giác thay vì sử dụng hình tứ giác?


47

Tôi đã làm việc sử dụng Maya cho hoạt hình và nhiều dự án định hướng phim hơn tuy nhiên tôi cũng đang tập trung vào nghiên cứu về phát triển trò chơi video. Dù sao, tôi đã nói chuyện với một trong những giáo sư của mình và chúng tôi không thể hiểu tại sao tất cả các công cụ trò chơi (mà tôi biết) chuyển đổi thành hình tam giác.

Bất cứ ai cũng biết tại sao các công cụ trò chơi chuyển đổi thành hình tam giác so với việc để các mô hình là đa giác bốn mặt? Ngoài ra những ưu và nhược điểm (nếu có) của việc này là gì?


1
Hơi liên quan, NVidia NV1 đã sử dụng ánh xạ kết cấu bậc hai (sử dụng các hình tứ giác), thay vì hình tam giác / đa giác. Đó không phải là hit lớn, để nói rằng ít nhất. Xem en.wikipedia.org/wiki/NV1 .
Macke

5
@Macke: Phương trình bậc hai như trong "phương trình bậc hai", không phải bậc hai như trong "tứ giác". Nó không sử dụng quads mà là một đường cong bậc hai được xác định bởi 9 điểm. stason.org/TULARC/pc/3d-graphics-cards-faq/ triệt

9
+1 cho câu hỏi của bạn nhưng là -1 lớn cho giáo sư của bạn. Đây là những thứ cơ bản mà anh ta nên biết cũng như anh ta biết về mu bàn tay của chính mình, và một dấu hiệu cho thấy anh ta hơi mất liên lạc với những phát triển trong 15 năm qua.
Maximus Minimus

1
Vâng, trong sự bảo vệ giáo sư của tôi, anh ấy không ở trong lĩnh vực phát triển trò chơi, anh ấy giống như một nhà làm phim hoạt hình / người mẫu. Anh ta biết rằng nó đã chuyển đổi thành tris nhưng không biết lý do toán học là tại sao để kết xuất. Nhưng vâng, có lẽ anh ta nên biết.
Cấp

Câu trả lời:


56

Điểm mấu chốt là Triangle Rasterization, đó là cách máy tính kết xuất các đối tượng lên màn hình. Mặc dù những người khác nói điều đó hùng hồn hơn tôi:

Tất cả các vật thể 3D mà chúng ta thấy trên màn hình máy tính thực sự được làm từ các vật thể hình học nhỏ bé thường được gọi là nguyên thủy. Tứ giác, tam giác, n-gon v.v ... là ví dụ của nguyên thủy. Chúng tôi sẽ tập trung vào hình tam giác chủ yếu vì một lý do chính: mọi đối tượng có thể được chia thành hình tam giác nhưng một hình tam giác không thể được chia thành bất kỳ thứ gì khác ngoài hình tam giác. Bởi vì điều này, vẽ hình tam giác đơn giản hơn nhiều so với vẽ đa giác có thứ tự cao hơn; ít việc để giải quyết. Đây là lý do tại sao những hình tam giác đó thường được sử dụng trong đồ họa máy tính.

Nhấn mạnh mỏ. Nguồn: http://www.devmaster.net/articles/software-rendering/part3.php


2
Tuyệt vời! Điều đó rất có ý nghĩa khi bạn nghĩ về nó. Cảm ơn câu trả lời!
Cấp

1
Trong OpenGL ES, như một phần trong nỗ lực đơn giản hóa API, các hình tứ giác và đa giác thậm chí không được hỗ trợ. Vì vậy, một lý do thực tế để sử dụng hình tam giác là vì bạn không có lựa chọn nào khác. Nhưng lý do một API được sắp xếp hợp lý như ES tránh các loại nguyên thủy khác là do các lý do được nêu trong câu trả lời này và các câu trả lời khác.
Suboptimus

5
+1 Bởi vì là một câu trả lời tôi có thể sử dụng một cách an toàn làm tài liệu tham khảo khi ai đó hỏi tôi điều tương tự, với dấu trang của tôi. Chỉ nói rằng, tôi luôn nghĩ rằng lý do hình tam giác là nguyên thủy nhỏ nhất có thể là bởi vì với sự thiếu chính xác của số học dấu phẩy, tris là đa giác an toàn duy nhất bạn có thể đảm bảo là phẳng trong mọi trường hợp, với các hình tứ giác bạn không thể đảm bảo chúng sẽ luôn luôn phẳng. Phần mềm mô hình hóa có thể hiển thị các đối tượng là hình tứ giác hoặc n-gon để thuận tiện cho trình tạo mô hình nhưng áp dụng các phép biến đổi / kết xuất các đa giác chia thành hai hoặc nhiều hình tam giác.
Hatoru Hansou

56

Hình tam giác có nhiều đặc tính giúp chúng dễ dàng hơn và do đó nhanh hơn để vẽ.

Bốn điểm trở lên có thể không nằm trên cùng một mặt phẳng, nhưng ba điểm luôn luôn là (bỏ qua các trường hợp suy biến). Điều này có đặc tính thú vị là các giá trị vô hướng thay đổi tuyến tính trên bề mặt của tam giác. Ngay cả khi hình tam giác được chiếu trên màn hình, các giá trị vô hướng vẫn thay đổi tuyến tính theo x '/ z và y' / z.

Đến lượt nó, điều này có nghĩa là hầu hết nếu không phải tất cả những gì cần thiết để tạo bóng râm, bản đồ kết cấu và bộ lọc độ sâu, một tam giác có thể được tính bằng phép nội suy tuyến tính có thể được thực hiện cực nhanh trong phần cứng chuyên dụng.

tl; dr: hình tam giác là nguyên thủy đơn giản nhất, vì vậy thuật toán xử lý hình tam giác có thể được tối ưu hóa mạnh mẽ.


11
+1. Tôi nghĩ rằng một hình tam giác luôn phẳng là một trong những lý do chính. Đa giác không phẳng làm cho công cụ phức tạp hơn nhiều.
bummzack

2
+1. Tôi nghĩ rằng hình tam giác là đa giác duy nhất bạn có thể đảm bảo là mặt phẳng là lý do kỹ thuật chính để tạo ra apis và phần cứng yêu cầu hình tam giác. Phần mềm mô hình hóa có thể hiển thị các mắt lưới như một hình tứ giác thuận tiện cho người tạo mô hình.
Hatoru Hansou

1
Một phép so sánh không phẳng đẹp mà tôi sử dụng ... Một chiếc ghế ba chân có thể đứng trên mặt đất chỉ một cách, chân của nó giống như các góc của một hình tam giác. Nhưng một chiếc ghế bốn chân có thể đứng trên mặt đất theo hai cách và lắc lư từ vị trí này sang vị trí khác nếu một chân ngắn hơn những người khác.
ChrisC

Tôi tò mò; làm thế nào có thể một tam giác luôn luôn chỉ trên cùng một mặt phẳng? Làm thế nào để bạn thực sự vẽ một hình cầu sau đó? Ít nhất một trong những điểm phải được dịch trên một mặt phẳng khác, nếu không bạn sẽ có được một bề mặt phẳng.
rataplan

@newbiez Ba đỉnh luôn xác định một mặt phẳng. Một hình cầu được làm bằng các hình tam giác khác nhau; hai hình tam giác liền kề đại diện cho một mảng trên bề mặt của hình cầu có chung hai đỉnh, nhưng chúng không nằm trên cùng một mặt phẳng. Hình ảnh này có thể làm cho mọi thứ rõ ràng hơn: cse.csusb.edu/tongyu/cifts/cs420/images/icos.jpg
ggambett

8

Ba điểm (một hình tam giác) LUÔN LUÔN xác định một mặt phẳng. Nói cách khác, với ba điểm bất kỳ, bạn luôn có thể tạo một mặt phẳng có thể cắt qua cả ba điểm. Tuy nhiên, điều tương tự không phải lúc nào cũng đúng với bốn điểm. Bạn có thể có bốn điểm trên một mặt phẳng, nhưng bạn cũng có thể có bốn điểm không nằm trên một mặt phẳng.


2
Trên thực tế, 4 điểm ngẫu nhiên có nhiều khả năng không nằm trên một mặt phẳng, do đó bạn sẽ phải thực hiện tam giác.
ChrisF

Điều này chỉ đúng nếu các điểm không trùng khớp.
thịt

1
Ngay cả khi các điểm trùng nhau, chúng là đồng phẳng trên một số lượng vô hạn các mặt phẳng.
3Dave

Là coplanar không phải LUÔN LUÔN xác định một mặt phẳng phẳng .
sam hocevar

6

Không phải "công cụ trò chơi" làm được điều này - tất cả phần mềm 3D bạn sử dụng đều thực hiện việc này. Nó chỉ không cho bạn biết về nó, và giáo sư của bạn có vẻ khá kém nếu anh ta không biết điều này. Chúng tồn tại trong bộ nhớ của máy tính ngay cả khi phần mềm đang ẩn chúng khỏi bạn. Tất cả các chương trình 3D có một tùy chọn sẽ hiển thị các hình tam giác. Họ cũng sẽ có một tùy chọn chia chúng thành các cạnh có thể chỉnh sửa, vì vậy bạn có thể chơi với chúng. Nhưng họ luôn ở đó để bắt đầu và thật ngây thơ khi giáo sư của bạn dạy môn này và vẫn tự hỏi "tam giác để làm gì".

Một hình tam giác là cách duy nhất để sắp xếp các động từ và đảm bảo một bề mặt phẳng. Khi bạn có một hình tứ giác, bạn có thể sắp xếp các câu theo cách mà nó phải uốn cong. Nhưng nó đã được tạo thành từ các hình tam giác và đó là những hình tam giác cho phép uốn cong.


3

Một hình tam giác là nguyên thủy đơn giản nhất có thể được mô tả trong sự cô lập vì nó có ba điểm, ít hơn so với không mô tả một bề mặt trong 3D.

Bởi vì một hình tam giác có thể được xem xét trong sự cô lập, có thể tạo ra một đoạn mã hoặc silicon chỉ có khả năng hiển thị một hình tam giác duy nhất, thông qua sức mạnh của sự lặp lại có thể hiển thị bất kỳ bề mặt nào.

Do đó, hệ thống máy tính đầu tiên thành công trong việc hiển thị "mọi bề mặt" đều tự nhiên làm như vậy bằng cách hiển thị nhiều hình tam giác một cách độc lập.

Nếu người ta nghĩ tam giác và tứ giác là "nguyên thủy" (nghĩa là các bit hình học hoàn toàn bị cô lập không có ngữ cảnh) thì tam giác là nguyên thủy hơn, và do đó nó sẽ có xu hướng "chiến thắng".

Tuy nhiên, một khi các máy tính ở cấp độ giải trí vượt quá một mức độ tinh vi nhất định trong những năm 1980, thì việc đơn giản xem xét "nguyên thủy" trong sự cô lập trở nên ít quan trọng hơn. Nếu đồ họa được sản xuất hàng loạt, thì các nền kinh tế quy mô sẽ ưu tiên các nhóm xử lý các đỉnh liên quan, vì chúng thích lắp ráp một trăm chiếc xe gần giống nhau cùng một lúc.

Đây là lý do tại sao vào những năm 1980, các bộ phim đã sử dụng "tứ giác", đó là một cách gọi sai bởi vì nó đề cập đến một lưới các đỉnh 2D trong không gian 3D chứ không phải là một hình tứ giác bị cô lập.

Sự thay đổi tương tự từ hình tam giác sang "hình tứ giác" chưa xảy ra trong lĩnh vực giải trí tương tác, nhưng nó có khả năng xảy ra, khá sớm, và vì những lý do tương tự đã xảy ra trong kinh doanh phim ảnh.


2

Chỉ có một cách để tam giác một tam giác so với 'n - 2' cho một đa giác hai mặt. Vì vậy, hình tam giác cuối cùng là cách ít mơ hồ nhất để xác định hình dạng đa diện. Ngoài ra, như các áp phích khác đã chỉ ra, có rất nhiều cách để tăng tốc độ raster tam giác (chứ không phải quad hoặc cao hơn) (hằng số z là một trong những mục yêu thích của tôi). Ngoài ra, việc tối ưu hóa các phép thử giao cắt tam giác tia dễ dàng hơn so với các thử nghiệm giao nhau đa giác tùy ý. Trong thực tế, nhiều thao tác trên đa giác n mặt có lợi từ việc có một đại diện tam giác trong tay. Điều đó không có nghĩa là các biểu diễn đa giác hai mặt là 'xấu' - chúng rất hữu ích nhưng cuối cùng, bạn sẽ muốn làm việc với các hình tam giác cho nhiều hoạt động lưới.


2

Miễn là tam giác được xác định bởi ba đỉnh không colinear (đọc: không có góc nào là chính xác Pi), thì các đỉnh xác định một mặt phẳng duy nhất.

Một quad là, tất nhiên được xác định bởi bốn đỉnh. Hoàn toàn có thể cho các đỉnh đó không phải là đồng phẳng. Trong trường hợp đó, hình tứ giác của bạn thực sự sẽ là hai hình tam giác chia cho một đường chéo trên hình tứ giác. Đó là hai mặt phẳng, hai bộ quy tắc bề mặt, v.v.

Mọi công cụ lập mô hình có sẵn, mọi thuật toán để tạo kết cấu, chiếu sáng, v.v ... đều cho rằng một mô hình được tạo từ các mặt phẳng và mọi công thức chúng ta có (các sản phẩm chéo để tính toán thông thường là công cụ đầu tiên chúng ta có) sử dụng bộ dữ liệu đầu vào tối thiểu tuyệt đối - ba các đỉnh xác định một mặt phẳng và mặt phẳng là thứ chúng ta cần để làm tất cả những thứ ưa thích.

Bạn chắc chắn có thể viết một công cụ để làm việc với quads, nhưng bạn sẽ thấy mình bỏ qua đỉnh thứ tư trong mọi trường hợp, ngoại trừ khi bạn (thường xuyên) sẽ cần đảm bảo rằng nó đồng bộ với ba phần còn lại xác định quad. Và, giải pháp hợp lý nhất cho trường hợp không phải là coplanar sẽ là chia tứ giác thành hai hình tam giác. Vì vậy, tại sao không làm điều đó để bắt đầu?

Điều gì trên trái đất sẽ là điểm làm việc với Quads?

Nếu bạn muốn một hình tứ giác, đặt hai hình tam giác lại với nhau.


2

Nếu chúng ta giả sử rằng việc đạt được 4 điểm là đồng phẳng không phải là vấn đề (đó là, như những người khác đã chỉ ra, nhưng hãy chịu đựng tôi), thì bạn sẽ thấy rằng việc tạo ra một hình thang tùy ý (đó là hình tứ giác thường sẽ trông như thế nào khi được chuyển thành không gian màn hình) không khác biệt nhiều so với hiển thị một hình tam giác - trên thực tế, nó hoạt động khá giống nhau một khi bạn thực hiện cắt vì điều đó có thể giới thiệu thêm các đỉnh. (Ít nhất là trong một mô hình phần mềm - phần cứng có thể có cách thức đơn giản hơn để thực hiện việc cắt.)

Do đó, vấn đề còn lại là một trong những hiệu quả đại diện. - bạn có thể dễ dàng biểu diễn một hình tứ giác có 2 hình tam giác và không có bất kỳ đỉnh phụ nào nếu bạn sử dụng một dải tam giác (3 câu cho tam giác thứ 1, sau đó là một đỉnh phụ cho tam giác thứ 2). Mặt khác, nếu bạn cố gắng và biểu diễn một hình tam giác với một hình tứ giác, bạn cần sử dụng 4 đỉnh và có một đỉnh suy biến giống hệt với một hình tam giác khác. Điều này không lý tưởng về hiệu quả.

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.