רשת מיזוג מפוצלת

אתה יכול לפצל את כל הרשתות של סצנה תלת-ממדית למספר תת-רשתות. באופן דומה, אתה יכול למזג מספר רשתות לרשת אחת באופן תכנותי באמצעות C#. מאמר זה מכסה את הפיצול והמיזוג של רשתות תלת מימד בתרחישים שונים:

3D Scene Meshes Splitter או Merger - התקנת API של C#

ניתן להשתמש ב-API Aspose.3D for .NET כדי לפצל או למזג רשתות תלת-ממדיות באופן פרוגרמטי באמצעות C#. אתה יכול להגדיר את ה-API על ידי התקנתו מהקטע הורדות, או עם פקודת ההתקנה של NuGet למטה:

PM> Install-Package Aspose.3D

פיצול רשתות של סצנה לכל חומר באופן פרוגרמטי באמצעות C#

קובץ תלת מימד כמו פורמט FBX יכול להכיל מספר רשתות של סצנה. ניתן לפצל את כל הרשתות למספר רשתות משנה לכל חומר אם לרשת לא הוקצה חומר בודד. אנא בצע את השלבים הבאים לפיצול רשתות של סצנה לכל חומר:

  1. טען קובץ 3D קלט.
  2. פצל את כל הרשתות בשיטת SplitMesh.
  3. שמור קובץ פלט עם הרשתות המפוצלות.

הקוד הבא מראה כיצד לפצל רשתות של סצנה לכל חומר באופן תכנותי באמצעות C#:

// טען קובץ FBX 3D קלט
Scene scene = new Scene("test.fbx");

// פצל את כל הרשתות
PolygonModifier.SplitMesh(scene, SplitMeshPolicy.CloneData);

// שמור קובץ פלט עם רשתות מפוצלות
scene.Save("test-splitted.fbx", FileFormat.FBX7500ASCII);

פיצול רשת לפי חומר ספציפי באופן תכנותי באמצעות C#

אתה יכול לפצל רשת על ידי ציון ידני של החומר. בדרך זו, ניתן ליצור מספר אובייקטים המכילים חומר אחד בלבד. למטרות הדגמה, הקוד שלהלן יוצר רשת של קופסה עם 6 מטוסים. לאחר מכן תפצל רשת פרימיטיבית על ידי ציון ידני של החומר באמצעות השלבים הבאים:

  1. צור רשת של קופסה עם שישה מטוסים.
  2. שנית, צור אלמנט חומרי וציין אינדקסים עבור כל מישור.
  3. פיצול ה-Mesh באמצעות ספירת SplitMeshPolicy.

הקוד שלהלן מסביר כיצד לפצל רשת לפי חומר ספציפי באופן תכנותי באמצעות C#:

// צור רשת של קופסה (קופסה מורכבת מ-6 מישורים)
Mesh box = (new Box()).ToMesh();

// צור אלמנט חומרי על הרשת הזו
VertexElementMaterial mat = (VertexElementMaterial)box.CreateElement(VertexElementType.Material, MappingMode.Polygon, ReferenceMode.Index);

// וציין אינדקס חומר שונה עבור כל מישור
mat.Indices.AddRange(new int[] { 0, 1, 2, 3, 4, 5 });

// כעת פיצלו אותו ל-6 תת רשתות, ציינו 6 חומרים שונים בכל מישור, כל מישור יהפוך לרשת משנה.
// השתמשנו במדיניות CloneData, לכל מישור יהיה אותו מידע על נקודת בקרה או מידע על אלמנט קודקוד מבוסס נקודת בקרה.
Mesh[] planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CloneData);

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

// כעת פצל אותו ל-2 תת-רשתות, הרשת הראשונה תכיל 0/1/2 מישורים, והרשת השנייה תכיל את המישורים ה-3/4/5.
// השתמשנו במדיניות CompactData, לכל מישור יהיה מידע נקודת בקרה משלו או מידע על אלמנטים קודקודים מבוססי נקודות בקרה.
planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CompactData);

מיזוג רשתות בקובץ תלת מימד לרשת יחידה באופן תכנותי ב-C#

אתה יכול למזג רשתות שונות לרשת חוקית אחת עם השלבים הבאים:

  1. טען קובץ סצנה תלת מימדית.
  2. מיזוג כל הרשתות.
  3. לבסוף, מקודד את הרשת הממוזגת.

הקוד הבא מפרט כיצד למזג רשתות לרשת אחת באופן תכנותי באמצעות C#:

// טען את סצנת הקלט התלת-ממדית
Scene scene = new Scene("LAD-TOP.rvm");

// מיזוג כל הרשתות
Mesh mesh = PolygonModifier.MergeMesh(scene);

// מקודד את הרשת הזו לפורמט PLY
FileFormat.PLY.Encode(mesh, "LAD-TOP.ply");

קבל רישיון זמני בחינם

אתה יכול לקבל Free Evaluation License לבדיקת ה-API ללא כל הגבלה.

סיכום

לסיכום, למדת כיצד למזג או לפצל רשת של סצנה תלת מימדית. ה-API חושף שיטות שונות לפיצול או מיזוג של רשת אחת או מרובות, שבהן אתה יכול להשתמש בהתאם לדרישות שלך. יתר על כן, אנא אל תהסס לבקר בתיעוד שבו מוסברים גם מספר תכונות אחרות. אנא צור איתנו קשר בפורום תמיכה חינם בכל שאלה.

ראה גם