Kết xuất đối tượng 3d lên bề mặt 2d (hệ thống nhúng)


9

tôi đang làm việc trên một hệ thống nhúng của một loại, và trong thời gian rảnh tôi muốn kiểm tra khả năng vẽ của nó.

Hệ thống được đề cập là vi điều khiển ARM Cortex M3 được gắn vào bảng EasyMX Stellaris. Và tôi có một màn hình nhỏ 320x240 :)

Bây giờ, tôi có một chút thời gian rảnh mỗi ngày và tôi muốn tạo khối xoay. Micro C PRO cho ARM không có khả năng vẽ 3d, có nghĩa là nó phải được thực hiện trong phần mềm.

Từ cuốn sách Giới thiệu về Lập trình trò chơi 3D với DirectX 10 tôi biết đại số ma trận cho các phép biến đổi nhưng thật tuyệt khi bạn có DirectX để đặt camera đúng.

Tôi đoán tôi có thể làm cho đối tượng 2d xoay, nhưng tôi sẽ làm thế nào với 3d?

Bất kỳ ý tưởng và ví dụ đều được chào đón. Mặc dù tôi muốn lời khuyên hơn. Tôi muốn hiểu điều này.


@Marin Bạn đã làm gì cho đến nay? Tôi đang cố gắng để đạt được điều tương tự. Vui lòng liên hệ với tôi skype: andreahmed
Ahmed Saleh

Câu trả lời:


7

Bạn có nhận ra rằng một camera directX chỉ là một vài biến đổi ma trận? Bạn có một ModelView, Projection, sau đó chuyển đổi ma trận Viewport thành từng đỉnh theo thứ tự đó để thay đổi tọa độ 3d thành tọa độ 2d.

Thêm chi tiết về chuyển đổi dọc theo đường ống tiêu chuẩn (tôi tin rằng cả DirectX và OpenGL đều hoạt động theo cùng một cách).

Sau đó, bạn rasterize các hình tam giác dựa trên các vị trí 2d (kết quả từ sự biến đổi của bạn) của mảng đỉnh 2d hiện có của bạn. Điều này có thể trở nên phức tạp nhanh chóng nhưng sử dụng thử nghiệm PIT và tô màu đầy đủ bất kỳ pixel nào va chạm sẽ đủ đơn giản và hiệu quả trong trường hợp của bạn.

Cách khác để làm điều này và cách dễ dàng hơn là tạo ra một tia đánh dấu. Đơn giản chỉ cần bỏ chiếu tia bằng cách sử dụng ma trận biến đổi mà bạn muốn áp dụng trên đối tượng của mình.

Không được chơi xung quanh với các loại công cụ cấp thấp trong một thời gian vì vậy tôi có thể đánh giá sai nhưng một trong hai tuyến đường không quá khó. Hiểu cách thức hoạt động của đường ống phần cứng và thực hiện nó trong phần mềm hoặc viết trình theo dõi tia.

Btw đây là nơi tôi học được những gì tôi biết về đường ống đồ họa.


Bất kỳ tham chiếu đường ống lập trình nào cho OpenGL cũng sẽ hữu ích vì tất cả các biến đổi đều được mã hóa thủ công ngay bây giờ.
edA-qa mort-ora-y

@Cantic sấm sét. Về máy ảnh: vâng tôi nhận ra điều đó. Nhưng tôi không biết làm thế nào để chuyển tất cả sang hệ thống này. Tôi nghĩ rằng có thể có một số loại phương trình để làm điều này. Do đó trốn tránh các tính toán ma trận. Có lẽ tôi đã không viết câu hỏi rất tốt. Về đường ống dẫn: chúng giống nhau. Cảm ơn!
Martin Berger

3

Vào thời mà phần cứng 3D không có sẵn, chúng tôi phải xây dựng các công cụ 3D và trình tạo đa giác của riêng mình. 3DICA là một hướng dẫn tuyệt vời giải thích tất cả những điều cơ bản của một công cụ 3D phần mềm. Đối với tôi hình ảnh sẽ không hiển thị trên Firefox, nhưng trong Internet Explorer chúng hoạt động tốt.

Chương 2.1 và 3.1 là đủ để đáp ứng nhu cầu của bạn, nhưng đọc toàn bộ hướng dẫn sẽ dạy cho bạn rất nhiều.


Ồ Dụng cụ tốt. Tôi nghĩ rằng điều duy nhất tôi không biết từ trang đó là một phần của splines. Tôi không có thời gian để đi sâu vào vấn đề đó. Để bây giờ. Cảm ơn vì msell.
Martin Berger
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.