Split Mesh
Split All erial eshes bir cene cene er erial aterial
Geliştiriciler, bir sahnenin tüm kafeslerini malzeme başına birkaç alt kafese ayırmayı gerektirebilir. Tek bir malzemeye atanmışsa, splitmesh yöntemi sahnenin bir ağını bölmez. Geliştiriciler şimdi Aspose.3D for .NET API kullanarak bunu başarabilirler.
SplitMeshPolicy
enum, ağ bölme algoritmasında kullanılan veri politikasını belirtir, iki politikayı destekler, alt ağlar veya her bir alt ağ arasındaki verileri paylaşır (sadece kullanılan veriler).
The kod örneği aşağıda malzeme başına bir sahnenin tüm ağlarını böler. Each alt ağ aynı doğrudan verileri paylaşır ve sadece endekslerde farklılık gösterir.
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
// The path to the documents directory. | |
string input = RunExamples.GetDataFilePath("test.fbx"); | |
// Load a 3D file | |
Scene scene = new Scene(input); | |
// Split all meshes | |
PolygonModifier.SplitMesh(scene, SplitMeshPolicy.CloneData); | |
// Save file | |
var output = RunExamples.GetOutputFilePath("test-splitted.fbx"); | |
scene.Save(output, FileFormat.FBX7500ASCII); | |
Erial plit a erial esh erial pecicithe erial aterial
Aspose.3D for .NET API, geliştiricilerin malzemeyi manuel olarak belirterek bir ağı ayırmasına izin verir. Bölünmüş örgü seçeneği ayrı nesneler oluşturur ve her alt örgü sadece bir malzeme kullanır.
Bplit Box Mesh
Bu yardım konusu, kodu kapsamlı ve kısa tutmak için kutunun bir örgü oluşturur. Geliştiriciler, bu yardım konusu hakkında manuel olarak bir ağ oluşturabilirler: 3D küp mesh oluşturun. Ayrıca, bir kutu 6 uçak ile oluşur ve her uçak bir alt ağ haline gelir. Aşağıdaki kod örneği, malzemeyi manuel olarak belirterek ilkel bir ağ oluşturur.
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
// Create a mesh of box(A box is composed by 6 planes) | |
Mesh box = (new Box()).ToMesh(); | |
// Create a material element on this mesh | |
VertexElementMaterial mat = (VertexElementMaterial)box.CreateElement(VertexElementType.Material, MappingMode.Polygon, ReferenceMode.Index); | |
// And specify different material index for each plane | |
mat.Indices.AddRange(new int[] { 0, 1, 2, 3, 4, 5 }); | |
// Now split it into 6 sub meshes, we specified 6 different materials on each plane, each plane will become a sub mesh. | |
// We used the CloneData policy, each plane will has the same control point information or control point-based vertex element information. | |
Mesh[] planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CloneData); | |
mat.Indices.Clear(); | |
mat.Indices.AddRange(new int[] { 0, 0, 0, 1, 1, 1 }); | |
// Now split it into 2 sub meshes, first mesh will contains 0/1/2 planes, and second mesh will contains the 3/4/5th planes. | |
// We used the CompactData policy, each plane will has its own control point information or control point-based vertex element information. | |
planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CompactData); | |