สร้างฉากสามมิติด้วยภาษา C#

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

หัวข้อต่อไปนี้จะครอบคลุมในบทความนี้:

  1. C# API เพื่อสร้างฉาก 3 มิติ - ดาวน์โหลดฟรี
  2. สร้างฉาก 3 มิติอย่างง่ายใน C#
  3. อ่าน 3D Scene โดยใช้ C#

C# API เพื่อสร้างฉาก 3 มิติ - ดาวน์โหลดฟรี

ในการสร้างและอ่านฉาก 3 มิติ เราจะใช้ API Aspose.3D for .NET อนุญาตให้สร้างและบันทึกฉาก 3 มิติใน รูปแบบที่รองรับ นอกจากนี้ยังช่วยให้ทำงานกับเรขาคณิตและลำดับชั้นของฉาก ทำให้วัตถุเคลื่อนไหวในฉาก และการแปลงรูปแบบไฟล์ 3 มิติ

API จัดเตรียมคลาส Scene ซึ่งเป็นวัตถุระดับบนสุดที่มีโหนด รูปทรงเรขาคณิต วัสดุ พื้นผิว ภาพเคลื่อนไหว ท่าทาง ฉากย่อย ฯลฯ เมธอด CreateChildNode(Entity) สร้างโหนดลูกใหม่โดยแนบเอนทิตีที่กำหนด API ให้รูปแบบการแรเงาสำหรับ LambertMaterial, PhongMaterial และ ShaderMaterial แสงทำให้ฉากสว่างขึ้น คลาส Light ของ API ช่วยให้สามารถเพิ่มแสงเข้าไปในฉากได้

โปรด ดาวน์โหลด DLL ของ API หรือติดตั้งโดยใช้ NuGet

PM> Install-Package Aspose.3D

สร้างฉาก 3 มิติอย่างง่ายใน C#

เราสามารถสร้างฉาก 3 มิติอย่างง่ายได้โดยทำตามขั้นตอนด้านล่าง:

  1. สร้างอินสแตนซ์ของคลาส Scene
  2. เรียกใช้เมธอด CreateChildNode() เพื่อเพิ่มรูปทรงเรขาคณิต รูปร่างที่จะแสดงบนหน้าจอ เช่น ทรงกระบอก
  3. ตั้งค่าคุณสมบัติของโหนดลูก เช่น วัสดุ
  4. เริ่มต้นวัตถุคลาส Light
  5. เรียกใช้เมธอด CreateChildNode() เพื่อเพิ่มเอนทิตีแบบ Light
  6. สุดท้าย บันทึกฉากเป็น FBX โดยใช้วิธี Save() ใช้เส้นทางไฟล์เอาต์พุตและ FileFormat.FBX7500ASCII เป็นอาร์กิวเมนต์

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างฉาก 3 มิติอย่างง่ายโดยใช้ C#

// ตัวอย่างโค้ดนี้สาธิตวิธีสร้างฉาก 3 มิติอย่างง่ายในไฟล์ FBX
// เริ่มต้นฉาก 3 มิติ
var scene = new Scene();

// เริ่มต้นวัตถุทรงกระบอก
var cylinder = new Cylinder();
cylinder.Name = "Cylinder";

// สร้างโหนดลูกและเพิ่มวัตถุทรงกระบอก
var node = scene.RootNode.CreateChildNode(cylinder);

// ตั้งค่าคุณสมบัติโหนดย่อย
var material = new LambertMaterial() { DiffuseColor = new Vector3(Color.LightBlue) };
material.Name = "Lambert";
node.Material = material;

// เพิ่มเอนทิตี Light
var light = new Light() { LightType = LightType.Point };
light.Name = "Light";
scene.RootNode.CreateChildNode(light).Transform.Translation = new Vector3(10, 0, 10);

// เส้นทางไฟล์เอาต์พุต
var output = @"C:\Files\3D\document.fbx";

// บันทึกเอกสารฉาก 3 มิติ
scene.Save(output, FileFormat.FBX7500ASCII);

อ่าน 3D Scene โดยใช้ C#

เราสามารถอ่านฉาก 3 มิติจากเอกสาร FBX โดยทำตามขั้นตอนด้านล่าง:

  1. สร้างอินสแตนซ์ของคลาส Scene
  2. โหลดเอกสาร 3 มิติที่มีอยู่โดยใช้เมธอด Open()
  3. วนซ้ำคุณสมบัติ ChildNodes
  4. สุดท้าย แสดงค่าคุณสมบัติ

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการโหลดและอ่านฉาก 3 มิติโดยใช้ C#

// ตัวอย่างโค้ดนี้สาธิตวิธีการอ่านฉาก 3 มิติจากไฟล์ FBX
// เริ่มต้นวัตถุคลาสฉาก
Scene scene = new Scene();

// โหลดเอกสาร 3D ที่มีอยู่
scene.Open(@"C:\Files\3D\document.fbx");

foreach(var node in scene.RootNode.ChildNodes)
{
    var entity = node.Entity;
    Console.WriteLine("{0}", entity.Name); 

    if (node.Material != null)
    {
        Material material = node.Material;
        Console.WriteLine("{0}", material.Name);

        PropertyCollection props = material.Properties;
        //แสดงรายการคุณสมบัติทั้งหมดโดยใช้ foreach
        foreach (var prop in props)
        {
            Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
        }
        //หรือใช้ลำดับสำหรับลูป
       for (int i = 0; i < props.Count; i++)
        {
            var prop = props[i];
            Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
        }
    }
}

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

คุณสามารถ รับใบอนุญาตชั่วคราวได้ฟรี เพื่อลองใช้ Aspose.3D for .NET โดยไม่มีข้อจำกัดในการประเมิน

บทสรุป

ในบทความนี้ เราได้เรียนรู้วิธีการ:

  • สร้างฉาก 3 มิติโดยทางโปรแกรม
  • เพิ่มวัตถุ/เอนทิตีในฉาก 3 มิติ เช่น ทรงกระบอก วัสดุ แสง ฯลฯ
  • อ่านบันทึกย่อและคุณสมบัติลูกของฉาก 3 มิติใน C#

นอกจากนี้ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ Aspose.3D for .NET API โดยใช้ เอกสารประกอบ ในกรณีที่มีความคลุมเครือ โปรดติดต่อเราได้ที่ ฟอรัม

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