Làm cách nào để tạo ma trận chiếu nửa phối cảnh nửa chỉnh hình


8

Tôi đã cố gắng tạo ra một công thức cho ma trận chiếu trong đó trục dọc của bạn được chiếu theo hình học nhưng trục ngang của bạn sẽ có phối cảnh với nó.

Vì vậy, sự thất vọng của khung nhìn sẽ như thế này: Xem sự thất vọng

Tôi đã nghiên cứu cách các công thức của phép chiếu chính tả và phép chiếu phối cảnh và cách chúng đạt được. Và cố gắng sửa đổi những cái đó để cố gắng đạt được phép chiếu mà tôi muốn. Dường như với tôi, không thể có thang đo một trục đến Z và trục kia thì không (hoặc có tỷ lệ chúng ở một yếu tố khác).

Nó có thể đạt đến viễn cảnh tôi muốn? Nếu vậy ma trận chiếu sẽ như thế nào?


3
Đó là một sự thất vọng trông kỳ lạ nghiêm trọng ... Bạn có thể chia sẻ với chúng tôi tại sao bạn cần một thứ như thế không?
Alexandre Desbiens

Tôi muốn sử dụng nó cho máy ảnh của một trò chơi tôi đang làm việc. Đây là một trò chơi góc nhìn 2D, nhưng tôi muốn có các vật thể di chuyển ngang nhau, mà không cần chúng đến từ mặt đất / trần nhà khi máy ảnh di chuyển dọc.
Pepijn Willekens

Đó là một dự án tuyệt vời và câu hỏi sau đó. Tôi hy vọng bạn sẽ tìm thấy câu trả lời cho điều đó (mặc dù loại máy ảnh này không phải là những gì bạn nhìn thấy hàng ngày).
Alexandre Desbiens 10/07/2015

Câu trả lời:


2

Ma trận chiếu này nên thực hiện thủ thuật:

.tg  {border-collapse:collapse;border-spacing:0;}
.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
<table class="tg">
  <tr>
    <th class="tg-031e">1/r</th>
    <th class="tg-031e">0</th>
    <th class="tg-031e">0</th>
    <th class="tg-031e">0</th>
  </tr>
  <tr>
    <td class="tg-031e">0</td>
    <td class="tg-031e">1/t</td>
    <td class="tg-031e">0</td>
    <td class="tg-031e">0</td>
  </tr>
  <tr>
    <td class="tg-031e">0</td>
    <td class="tg-031e">0</td>
    <td class="tg-031e">-2/(f-n)</td>
    <td class="tg-031e">-(f+n)/(f-n)</td>
  </tr>
</table>

r = một nửa chiều rộng của thủy phi cơ

t = một nửa chiều cao của thủy phi cơ

f = khoảng cách đến phi cơ

n = khoảng cách đến gần

Vì vậy, ví dụ, hãy thử chọn:

r = 0,1 (chiều rộng sẽ là 0,2)

t = 0,5 (chiều cao sẽ là 1,0)

f = 1000 (mặt phẳng xa ở khoảng cách 1000)

n = 1 (gần mặt phẳng ở khoảng cách 1)


0

Thật không may, tôi không nghĩ rằng điều này là có thể bằng cách thay đổi ma trận chiếu. Sau ma trận chiếu, tọa độ màn hình cuối cùng được tính bằng cách chia (x, y, z) cho w. Đối với ma trận phối cảnh, w được đặt thành z. Đối với ma trận hình học, w được đặt thành 1. Bạn không thể có các giá trị w khác nhau cho ngang so với dọc. Câu trả lời khác cho câu hỏi này chỉ là một ma trận chỉnh hình tiêu chuẩn.

Nếu bạn có quyền truy cập vào trình đổ bóng và sẵn sàng thêm một bước nữa, bạn có thể chỉ cần sử dụng phép chiếu chính tả nhưng thực hiện chỉnh sửa phối cảnh theo chiều ngang bằng tay.

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.