1. Home
  2.   Drako
  3.   FileFormat.Drako برای دات نت
FileFormat.Drako برای .NET

FileFormat.Drako برای دات نت

 
 

ساده‌سازی فرآیند خواندن و نوشتن فایل‌های Google Draco با استفاده از API .NET

به راحتی فایل‌های DRC فشرده را با FileFormat.Drako و API .NET سبک‌وزن و متن‌باز ویرایش کنید، که تبدیل و اتوماسیون فایل‌های Draco را تسهیل می‌کند

FileFormat.Drako برای دات نت تجربه پردازش فایل Draco شما را متحول می کند. در این راهنمای جامع، ما به عملکردها و مزایای LeveragingFileFormat.Drako، یک API منبع باز .NET سبک وزن می پردازیم تا به راحتی فایل های Draco را مدیریت کنیم.

Draco یک کتابخانه فشرده سازی منبع باز است که توسط Google توسعه یافته است که در فشرده سازی و فشرده سازی شبکه های هندسی سه بعدی و ابرهای نقطه ای تخصص دارد. Draco با کاهش قابل توجه اندازه فایل های گرافیکی سه بعدی، انتقال سریعتر را امکان پذیر می کند و نیازهای ذخیره سازی را کاهش می دهد و در عین حال کیفیت بصری را حفظ می کند. این برنامه از برنامه های سه بعدی مختلف، از جمله پلتفرم های مبتنی بر وب و تلفن همراه پشتیبانی می کند و از مدیریت کارآمد داده های سه بعدی پیچیده اطمینان می دهد. دراکو به طور گسترده در صنایعی مانند بازی، واقعیت مجازی و تجسم سه بعدی برای بهینه سازی عملکرد و افزایش تجربه کاربر استفاده می شود.

FileFormat.Drako به عنوان یک راه حل قدرتمند برای خواندن و نوشتن یکپارچه فایل های دراکو ظاهر می شود. این API منبع باز.

FileFormat.Drako تحت مجوز باز کردن در دسترس است.< /p>

ویژگی ها و مزایای کلیدی

  • نسبت‌های فشرده‌سازی بالا: دراکو به کاهش قابل توجهی در اندازه فایل‌ها دست می‌یابد، و اغلب آنها را تا ۹۰٪ بدون کاهش قابل توجه در کیفیت بصری کاهش می‌دهد. این آن را برای برنامه‌هایی که پهنای باند و فضای ذخیره‌سازی محدود است، ایده‌آل می‌کند.
  • پشتیبانی از انواع داده‌های مختلف: Draco از فشرده‌سازی برای طیف وسیعی از انواع داده‌های سه بعدی، از جمله مش‌های هندسی و ابرهای نقطه‌ای پشتیبانی می‌کند. می‌تواند موقعیت‌های راس، رنگ‌ها، نرمال‌ها و سایر ویژگی‌ها را به طور موثر مدیریت کند.
  • فشرده‌سازی و رفع فشرده‌سازی سریع: این کتابخانه به گونه‌ای طراحی شده است که فشرده‌سازی و رفع فشرده‌سازی با سرعت بالا را ارائه می‌دهد، و آن را برای برنامه‌های بلادرنگ مانند نمایشگرهای سه بعدی مبتنی بر وب و تجربیات واقعیت مجازی مناسب می‌کند. li>
  • منبع باز و رایگان: از مزایای راه حل منبع باز بدون هزینه مجوز لذت ببرید، و آن را برای توسعه دهندگان و کاربران در همه سطوح قابل دسترسی می کند.
  • ادغام بی‌وقفه با برنامه‌های C#: IntegrateFileFormat.Drako بدون زحمت در برنامه‌های C# خود، امکان مدیریت یکپارچه فایل‌های Draco را در جریان‌های کاری موجود شما فراهم می‌کند.

Previous Next

چگونه با FileFormat.Drako برای دات نت شروع کنیم

شروع با FileFormat.Drako سریع و آسان است. به سادگی این مراحل را دنبال کنید:

  • InstallFileFormat.Drako: بسته FileFormat.Drako را از طریق NuGet Package Manager یا NET CLI نصب کنید.
  • با پروژه خود ادغام کنید: به کتابخانه FileFormat.Drako در پروژه C# خود مراجعه کنید.
  • شروع به تبدیل: از API ساده ارائه شده توسط FileFormat.Drako برای خواندن و نوشتن فایل های Draco استفاده کنید.

روش توصیه شده برای نصبFileFormat.Drako برای NET استفاده از NuGet است. لطفا از دستور زیر برای نصب راحت استفاده کنید.

InstallFileFormat.Drako برای NET از طریق NuGet

NuGet> Install-PackageFileFormat.Drako 
همچنین می‌توانید آن را مستقیماً از GitHub دانلود کنید.

خواندن فایل Draco به DracoMesh در سی شارپ

این قطعه کد به طور موثر فایل Draco را بارگیری می کند و آن را در یک نمونه DracoMesh برای عملیات بعدی ذخیره می کند.

  • فایل DRC با نام "cube.drc" را با استفاده از File.ReadAllBytesباز کنید.
  • مش سه بعدی را از بایت ها در یک شی DracoMeshبارگذاری کنید.

قطعه کد زیر را کپی و در فایل اصلی خود جایگذاری کنید و برنامه را اجرا کنید.

فایل .drc را در نمونه DracoMesh بخوانید

 
    byte[] cube = File.ReadAllBytes("cube.drc");
    DracoMesh dm = (DracoMesh)Draco.Decode(cube);

فایل Draco را بخوانید و در Wavefront OBJ در سی شارپ بنویسید

کد زیر نحوه باز کردن فایل 3D Draco موجود و نوشتن در فرمت obj برای پردازش بیشتر را نشان می دهد:

  • فایل Draco با نام "input.drc" را با استفاده از File.ReadAllBytesباز کنید.
  • مش Draco را از بایت ها در یک شی DracoMeshبارگیری کنید.
  • ویژگی موقعیت را با استفاده از DracoMesh.GetNamedAttributeپیدا کنید و محتوای آن را به Span<float>تبدیل کنید.
  • نقاط کنترل را با استفاده از قالب OBJ روی خروجی بنویسید.
  • خواندن هر گوشه صورت با استفاده از DracoMesh.ReadFace
  • گوشه‌های صورت را با استفاده از PointAttribute.MappedIndexبه نمایه نقاط کنترل نگاشت کنید.
  • چهره ها را با استفاده از قالب OBJ در خروجی بنویسید.

قطعه کد زیر را کپی و در فایل اصلی خود جایگذاری کنید و برنامه را اجرا کنید.

فایل .drc را به DracoMesh بخوانید و به obj جبهه موج صادر کنید

 
    //load draco file
    var bytes = File.ReadAllBytes("input.drc");
    var mesh = Draco.Decode(bytes) as DracoMesh;
    if (mesh == null)
        throw new InvalidDataException("Input file is not a valid draco file.");
    var attrPos = mesh.GetNamedAttribute(AttributeType.Position);
    var points = MemoryMarshal.Cast(attrPos.Buffer.AsSpan());
    var sb = new StringBuilder();
    for (int i = 0; i < points.Length; i += 3)
    {
        sb.AppendLine($"v {points[i]} {points[i + 1]} {points[i + 2]}");
    }
    Span face = stackalloc int[3];
    for (int i = 0; i < mesh.NumFaces; i++)
    {
        mesh.ReadFace(i, face);
        var a = attrPos.MappedIndex(face[0]) + 1;
        var b = attrPos.MappedIndex(face[1]) + 1;
        var c = attrPos.MappedIndex(face[2]) + 1;
        sb.AppendLine($"f {a} {b} {c}");
    }
    File.WriteAllText("output.obj", sb.ToString());

نقاط کنترل، مثلث ها را به صورت برنامه ریزی شده در C# در فایل Draco رمزگذاری کنید

کد ارائه شده نشان می دهد که چگونه می توان یک فایل Draco را به صورت برنامه ریزی شده از نقاط کنترل و مثلث ها ایجاد کرد و آن را به عنوان "output.drc" با استفاده از C# ذخیره کرد. در اینجا خلاصه ای از مراحل است:

  • یک نمونه DracoMeshایجاد کنید.
  • نقاط کنترل را به PointAttributeبپیچید.
  • PointAttributeرا به DracoMeshاضافه کنید.
  • شاخص های مثلث را اضافه کنید.
  • یک شی DracoEncodeOptionsبا پارامترهای رمزگذاری مشخص شده ایجاد کنید.
  • مش را با استفاده از Draco.Encodeبه بایت رمزگذاری کنید.

قطعه کد زیر را کپی و در فایل اصلی خود جایگذاری کنید و برنامه را اجرا کنید.

بردارها و چهره ها را در فایل drc. کدگذاری کنید

 
  Vector3[] controlPoints = new Vector3[]
  {
          new Vector3( -5, 0, 5.0f),
          new Vector3( 5, 0, 5.0f),
          new Vector3( 5, 10, 5.0f),
          new Vector3( -5, 10, 5.0f),
          new Vector3( -5, 0, -5.0f),
          new Vector3( 5, 0, -5.0f),
          new Vector3( 5, 10, -5.0f),
          new Vector3( -5, 10, -5.0f)
  };

  int[] indices = new int[]
  {
          0,1,2, 0, 2, 3, // Front face (Z+)
          1,5,6, 1, 6, 2, // Right side (X+)
          5,4,7, 5, 7, 6, // Back face (Z-)
          4,0,3, 4, 3, 7, // Left side (X-)
          0,4,5, 0, 5, 1, // Bottom face (Y-)
          3,2,6, 3, 6, 7 // Top face (Y+)
  };

  var mesh = new DracoMesh();
  //construct an attribute for position, with type float[3], 
  var attrPos = PointAttribute.Wrap(AttributeType.Position, controlPoints);
  mesh.AddAttribute(attrPos);
  //add triangle indices
  mesh.Indices.AddRange(indices);
  //number of the control points, it's required for the encoder to produce correct result.
  mesh.NumPoints = 8;
  //You can also use following methods to deduplicate the attributes to reduce the file size
  //mesh.DeduplicateAttributeValues();
  //mesh.DeduplicatePointIds();

  var opt = new DracoEncodeOptions();
  var drcBytes = Draco.Encode(mesh, opt);
  File.WriteAllBytes("output.drc", drcBytes);

FileFormat.Drako یک API بصری، پشتیبانی از فرمت جامع، و یکپارچه‌سازی یکپارچه با برنامه‌های C# ارائه می‌دهد که به توسعه‌دهندگان و کاربران امکان می‌دهد تا فایل‌های Draco را بدون زحمت مدیریت کنند. چه در حال تبدیل فایل‌های draco به فایل‌های دیگر باشید، چه در حال بارگیری draco برای رندر کردن، FileFormat.Drako این فرآیند را ساده می‌کند و کارایی و کیفیت مطلوب را در هر مرحله تضمین می‌کند.

مخزن GitHub ما را برای مشارکت، پیشنهاد بهبودها و بهبود این API منبع باز کاوش کنید: FileFormat.Drako -for-.NET

 فارسی