แยกผสานตาข่าย

คุณสามารถแยกเมชทั้งหมดของฉาก 3 มิติออกเป็นเมชย่อยหลายๆ ในทำนองเดียวกัน คุณสามารถผสานหลาย ๆ เมชให้เป็นหนึ่งเมชโดยทางโปรแกรมโดยใช้ C# บทความนี้ครอบคลุมการแยกและการรวมตาข่าย 3 มิติในสถานการณ์ต่างๆ:

3D Scene Meshes Splitter หรือการควบรวมกิจการ – การติดตั้ง C# API

Aspose.3D for .NET สามารถใช้ API เพื่อแยกหรือผสาน 3D mesh โดยทางโปรแกรมโดยใช้ C# คุณสามารถกำหนดค่า API ได้โดยการติดตั้งจากส่วน ดาวน์โหลด หรือด้วยคำสั่งการติดตั้งด้านล่าง NuGet:

PM> Install-Package Aspose.3D

แยกตาข่ายของฉากต่อวัสดุโดยทางโปรแกรมโดยใช้ C

ไฟล์ 3 มิติเช่นรูปแบบ 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. แยกตาข่ายโดยใช้การแจงนับ 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);

ผสาน Meshes ในไฟล์ 3 มิติเป็น Single Mesh โดยทางโปรแกรมใน C

คุณสามารถรวมเมชที่แตกต่างกันเป็นเมชเดียวที่ถูกต้องด้วยขั้นตอนด้านล่าง:

  1. โหลดไฟล์ฉาก 3D อินพุต
  2. รวมตาข่ายทั้งหมด
  3. สุดท้ายเข้ารหัสตาข่ายที่ผสาน

รหัสต่อไปนี้อธิบายวิธีการผสานตาข่ายเป็นตาข่ายเดียวโดยทางโปรแกรมโดยใช้ C #:

// โหลดฉาก 3D อินพุต
Scene scene = new Scene("LAD-TOP.rvm");

// รวมตาข่ายทั้งหมด
Mesh mesh = PolygonModifier.MergeMesh(scene);

// เข้ารหัสตาข่ายนี้เป็นรูปแบบ PLY
FileFormat.PLY.Encode(mesh, "LAD-TOP.ply");

รับใบอนุญาตชั่วคราวฟรี

คุณสามารถรับ ใบอนุญาตการประเมินฟรี สำหรับการทดสอบ API โดยไม่มีข้อจำกัดใดๆ

บทสรุป

โดยสรุป คุณได้เรียนรู้วิธีการรวมหรือแยกตาข่ายของฉาก 3 มิติ API แสดงวิธีการต่างๆ ในการแยกหรือรวมหนึ่งหรือหลายเมช ซึ่งคุณสามารถใช้ได้ตามความต้องการของคุณ นอกจากนี้ โปรดอย่าลังเลที่จะเข้าไปที่ เอกสารประกอบ ซึ่งมีคำอธิบายคุณสมบัติอื่นๆ อีกหลายประการ โปรดติดต่อเราที่ ฟอรัมสนับสนุนฟรี ในกรณีที่มีข้อสงสัย

ดูสิ่งนี้ด้วย