podziel siatkę scalającą

Możesz podzielić wszystkie siatki sceny 3D na kilka podsiatek. Podobnie można programowo scalić wiele siatek w jedną siatkę przy użyciu języka C#. W tym artykule omówiono dzielenie i łączenie siatek 3D w różnych scenariuszach:

Rozdzielanie lub łączenie siatek scen 3D — instalacja C# API

Interfejs API Aspose.3D for .NET może być używany do programowego dzielenia lub łączenia siatek 3D przy użyciu języka C#. Możesz skonfigurować API, instalując je z sekcji Downloads lub za pomocą poniższego polecenia instalacyjnego NuGet:

PM> Install-Package Aspose.3D

Podziel siatki sceny na materiał programowo przy użyciu C#

Plik 3D, taki jak format FBX, może zawierać kilka siatek sceny. Możesz podzielić wszystkie siatki na kilka siatek podrzędnych dla każdego materiału, jeśli do siatki nie został przypisany żaden materiał. Wykonaj poniższe czynności, aby podzielić siatkę sceny według materiału:

  1. Załaduj wejściowy plik 3D.
  2. Podziel wszystkie siatki metodą SplitMesh.
  3. Zapisz plik wyjściowy z podzielonymi siatkami.

Poniższy kod pokazuje, jak programowo podzielić siatki sceny na materiał przy użyciu języka C#:

// Załaduj wejściowy plik FBX 3D
Scene scene = new Scene("test.fbx");

// Podziel wszystkie siatki
PolygonModifier.SplitMesh(scene, SplitMeshPolicy.CloneData);

// Zapisz plik wyjściowy z podzielonymi siatkami
scene.Save("test-splitted.fbx", FileFormat.FBX7500ASCII);

Programowo podziel siatkę według określonego materiału przy użyciu C#

Siatkę można podzielić, ręcznie określając materiał. W ten sposób można stworzyć kilka obiektów zawierających tylko jeden materiał. W celach demonstracyjnych poniższy kod tworzy siatkę pudełka z 6 płaszczyznami. Następnie podzielisz prymitywną siatkę, ręcznie określając materiał, wykonując następujące czynności:

  1. Utwórz siatkę pudełka z sześcioma płaszczyznami.
  2. Po drugie, utwórz element materialny i określ indeksy dla każdej płaszczyzny.
  3. Podziel siatkę za pomocą wyliczenia SplitMeshPolicy.

Poniższy kod wyjaśnia, jak programowo podzielić siatkę według określonego materiału przy użyciu C#:

// Utwórz siatkę pudełka (pudełko składa się z 6 płaszczyzn)
Mesh box = (new Box()).ToMesh();

// Utwórz element materialny na tej siatce
VertexElementMaterial mat = (VertexElementMaterial)box.CreateElement(VertexElementType.Material, MappingMode.Polygon, ReferenceMode.Index);

// I określ inny indeks materiałowy dla każdej płaszczyzny
mat.Indices.AddRange(new int[] { 0, 1, 2, 3, 4, 5 });

// Teraz podziel to na 6 podsiatek, określiliśmy 6 różnych materiałów na każdej płaszczyźnie, każda płaszczyzna stanie się podsiatką.
// Użyliśmy zasady CloneData, każda płaszczyzna będzie miała te same informacje o punkcie kontrolnym lub informacje o elemencie wierzchołków opartym na punkcie kontrolnym.
Mesh[] planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CloneData);

mat.Indices.Clear();
mat.Indices.AddRange(new int[] { 0, 0, 0, 1, 1, 1 });

// Teraz podziel to na 2 podsiatki, pierwsza siatka będzie zawierała płaszczyzny 0/1/2, a druga siatka będzie zawierała płaszczyzny 3/4/5.
// Użyliśmy zasady CompactData, każda płaszczyzna będzie miała własne informacje o punkcie kontrolnym lub informacje o elemencie wierzchołków opartym na punkcie kontrolnym.
planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CompactData);

Scal siatki w pliku 3D w pojedynczą siatkę programowo w C#

Możesz scalić różne siatki w jedną prawidłową siatkę, wykonując poniższe czynności:

  1. Załaduj wejściowy plik sceny 3D.
  2. Połącz wszystkie siatki.
  3. Na koniec zakoduj scaloną siatkę.

Poniższy kod wyjaśnia, jak programowo scalić siatki w pojedynczą siatkę przy użyciu języka C#:

// Załaduj wejściową scenę 3D
Scene scene = new Scene("LAD-TOP.rvm");

// Połącz wszystkie siatki
Mesh mesh = PolygonModifier.MergeMesh(scene);

// Zakoduj tę siatkę w formacie PLY
FileFormat.PLY.Encode(mesh, "LAD-TOP.ply");

Uzyskaj bezpłatną tymczasową licencję

Możesz otrzymać Bezpłatną licencję ewaluacyjną na testowanie API bez żadnych ograniczeń.

Wniosek

Podsumowując, nauczyłeś się łączyć lub dzielić siatkę sceny 3D. Interfejs API udostępnia różne metody dzielenia lub łączenia jednej lub wielu siatek, które można wykorzystać zgodnie z własnymi wymaganiami. Ponadto zachęcamy do odwiedzenia Dokumentacji, gdzie wyjaśniono również kilka innych funkcji. W razie jakichkolwiek pytań skontaktuj się z nami na Bezpłatnym forum pomocy technicznej.

Zobacz też