Tại sao tọa độ đồng nhất được sử dụng trong đồ họa máy tính?


Câu trả lời:


12

Họ đơn giản hóa và thống nhất toán học được sử dụng trong đồ họa:

  • Chúng cho phép bạn thể hiện các bản dịch với ma trận.

  • Chúng cho phép bạn thể hiện sự phân chia theo chiều sâu trong các hình chiếu phối cảnh.

Cái đầu tiên có liên quan đến hình học affine. Cái thứ hai liên quan đến hình học chiếu.


Bạn đang tìm kiếm loại ví dụ nào? Ma trận dịch thuật và bất cứ điều gì liên quan đến dự đoán phối cảnh nên đủ dễ dàng để tìm kiếm?
Bart

@Bart, Tương tự cần thiết.

2
Tôi xin lỗi @anonymous, nhưng điều đó thực sự không cho tôi biết điều gì. Bạn sẽ phải sử dụng nhiều từ hơn để giải thích chính xác những gì bạn đang tìm kiếm.
Bart

Tôi nghĩ rằng câu trả lời này không được đánh giá cao vì nó quá kỹ thuật cho người mới. Có lẽ một ví dụ đơn giản với cách diễn đạt đơn giản sẽ minh họa các nguyên tắc tốt hơn
thẳng thắn

5

Đó là trong tên: Tọa độ đồng nhất cũng ... đồng nhất. Đồng nhất có nghĩa là một đại diện thống nhất của xoay, dịch, chia tỷ lệ và các biến đổi khác.

Một đại diện thống nhất cho phép tối ưu hóa. Phần cứng đồ họa 3D có thể được chuyên dụng để thực hiện phép nhân ma trận trên ma trận 4 x 4. Nó thậm chí có thể được chuyên môn hóa để nhận biết và lưu vào các phép nhân bằng 0 hoặc 1, bởi vì chúng thường được sử dụng.

Không sử dụng tọa độ đồng nhất có thể làm cho khó sử dụng phần cứng được tối ưu hóa mạnh đến mức tối đa. Bất cứ chương trình nào nhận ra rằng các hướng dẫn tối ưu hóa của phần cứng đều có thể được sử dụng (thường là trình biên dịch nhưng đôi khi mọi thứ phức tạp hơn) đối với tọa độ đồng nhất sẽ gặp khó khăn khi tối ưu hóa cho các biểu diễn khác. Nó sẽ chọn các hướng dẫn ít được tối ưu hóa và do đó không sử dụng tiềm năng của phần cứng.

Như đã có những lời kêu gọi ví dụ: PS4 của Sony có thể thực hiện phép nhân ma trận lớn. Nó tốt đến mức nó đã được bán hết trong một thời gian, bởi vì các cụm của chúng đã được sử dụng thay vì các siêu máy tính đắt tiền hơn. Sony sau đó yêu cầu rằng phần cứng của họ có thể không được sử dụng cho mục đích quân sự. Vâng, siêu máy tính là thiết bị quân sự.

Các nhà nghiên cứu đã sử dụng các card đồ họa để tính toán nhân ma trận của họ ngay cả khi không có đồ họa nào tham gia. Đơn giản là vì chúng có cường độ tốt hơn so với CPU có mục đích chung. Để so sánh các CPU đa lõi hiện đại có thứ tự 16 đường ống (x0,5 hoặc x2 không quan trọng lắm) trong khi GPU có thứ tự 1024 đường ống.

Đó không phải là quá nhiều lõi so với các đường ống cho phép xử lý song song thực tế. Lõi làm việc trên các chủ đề. Chủ đề phải được lập trình rõ ràng. Đường ống làm việc trên cấp độ chỉ dẫn. Các chip có thể song song hướng dẫn ít nhiều.


"PS4 của Sony có thể thực hiện phép nhân ma trận lớn." Bạn có nghĩa là bộ xử lý di động của PS3, phải không? PS4 có bộ xử lý x86 khá bình thường.
Wumpf

Mặc dù đây là một câu trả lời hay nhưng tôi không nghĩ nó trả lời câu hỏi của OP và loại gợi ý rằng các hợp đồng đồng nhất được sử dụng vì phần cứng được tối ưu hóa cho nó, thay vào đó các đồng âm hữu ích hơn và phần cứng cuối cùng đã được phát triển xung quanh đó. Một lập luận khác cho vec4 là chúng được căn chỉnh 128 bit giúp đọc hiệu quả hơn trên các bus bộ nhớ rộng (GPU)
PaulHK

4

bổ sung:

tọa độ đồng nhất cũng cho phép biểu diễn vô cực: trong 3D, nghĩa là điểm ở vô cực theo hướngx,y,z. Thông thường, các nguồn sáng ở vị trí hữu hạn hoặc vô hạn có thể được biểu diễn theo cùng một cách.(x,y,z,0)= =x,y,z0x,y,z

Về chuyển đổi phối cảnh, nó thậm chí còn cho phép nội suy chính xác mà không bị biến dạng phối cảnh (trái với phần cứng đồ họa ban đầu trên PC).


2

Theo sở thích cá nhân, tôi luôn kiêng (khi có thể) sử dụng tọa độ đồng nhất và ưa thích công thức Cartesian đơn giản.

Lý do chính là thực tế là các tọa độ đồng nhất sử dụng 4 mục tầm thường trong ma trận biến đổi (0, 0, 0, 1), liên quan đến việc lưu trữ và tính toán vô dụng (cũng là chi phí chung của các thói quen tính toán ma trận đa năng được "mặc định" sử dụng trong trường hợp này).

Nhược điểm là bạn cần cẩn thận hơn khi viết các phương trình và mất hỗ trợ của lý thuyết ma trận, nhưng cho đến nay tôi vẫn sống sót.


1
Về nguyên tắc, các kiểu dữ liệu có thể được triển khai thực sự không lưu trữ các mục đó mặc dù chúng hoạt động như chúng.

1
@Hurkyl Rõ ràng. Điều này hiếm khi được thực hiện, vì các hộp công cụ ma trận đa năng có sẵn.
Yves Daoust

@YvesDaoust Bạn có thể cung cấp một ví dụ về plain Cartesian formulationhoặc liên kết đến một tài nguyên mô tả việc sử dụng nó trong đồ họa 3D không?
Dân

@Dan: sử dụng y = Ax + b trong đó A là ma trận 3x3 và ba vectơ 3x1, thay vì y '= Ax' trong đó y ', x' là các vectơ tăng và A ma trận 4 x 4.
Yves Daoust

@YvesDaoust Vì vậy, bạn đang truyền một ma trận 3x3 và một vectơ 3x1 cho các shader của bạn thay vì ma trận 4x4? Bạn tính toán và lưu trữ ở wđâu?
Dân

2

[xy]
[bạnv]= =[coS(θ)-STôin(θ)STôin(θ)coS(θ)][xy]
[bạnv]= =[k100k2][xy]
[bạnv]= =[xy]+[St]

Đặt R và S là ma trận quay và chia tỷ lệ và T là một vectơ dịch mã. Trong đồ họa máy tính, bạn có thể cần thực hiện một loạt các bản dịch đến một điểm. Bạn có thể tưởng tượng làm thế nào khó khăn này có thể nhận được.

p'= =SR(Sp+T)+T

M= =TSRTS
p'= =Mp

p= =[xy1]
R= =[coS(θ)-STôin(θ)0STôin(θ)coS(θ)0001]
S= =[k1000k20001]
T= =[10t101t2001]

p= =[xyw]
Q= =[10000100001000-10]

1

Các tính toán trong tọa độ affine thường đòi hỏi sự phân chia, tốn kém so với phép cộng hoặc phép nhân. Người ta thường không cần phân chia khi sử dụng tọa độ chiếu.

Sử dụng tọa độ chiếu (và nói chung hơn, hình học chiếu) cũng có xu hướng loại bỏ các trường hợp đặc biệt, làm cho mọi thứ đơn giản và thống nhất hơn.


"Tính toán trong tọa độ affine thường yêu cầu phân chia": Tôi không hiểu tại sao. Trong thực tế, bạn tính toán chính xác các biểu thức tương tự.
Yves Daoust

@ Yves: Tôi đang trả lời cho chủ đề "sử dụng trong đồ họa máy tính" chung chung hơn, không phải là câu hỏi "biến đổi ma trận điện toán" cụ thể.

@Hurkyl: Tôi cũng vậy. Khi kết xuất một cảnh, bạn tính toán chính xác các biểu thức giống nhau, với cùng một cách chia (sự khác biệt nằm ở thuật ngữ giả với hệ số 0).
Yves Daoust

@Yves: Hrm. Tôi đã quen với việc thực hiện các phép tính trong đó việc chuyển đổi trở lại affine có thể được hoãn lại ở một mức độ nào đó; Tôi sẽ nhượng lại chuyên môn của bạn nếu bạn nói rằng điều đó không xảy ra thường xuyên.

-1
  • công thức đơn giản hơn
  • Ít trường hợp đặc biệt
  • Thống nhất và
  • Nhị nguyên

2
Câu trả lời rất không rõ ràng. Bạn nên giải thích trên từng điểm.
Rotem
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.