Bạn có thể chia tất cả các mắt lưới của một cảnh 3D thành nhiều mắt lưới phụ. Tương tự như vậy, bạn có thể hợp nhất nhiều mắt lưới thành một mắt lưới duy nhất theo lập trình bằng C#. Bài viết này đề cập đến việc tách và hợp nhất các lưới 3D trong các tình huống khác nhau:
- Bộ tách hoặc hợp nhất lưới cảnh 3D - Cài đặt API C#
- Chia lưới của một cảnh trên mỗi vật liệu theo phương pháp lập trình bằng C#
- Chia lưới theo một vật liệu cụ thể theo phương pháp lập trình bằng C#
- Hợp nhất các lưới trong tệp 3D thành một lưới đơn theo phương pháp lập trình trong C#
Bộ tách hoặc hợp nhất lưới cảnh 3D - Cài đặt API C#
Aspose.3D for .NET API có thể được sử dụng để tách hoặc hợp nhất các mắt lưới 3D theo cách lập trình bằng cách sử dụng C#. Bạn có thể định cấu hình API bằng cách cài đặt nó từ phần Tải xuống hoặc bằng lệnh cài đặt NuGet bên dưới:
PM> Install-Package Aspose.3D
Chia lưới của một cảnh trên mỗi vật liệu theo phương pháp lập trình bằng C#
Một tệp 3D như định dạng FBX có thể chứa một số mắt lưới của một cảnh. Bạn có thể chia tất cả các mắt lưới thành nhiều mắt lưới phụ trên mỗi vật liệu nếu lưới chưa được chỉ định một vật liệu duy nhất. Vui lòng làm theo các bước dưới đây để chia lưới của một cảnh cho mỗi vật liệu:
- Tải tệp 3D đầu vào.
- Tách tất cả các mắt lưới bằng phương pháp SplitMesh.
- Lưu tệp đầu ra với các mắt lưới được chia nhỏ.
Đoạn mã sau đây cho thấy cách phân chia các mắt lưới của một cảnh trên mỗi vật liệu theo cách lập trình bằng C#:
// Tải tệp FBX 3D đầu vào
Scene scene = new Scene("test.fbx");
// Tách tất cả các mắt lưới
PolygonModifier.SplitMesh(scene, SplitMeshPolicy.CloneData);
// Lưu tệp đầu ra với các mắt lưới được chia nhỏ
scene.Save("test-splitted.fbx", FileFormat.FBX7500ASCII);
Chia lưới theo một vật liệu cụ thể theo phương pháp lập trình bằng C#
Bạn có thể chia lưới bằng cách chỉ định vật liệu theo cách thủ công. Bằng cách này, bạn có thể tạo một số đối tượng chỉ chứa một vật liệu. Đối với mục đích trình diễn, đoạn mã dưới đây tạo ra một lưới của một hộp có 6 mặt phẳng. Sau đó, bạn sẽ chia một lưới nguyên thủy bằng cách chỉ định vật liệu theo cách thủ công bằng các bước sau:
- Tạo một lưới của một hộp với sáu mặt phẳng.
- Thứ hai, tạo một phần tử material và chỉ định các chỉ mục cho mỗi mặt phẳng.
- Tách lưới bằng cách sử dụng kiểu liệt kê SplitMeshPolicy.
Đoạn mã dưới đây giải thích cách chia lưới theo vật liệu cụ thể theo lập trình bằng C#:
// Tạo một lưới hộp (Một hộp được tạo bởi 6 mặt phẳng)
Mesh box = (new Box()).ToMesh();
// Tạo một phần tử vật liệu trên lưới này
VertexElementMaterial mat = (VertexElementMaterial)box.CreateElement(VertexElementType.Material, MappingMode.Polygon, ReferenceMode.Index);
// Và chỉ định chỉ số vật liệu khác nhau cho từng mặt phẳng
mat.Indices.AddRange(new int[] { 0, 1, 2, 3, 4, 5 });
// Bây giờ chia nó thành 6 lưới phụ, chúng tôi chỉ định 6 vật liệu khác nhau trên mỗi mặt phẳng, mỗi mặt phẳng sẽ trở thành một lưới phụ.
// Chúng tôi đã sử dụng chính sách CloneData, mỗi mặt phẳng sẽ có cùng thông tin điểm điều khiển hoặc thông tin phần tử đỉnh dựa trên điểm điều khiển.
Mesh[] planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CloneData);
mat.Indices.Clear();
mat.Indices.AddRange(new int[] { 0, 0, 0, 1, 1, 1 });
// Bây giờ chia nó thành 2 lưới phụ, lưới đầu tiên sẽ chứa 0/1/2 mặt phẳng và lưới thứ hai sẽ chứa 3/4 mặt phẳng.
// Chúng tôi đã sử dụng chính sách CompactData, mỗi mặt phẳng sẽ có thông tin điểm điều khiển riêng hoặc thông tin phần tử đỉnh dựa trên điểm điều khiển.
planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CompactData);
Hợp nhất các lưới trong tệp 3D thành một lưới đơn theo phương pháp lập trình trong C#
Bạn có thể hợp nhất các mắt lưới khác nhau thành một lưới hợp lệ duy nhất bằng các bước sau:
- Tải tệp cảnh 3D đầu vào.
- Hợp nhất tất cả các mắt lưới.
- Cuối cùng, mã hóa lưới đã hợp nhất.
Đoạn mã sau giải thích cách hợp nhất các mắt lưới thành một mắt lưới duy nhất theo lập trình bằng C#:
// Tải cảnh 3D đầu vào
Scene scene = new Scene("LAD-TOP.rvm");
// Hợp nhất tất cả các mắt lưới
Mesh mesh = PolygonModifier.MergeMesh(scene);
// Mã hóa lưới này thành định dạng PLY
FileFormat.PLY.Encode(mesh, "LAD-TOP.ply");
Nhận Giấy phép Tạm thời Miễn phí
Bạn có thể nhận được Giấy phép đánh giá miễn phí để thử nghiệm API mà không có bất kỳ giới hạn nào.
Sự kết luận
Tóm lại, bạn đã học được cách hợp nhất hoặc chia lưới của một cảnh 3D. API đưa ra các phương pháp khác nhau để tách hoặc hợp nhất một hoặc nhiều mắt lưới mà bạn có thể sử dụng tùy theo yêu cầu của mình. Hơn nữa, vui lòng truy cập Tài liệu, nơi một số tính năng khác cũng được giải thích. Vui lòng liên hệ với chúng tôi tại Diễn đàn hỗ trợ miễn phí nếu có bất kỳ thắc mắc nào.