Hoạ tiết 3D là gì?


31

Google đã làm tôi thất bại, tôi không thể tìm thấy bất cứ thông tin nào. Vì vậy, có lẽ GameDev có thể :).

  • Hoạ tiết 3D là gì?
  • Khi nào chúng được sử dụng?
  • Chi phí thực hiện?
  • Chúng được lưu trữ như thế nào?

Tôi có nhiều ý tưởng mơ hồ, nhưng không có định nghĩa 'dứt khoát'.

Bất kỳ tài liệu tham khảo nào về các ví dụ hoặc hướng dẫn đều được đánh giá cao, đặc biệt là trong việc kết xuất các hệ thống hạt thông qua kết cấu 3D.


Tôi không chắc những gì bạn đang hỏi là một điều. Bạn có nghĩa là ánh xạ bình thường và vết sưng để mô phỏng sự thay đổi bề mặt trên các khu vực "phẳng"?
coderanger

2
Tôi nghĩ những gì anh ấy muốn nói là giống GL_TEXTURE_3D hơn, v.v.
Luker

1
Ngoài ra, xem câu hỏi này: Ánh xạ kết cấu UVW hoạt động như thế nào? (và câu trả lời của nó).
George Duckett

Câu trả lời:


34

Kết cấu 3D hoạt động như kết cấu thông thường. Nhưng nó thực sự là 3D. Hoạ tiết 2D có các tia UV, 3D có UVW (bạn phải sử dụng chúng một cách dễ dàng). Coords kết cấu là khối đơn vị (0 - 1, 0 - 1, 0 - 1).

Có thể sử dụng :

  • hiệu ứng thể tích trong các trò chơi (lửa, khói, tia sáng, sương mù thực tế)
  • ánh sáng lưu trữ cho ánh sáng toàn cầu thời gian thực ( ví dụ CryEngine )
  • khoa học (MRI, CT scan được lưu thành tập)

Hiệu suất :
Tương tự như kết cấu thông thường - siêu nhanh (truy cập bộ nhớ nhanh nhất trong gpu). Lưu vào bộ đệm cho các luồng và được tối ưu hóa cho tình huống khi các luồng gần (pixel shader) đang tìm kiếm các giá trị gần.

Có thể được đọc dưới dạng điểm hoặc sử dụng lấy mẫu tuyến tính (nội suy ba tuyến tính gốc. Nội suy tuyến tính hai chiều trong kết cấu 2D).

Chúng được lưu trữ trong bộ nhớ giống như một mảng các kết cấu 2D.

Mipmapping trên kết cấu 3D:
nhập mô tả hình ảnh ở đây


14

Hoạ tiết 3D hoặc 'Kết cấu khối' là một chuỗi các kết cấu thông thường được sắp xếp thành các lát, giống như một cỗ bài. Chúng được sử dụng trong kết xuất thể tích thường lấy dữ liệu trong thế giới thực như quét CT và sau đó thao tác chúng. Trong các trò chơi và đồ họa đôi khi, đối với các hiệu ứng thể tích như khói, nơi bạn đánh đổi tính linh hoạt của hệ thống hạt để tính chi phí cố định và tính toán dễ dàng (và dễ dàng song song) của kết cấu khối. Thật dễ dàng trong một kết cấu khối lượng để tìm hàng xóm gần nhất nhưng điều này có thể là một hệ thống hạt truyền thống hơn được tạo thành từ các điểm lỏng lẻo.

Ngoài ra, một số đối tượng phức tạp được hưởng lợi từ việc sử dụng kết cấu khối lượng, chẳng hạn như cỏ:

Khói của Nvidia trong hộp là một ví dụ tuyệt vời:

http://www.youtube.com/watch?v=9AS4xV-CK14

Ngoài ra, kết xuất tán xạ ánh sáng dễ dàng hơn khi bạn có âm lượng để kết xuất


7

Ngoài các câu trả lời hiện có, tôi thích cách tạo kết cấu 3D theo cách thủ công (thực ra nó có ý nghĩa hơn kết cấu thủ tục 2D), như tiếng ồn và hình chữ nhật sẽ cung cấp chi tiết kết cấu tốt và không bị biến dạng cho bất kỳ bề mặt góc nào mà không cần phải có để chọn một mô hình chiếu (UV, phẳng, hình trụ, hình cầu và vv).

Thay vì lấy mẫu một lớp bitmap trong không gian 3D, bạn nhận được một giá trị riêng cho từng điểm trong không gian 3D bằng thuật toán cơ bản - về cơ bản mang lại cho bạn độ phân giải kết cấu vô hạn và không gặp vấn đề gì với kết cấu kéo dài trên các đa giác góc. Đây là "kết cấu" 3D hay đúng hơn là tô bóng bề mặt cho tôi ^^

Tôi thực sự khá mệt mỏi với tất cả các kết cấu bitmap trong phát triển trò chơi, khi tôi muốn làm bẩn một con tàu không gian, tôi muốn áp dụng một vài lớp công thức tiếng ồn và không phải vẽ một bitmap có độ phân giải hạn chế. Một người chơi 3D cũ có thể mơ, anh ta không thể;)

Ngay bây giờ, trước khi nướng các giải pháp bề mặt phim 3D cũ kỹ ngọt ngào này thành màu sắc, bitmap UV thông thường và đặc biệt là về niềm vui duy nhất tôi có được và nó cảm thấy hạn chế khó chịu. Cảnh demo (như mọi khi) có xu hướng (trước) tạo kết cấu theo quy trình cho 3D thời gian thực nhưng thật khó để tìm các công cụ tốt để hỗ trợ quy trình công việc này từ thiết kế đến thời gian chạy. Hầu hết các cách tiếp cận thủ tục dev trò chơi dường như là về thế hệ lưới. Tự hỏi đường ống đổ bóng với sự trợ giúp của bản đồ độ sâu / kết xuất hoãn lại có thể xử lý các thuật toán nhiễu 3D cũ như thế nào?

... thay vì cố gắng tìm ra cách ánh xạ hình ảnh kết cấu lên bề mặt hình dạng của bạn, tính chất thể tích của kết cấu dựa trên nhiễu cho phép bạn chỉ cần đánh giá chúng tại các vị trí (x, y, z) trong pixel của bạn đổ bóng. Theo cách này, bạn đang khắc họa kết cấu của mình một cách hiệu quả từ một vật liệu rắn, điều này thường đơn giản hơn nhiều so với việc cố gắng tạo ra một ánh xạ tham số không bị biến dạng hợp lý.

Các loại kết cấu thủ tục dựa trên tạp âm này từ lâu đã trở thành chủ đạo của phim truyện, trong đó các shader không yêu cầu hiệu suất thời gian thực ... tất cả các phim hiệu ứng đặc biệt ngày nay sử dụng rất nhiều các shader thủ tục dựa trên tiếng ồn ... phụ thuộc rất nhiều về việc sử dụng rộng rãi chức năng nhiễu trong các shader pixel được viết bằng các ngôn ngữ như Renderar của Pixar. Với việc triển khai tốt chức năng nhiễu có sẵn để sử dụng thời gian thực trong GPU, tôi mong muốn được thấy một số ý tưởng hình ảnh thú vị từ phim truyện được tích hợp vào thế hệ giải trí tương tác tiếp theo trên máy tính để bàn và bảng điều khiển. http://http.developer.nvidia.com/GPUGems/gpugems_ch05.html


Đọc rất thú vị! Tôi gặp khó khăn khi hình dung những gì bạn có ý nghĩa trong đoạn thứ hai của bạn mặc dù.
giảm tốc

Có lẽ tôi có thể làm một sơ đồ. Ý tôi là thay vì lấy mẫu bitmap, màu sắc (hoặc bất cứ thứ gì bạn theo sau) chỉ đơn giản được quyết định bởi thuật toán nhiễu. Bằng cách đó, không cần phải nội suy giữa các pixel bitmap (vì bạn nhất định phải lấy mẫu không ở vị trí 1x1 pixel hoàn hảo) và độ phân giải trở thành vô hạn về mặt lý thuyết. Nó giống như thực sự tính lãi cho một mức lãi suất cụ thể thay vì sử dụng bảng tra cứu được tính toán trước trong đó có một số bước / khoảng nhất định (= độ phân giải bitmap).
Oskar Duveborn

Sau khi đọc toàn bộ bài viết được tham khảo. Tôi hiểu rõ hơn nhiều, nhưng tôi nghĩ ref. hình ảnh sẽ có lợi cho cả hai bên: sự không chắc chắn và tl; dr. :)
deceleratedcaviar

0

Các mẫu kết cấu 3D được áp dụng cho các voxels của cơ thể thể tích rất giống với các mẫu kết cấu 2D được áp dụng cho các pixel của đa giác 2D. Dưới đây là ví dụ về kết cấu thể tích 3D trong JavaScript (yêu cầu WebGL):

http://kirox.de/test/Surface.html

nhấn [v], xoay thân máy và thay đổi độ dốc của kết cấu được tạo bằng bánh xe chuột

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.