FileFormat.Drako لـ .NET
تبسيط عملية قراءة وكتابة ملفات Google Draco باستخدام API .NET
تعديل ملفات DRC المضغوطة بسهولة باستخدام FileFormat.Drako، API .NET خفيف الوزن ومفتوح المصدر، لتبسيط تحويل ملفات Draco والأتمتة
FileFormat.Drako for .NET يُحدث ثورة في تجربة معالجة ملفات Draco. في هذا الدليل الشامل، نتعمق في وظائف وفوائد الاستفادة من FileFormat.Drako، وهي واجهة برمجة تطبيقات .NET خفيفة الوزن ومفتوحة المصدر، للتعامل مع ملفات Draco بسهولة ودون عناء.
Draco هي مكتبة ضغط مفتوحة المصدر تم تطويرها بواسطة Google وهي متخصصة في ضغط وفك ضغط الشبكات الهندسية ثلاثية الأبعاد والسحب النقطية. من خلال تقليل حجم ملفات الرسومات ثلاثية الأبعاد بشكل كبير، تتيح Draco إمكانية النقل بشكل أسرع وتقليل متطلبات التخزين مع الحفاظ على الجودة المرئية. وهو يدعم العديد من التطبيقات ثلاثية الأبعاد، بما في ذلك المنصات المستندة إلى الويب والمتنقلة، مما يضمن التعامل الفعال مع البيانات ثلاثية الأبعاد المعقدة. يستخدم Draco على نطاق واسع في صناعات مثل الألعاب والواقع الافتراضي والتصور ثلاثي الأبعاد لتحسين الأداء وتعزيز تجربة المستخدم.
يظهر FileFormat.Drako كحل قوي لقراءة وكتابة ملفات Draco بسلاسة. تعمل واجهة برمجة التطبيقات .NET API خفيفة الوزن ومفتوحة المصدر على تبسيط عمليات صور Draco، مما يوفر للمطورين والمستخدمين واجهة سهلة الاستخدام للتعامل مع ملفات Draco دون عناء.
يتوفر FileFormat.Drako ضمن فتح الترخيص.< / ع>
الميزات والفوائد الرئيسية- نسب ضغط عالية: يحقق Draco تخفيضًا كبيرًا في أحجام الملفات، وغالبًا ما يقللها بنسبة تصل إلى 90% دون خسارة ملحوظة في جودة الصورة. وهذا يجعله مثاليًا للتطبيقات التي يكون فيها النطاق الترددي والتخزين محدودًا.
- دعم أنواع البيانات المختلفة: يدعم Draco الضغط لمجموعة كبيرة من أنواع البيانات ثلاثية الأبعاد، بما في ذلك الشبكات الهندسية والسحب النقطية. يمكنه التعامل مع مواضع القمة والألوان والأوضاع الطبيعية والسمات الأخرى بكفاءة.
- الضغط وإلغاء الضغط السريع: تم تصميم المكتبة لتوفير ضغط وإلغاء ضغط عالي السرعة، مما يجعلها مناسبة لتطبيقات الوقت الفعلي مثل المشاهد ثلاثية الأبعاد المستندة إلى الويب وتجارب الواقع الافتراضي.
- مفتوح المصدر ومجاني: استمتع بمزايا الحل مفتوح المصدر بدون رسوم ترخيص، مما يجعله في متناول المطورين والمستخدمين على جميع المستويات.
- التكامل السلس مع تطبيقات C#: قم بدمج FileFormat.Drako بسهولة في تطبيقات C#، مما يتيح التعامل السلس مع ملفات Draco ضمن سير العمل الحالي لديك.
- نسب ضغط عالية: يحقق Draco تخفيضًا كبيرًا في أحجام الملفات، وغالبًا ما يقللها بنسبة تصل إلى 90% دون خسارة ملحوظة في جودة الصورة. وهذا يجعله مثاليًا للتطبيقات التي يكون فيها النطاق الترددي والتخزين محدودًا.
- دعم أنواع البيانات المختلفة: يدعم Draco الضغط لمجموعة كبيرة من أنواع البيانات ثلاثية الأبعاد، بما في ذلك الشبكات الهندسية والسحب النقطية. يمكنه التعامل مع مواضع القمة والألوان والأوضاع الطبيعية والسمات الأخرى بكفاءة.
- الضغط وإلغاء الضغط السريع: تم تصميم المكتبة لتوفير ضغط وإلغاء ضغط عالي السرعة، مما يجعلها مناسبة لتطبيقات الوقت الفعلي مثل المشاهد ثلاثية الأبعاد المستندة إلى الويب وتجارب الواقع الافتراضي.
- مفتوح المصدر ومجاني: استمتع بمزايا الحل مفتوح المصدر بدون رسوم ترخيص، مما يجعله في متناول المطورين والمستخدمين على جميع المستويات.
- التكامل السلس مع تطبيقات C#: قم بدمج FileFormat.Drako بسهولة في تطبيقات C#، مما يتيح التعامل السلس مع ملفات Draco ضمن سير العمل الحالي لديك.
كيفية البدء باستخدامFileFormat.Drako لـ .NET
تعتبر عملية البدء باستخدام FileFormat.Drako عملية سريعة وسهلة. ما عليك سوى اتباع الخطوات التالية:
- InstallFileFormat.Drako: قم بتثبيت حزمة FileFormat.Drako عبر NuGet Package Manager أو .NET CLI.
- التكامل مع مشروعك: قم بالرجوع إلى مكتبة FileFormat.Drako في مشروع C# الخاص بك.
- بدء التحويل: استخدم واجهة برمجة التطبيقات البسيطة التي يوفرها FileFormat.Drako لقراءة ملفات Draco وكتابتها.
الطريقة الموصى بها لتثبيت FileFormat.Drako لـ .NET هي استخدام NuGet. الرجاء استخدام الأمر التالي للتثبيت السلس.
InstallFileFormat.Drako لـ .NET عبر NuGet
NuGet> Install-PackageFileFormat.Drako
يمكنك أيضًا تنزيله مباشرةً من GitHub.قراءة ملف Draco في DracoMesh في C#
يقوم مقتطف التعليمات البرمجية هذا بتحميل ملف 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 في C#
يوضح التعليمة البرمجية التالية كيفية فتح ملف Draco ثلاثي الأبعاد موجود، والكتابة بتنسيق obj لمزيد من المعالجة:
- افتح ملف Draco المسمى "input.drc" باستخدام
File.ReadAllBytes
. - قم بتحميل شبكة Draco من البايتات إلى كائن
DracoMesh
. - ابحث عن سمة الموضع باستخدام
DracoMesh.GetNamedAttribute
وحوّل محتواها إلىSpan<float>
. - اكتب نقاط التحكم للإخراج باستخدام تنسيق OBJ.
- اقرأ زوايا كل وجه باستخدام
DracoMesh.ReadFace
- قم بتعيين زوايا الوجه إلى فهرس نقاط التحكم باستخدام
PointAttribute.MappedIndex
. - اكتب الوجوه للإخراج باستخدام تنسيق OBJ.
انسخ مقتطف الشفرة أدناه والصقه في ملفك الرئيسي وقم بتنفيذ البرنامج.
اقرأ ملف .drc إلى DracoMesh وقم بالتصدير إلى wavefront 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());
تشفير نقاط التحكم والمثلثات إلى ملف Draco برمجيًا في C#
يوضح الكود المقدم كيفية إنشاء ملف 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 واجهة برمجة تطبيقات سهلة الاستخدام ودعمًا شاملاً للتنسيق وتكاملًا سلسًا مع تطبيقات C#، مما يمكّن المطورين والمستخدمين على حدٍ سواء من إدارة ملفات Draco دون عناء. سواء كنت تقوم بتحويل ملفات draco إلى ملفات أخرى، أو تحميل draco للعرض، فإن FileFormat.Drako يبسط العملية، مما يضمن الكفاءة والجودة المثلى في كل خطوة.
استكشف مستودع GitHub الخاص بنا للمساهمة واقتراح التحسينات وتعزيز واجهة برمجة التطبيقات مفتوحة المصدر هذه: FileFormat.Drako -for-.NET