2010-10-03 36 views
5

Tôi có một tập hợp các hình tam giác, hình tam giác kết nối, ví dụ, một lưới 2D. Bây giờ tôi cần phải extrude nó ra một vài đơn vị trong trục z. Lưới được xác định bởi một tập hợp các đỉnh mà trình kết xuất có ý nghĩa bằng cách khớp với một mảng tam giác.Làm thế nào để Extrude một lưới 2D phẳng, cho nó chiều sâu

Ví dụ Mesh:

Vertices: (0,0,0), (10,0,0), (10,10,0), (0,10,0) < - (x, y, z) Hình tam giác: (1, 2, 3) & (3, 4, 1) < - số ở đây tham chiếu vị trí của một đỉnh trên.

Vì vậy, ở đây chúng tôi có hình vuông 2D. Bây giờ tôi cần thêm nhiều đỉnh và hình tam giác vào danh sách đó để tạo hình dạng ép đùn. Hình tam giác phải theo chiều kim đồng hồ, nếu không chúng sẽ bị phân tách ngược.

Có một thuật toán đơn giản cho điều này không? Cảm ơn bạn.

Trả lời

10

Giả sử bạn muốn extrude một khoảng cách z, bạn cần phải làm theo các bước sau:

0) cho n là số nguyên thủy của đỉnh (4 trong ví dụ của bạn)

1) Đối với mỗi đỉnh trong mảng đỉnh của bạn, thêm (0,0, z) vào nó, và thêm kết quả vào mảng đỉnh của bạn, với tổng số là 2 * n đỉnh. Vì vậy, ví dụ của bạn, bạn sẽ thêm các đỉnh (0,0, z), (10,0, z), (10,10, z), (0,10, z) vào mảng đỉnh của bạn, cho tổng số của 2 * 4 = 8 đỉnh.

2) Tạo danh sách ranh giới (trái ngược với cạnh bên trong) cho lưới ban đầu của bạn. Để làm điều này, hãy tạo danh sách tất cả các cạnh tam giác (3 cạnh sẽ theo thứ tự chiều kim đồng hồ cho mỗi tam giác). Sau đó loại bỏ các cặp cạnh bằng nhau nhưng đối diện (đây là các cạnh bên trong). Ví dụ của bạn, bạn sẽ bắt đầu với 6 cạnh, và kết thúc với 4 cạnh sau khi loại bỏ các cặp cạnh (3,1) và (1,3).

3) cho mỗi tam giác (a, b, c) trong danh sách tam giác của bạn, tạo tam giác tương ứng (a + n, b + n, c + n). Đây sẽ là khuôn mặt ép đùn

4) Cuối cùng, bạn muốn tạo các cạnh của hình dạng ép đùn của bạn. Đối với mỗi cạnh (a, b) trong danh sách cạnh biên mà bạn đã tạo ở bước 2, thêm hình tam giác (a, b, b + n) và (b + n, a + n, a)

Vậy đó. Giả sử không có lỗi chính tả nào về phần của tôi, và không có lỗi chính tả nào về phần của bạn, bây giờ bạn sẽ có lưới mong muốn của mình.

+0

Điều gì n đề cập đến điều này trong câu trả lời này? – Skylion

+0

Oh chờ đợi là n bước 3 và 3 n giống như trong một? – Skylion

+0

@Skylion - n giống nhau ở mọi nơi, tức là số lượng đỉnh ban đầu. – brainjam

Các vấn đề liên quan