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