คุณสามารถแยกเมชทั้งหมดของฉาก 3 มิติออกเป็นเมชย่อยหลายๆ ในทำนองเดียวกัน คุณสามารถผสานหลาย ๆ เมชให้เป็นหนึ่งเมชโดยทางโปรแกรมโดยใช้ C# บทความนี้ครอบคลุมการแยกและการรวมตาข่าย 3 มิติในสถานการณ์ต่างๆ:
- 3D Scene Meshes Splitter หรือการควบรวมกิจการ – การติดตั้ง C# API
- แยกตาข่ายของฉากต่อวัสดุโดยทางโปรแกรมโดยใช้ C #
- แยกตาข่ายด้วยวัสดุเฉพาะทางโปรแกรมโดยใช้ C #
- ผสาน Meshes ในไฟล์ 3 มิติเป็น Single Mesh โดยทางโปรแกรมใน C #
3D Scene Meshes Splitter หรือการควบรวมกิจการ – การติดตั้ง C# API
Aspose.3D for .NET สามารถใช้ API เพื่อแยกหรือผสาน 3D mesh โดยทางโปรแกรมโดยใช้ C# คุณสามารถกำหนดค่า API ได้โดยการติดตั้งจากส่วน ดาวน์โหลด หรือด้วยคำสั่งการติดตั้งด้านล่าง NuGet:
PM> Install-Package Aspose.3D
แยกตาข่ายของฉากต่อวัสดุโดยทางโปรแกรมโดยใช้ C
ไฟล์ 3 มิติเช่นรูปแบบ FBX สามารถมีตาข่ายหลายฉากได้ คุณสามารถแยกเมชทั้งหมดออกเป็นหลายเมชย่อยต่อหนึ่งวัสดุ หากไม่ได้กำหนดเมชให้เป็นวัสดุเดียว โปรดทำตามขั้นตอนด้านล่างเพื่อแยกตาข่ายของฉากต่อวัสดุ:
- โหลดไฟล์ 3D อินพุต
- แยกเมชทั้งหมดด้วยวิธี SplitMesh
- บันทึกไฟล์เอาต์พุตด้วยตาข่ายแยก
รหัสต่อไปนี้แสดงวิธีการแยกตาข่ายของฉากต่อวัสดุโดยใช้โปรแกรมโดยใช้ C#:
// โหลดอินพุตไฟล์ FBX 3D
Scene scene = new Scene("test.fbx");
// แยกตาข่ายทั้งหมด
PolygonModifier.SplitMesh(scene, SplitMeshPolicy.CloneData);
// บันทึกไฟล์ที่ส่งออกด้วยการแยกตาข่าย
scene.Save("test-splitted.fbx", FileFormat.FBX7500ASCII);
แยกตาข่ายด้วยวัสดุเฉพาะทางโปรแกรมโดยใช้ C
คุณสามารถแบ่งตาข่ายได้โดยการระบุวัสดุด้วยตนเอง ด้วยวิธีนี้ คุณสามารถสร้างวัตถุหลายชิ้นที่มีวัสดุเพียงชิ้นเดียว เพื่อจุดประสงค์ในการสาธิต โค้ดด้านล่างจะสร้างตาข่ายของกล่องที่มีระนาบ 6 ระนาบ จากนั้น คุณจะแบ่งตาข่ายดั้งเดิมโดยระบุวัสดุด้วยตนเองโดยใช้ขั้นตอนต่อไปนี้:
- สร้างตาข่ายของกล่องที่มีหกระนาบ
- ประการที่สอง สร้างองค์ประกอบวัสดุและระบุดัชนีสำหรับแต่ละระนาบ
- แยกตาข่ายโดยใช้การแจงนับ 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
คุณสามารถรวมเมชที่แตกต่างกันเป็นเมชเดียวที่ถูกต้องด้วยขั้นตอนด้านล่าง:
- โหลดไฟล์ฉาก 3D อินพุต
- รวมตาข่ายทั้งหมด
- สุดท้ายเข้ารหัสตาข่ายที่ผสาน
รหัสต่อไปนี้อธิบายวิธีการผสานตาข่ายเป็นตาข่ายเดียวโดยทางโปรแกรมโดยใช้ 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 แสดงวิธีการต่างๆ ในการแยกหรือรวมหนึ่งหรือหลายเมช ซึ่งคุณสามารถใช้ได้ตามความต้องการของคุณ นอกจากนี้ โปรดอย่าลังเลที่จะเข้าไปที่ เอกสารประกอบ ซึ่งมีคำอธิบายคุณสมบัติอื่นๆ อีกหลายประการ โปรดติดต่อเราที่ ฟอรัมสนับสนุนฟรี ในกรณีที่มีข้อสงสัย