ونحن متحمسون لإعلان توافر Aspose3D FOSS لـ .NET - مكتبة مفتوحة المصدر للعمل مع تنسيقات الملفات 3D في تطبيقات .NET. تم بناءها كحل C# النقي بدون إدمانات أصلية، وتهدف المكتبات إلى .Net 10.0 وما بعده، مما يجعلها متاحة لمجموعة واسعة من المشاريع والبيئات.
هذا المنشور يمر عبر ما تقدمه المكتبة ، وكيفية البدء ، وأين تذهب من هنا.
ما هو Aspose.3D FOSS لـ .NET؟?
Aspose.3D FOSS for .NET هو مكتبة معالجة الملفات 3D خفيفة الوزن نشرت تحت… مجوز MIT.يوفر API الرسم البياني المسرحية التي تسمح لك بتحميل وتحقق وتحويل وتخزين نماذج 3D عبر عدة تنسيقات تستخدم على نطاق واسع.المكتبة مكتوبة بالكامل في C# ولا تتطلب أي إعدادات خارجية من الأصلي أو المنصة المحددة.
يتوفر رمز المصدر على GitHub: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
الاهتمام الرئيسي
- C# النقي - لا P/Invoke، لا مكتبات الأصلية، ولا قيود على المنصة.
- .NET 10.0+ متوافق .
- مجوزات MIT - استخدامها في المشاريع الشخصية أو التجارية ، أو الملكية دون قيود.
- معمارية المسرحية - شجرة مألوفة من العقد والطوابق والكاميرات والمواد.
- دعم متعدد النماذج - قراءة وتدوين ملفات OBJ، STL، glTF 2.0، GLB، FBX، Collada، و 3MF.
بدء سريع
تثبيت NuGet
إضافة حزمة NuGet إلى مشروعك:
dotnet add package Aspose.3D.FOSSأول تحويل لك
أسهل حالة الاستخدام هو تحميل ملف 3D في تنسيق واحد وتخزينها في آخر.هنا تحويل خطين من OBJ إلى STL:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("cube.obj");
scene.Save("output.stl");
وَالْمُتَّقِينَ Scene الدرجة هي نقطة الدخول المركزية.دعوة scene.Open() مع مسار الملف لتحميل نموذج ثم الاتصال Save() مع مسار الهدف.المكتبة يضع تنسيق من ملحق الملفات.
بناء مشهد من Scratch
يمكنك أيضًا إنشاء المشاهد برمجة:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
var box = new Box(2, 2, 2);
var node = scene.RootNode.CreateChildNode("Box", box);
node.Transform.Translation = new FVector3(1, 2, 3);
scene.Save("scene.gltf");
هذا يخلق مشهدًا جديدًّا ، ويضيف مربعًًى بدائيًَّا كعقد طفل تحت الجذر ، ويتم وضعها في إحداثيات (1, 2, 3) ، وينتقل النتيجة إلى ملف glTF.
تحميل مع خيارات محددة للفرم
عندما تحتاج إلى السيطرة على عملية التحميل، كل تنسيق يوفر فئة خيارات مخصصة.على سبيل المثال، تحميل ملف STL مع الخيارات المحددة:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
var scene = new Scene();
var opts = new StlLoadOptions();
scene.Open("part.stl", opts);
// Inspect the loaded scene
Console.WriteLine("Root children: " + scene.RootNode.ChildNodes.Count);
// Re-export as OBJ
scene.Save("part.obj");
وَالْمُتَّقِينَ scene.Open() الطريقة تقبل أي من أنواع خيارات الحمل: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions,أو TmfLoadOptions.
عبر المسرحية الرسوم البيانية
بمجرد تحميل المشهد ، يمكنك المشي على شجرة العقد لفحص أو تعديل محتواه:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
scene.Open("model.gltf");
foreach (var child in scene.RootNode.ChildNodes)
{
Console.WriteLine("Node: " + child.Name);
Console.WriteLine(" Translation: " + child.Transform.Translation);
if (child.Entity is Mesh mesh)
{
Console.WriteLine(" Vertices: " + mesh.ControlPoints.Count);
}
}
هذا النموذج مفيد للتفريغ، وتوليد التقارير حول محتوى النماذجة، أو تعديل بشكل انتقائي أجزاء من المشهد قبل إعادة التصدير.
تطبيق التحويلات
يتم وضع العقد في الفضاء 3D من خلال Transform الممتلكات في كل Node:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
var parent = scene.RootNode.CreateChildNode("Parent");
parent.Transform.Translation = new FVector3(10, 0, 0);
var child = parent.CreateChildNode("Child");
child.Transform.Translation = new FVector3(5, 0, 0);
child.Transform.Scale = new FVector3(2, 2, 2);
// Child's world position is (15, 0, 0) due to
// parent-child transform inheritance
scene.Save("transformed.gltf");
تتبع التحولات نموذج التراث الأب والطفل القياسي: موقف الطفل في الفضاء العالمي هو مزيج من تحولها المحلي وكل الآباء يتحولون إلى الجذر.
ما هو مدرجة
وتضم المكتبة سفن مع مجموعة مركزة من القدرات المصممة حول نموذج الرسومات المشهدية 3D.
مشاهدة Graph
الرسم البياني للمشهد هو الظهر الخلفي لـ API. يتم تمثيل كل ملف 3D كهيكل شجرة:
| الفصول الدراسية | دور |
|---|---|
Scene | حاوية المستوى العلوي؛ جذور الرسم البياني للمشهد |
Node | موقع مُسمى في الشجرة؛ يحتفظ بالتحولات والغدد الصغيرة |
Entity | قاعدة مغلقة للأشياء البصرية المرفقة بالغدد |
Mesh | الهندسة الجيولوجية المتعددة - الأفق، الوجوه، الطبيعية |
Camera | تعريف الكاميرا الافتراضية |
Transform | الترجمة المحلية، والدورات، والمقياس لنوود |
GlobalTransform | تحويل الفضاء العالمي الحاسوبي |
بناء في البدائية
يحتوي إصدار .NET على فصول شكل معيارية يمكن ربطها مباشرة بالغواصات أو تحويلها إلى Mesh:
- صندوق - مربع مقيد بالحاوية مع عرض قابل للتكوين وارتفاع وعمق.
- الفضاء - الفئة المعدنية مع راديو قابل للتكوين.
- سيليندر - الأسطوانة المعدنية مع الراديو قابل للتكوين وارتفاع.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);
المواد
يقدم المكتبة العديد من أنواع المواد:
- LambertMaterial - المواد الكلاسيكية التي تنبعث فقط من مكونات اللون البيئية والمتنوعة والإفرازية والتعكسية.
- PhongMaterial - يمتد لامبرت مع الاهتمام المتألق والضوء.
- PbrMaterial - مادة التصوير القائمة على اللياقة البدنية مع الألوان الأساسية والمعادن والخشنة والأوكسولون والنسيج.
أدوات الرياضيات
وَالْمُتَّقِينَ Aspose.ThreeD ويشمل اسم الفضاء الأساسية الرياضيات البدائية:
- FVector3 - أجهزة الكمبيوتر المحمول ( 3 )
X,Y,Z( يستخدم من قبلTransform.TranslationوTransform.Scale. - الـ Vector4 (
Aspose.ThreeD.Utilities(المتنوع من أربعة أجزاء) - (x,y,z,w) لمركز التحكم والنقاط العادية.ملاحظة: منفصلةAspose.ThreeD.Vector4(السفينة، الأراضي العليا) موجودة أيضا؛;Mesh.ControlPointsيستخدم خيار الاستخدامات المزدوجة الدقة. - ماتريكس4 - 4x4 المصفوفة التحويلية.
- كاتيرن - التمثيل الدوري.استخدم من قبل
Transform.Rotation. - BoundingBox - مربع الحدود المرتبط بالحافة للطلبات الفضائية.
var a = new FVector3(1, 0, 0);
var b = new FVector3(0, 1, 0);
// Vector operations for spatial computations
تحميل و حفظ الخيارات
كل تنسيق لديه فصول خيارات مخصصة التي تسمح لك بالتحكم في سلوك الواردات والتصدير:
| شكل | تحميل الخيارات | حفظ الخيارات |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| GLTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | FbxSaveOptions |
| 3MF | TmfLoadOptions | TmfSaveOptions |
على سبيل المثال، لتحميل ملف OBJ مع التمرير المنسق والتطبيع الطبيعي:
var opts = new ObjLoadOptions();
opts.FlipCoordinateSystem = true;
opts.NormalizeNormal = true;
scene.Open("model.obj", opts);
تنسيقات مدعومة
يلخص الجدول التالي تنسيقات Aspose.3D FOSS for .NET يمكن قراءة الكتابة.
| شكل | التمديد | استيراد | تصدير | ملاحظات |
|---|---|---|---|---|
| OBJ | .obj | نعم | نعم | مع مادة MTL |
| STL | .stl | نعم | نعم | البنطال + ASCII |
| GLTF | .gltf, .glb | نعم | نعم | تنسيق JSON؛; .glb هو الخيار الثنائي ذات الحاوية الذاتية |
| FBX | .fbx | نعم | نعم | التصدير الثنائي فقط؛ يتم الإعلان عن تصدير ASCII ولكن ليس نشطا في هذا النسخة |
| COLLADA | .dae | نعم | نعم | |
| 3MF | .3mf | نعم | نعم | تنسيق التصنيع 3D على أساس ZIP |
إعدادات اختيار دليل
اختيار النموذج الصحيح يعتمد على حالة الاستخدام الخاصة بك:
- OBJ مثالية عندما تحتاج إلى أقصى قدر من التوافق بين الأدوات 3D تقريبا كل تطبيق النمذجة يمكن قراءة وكتابة OBJ. يعمل بشكل جيد لتبادل البيانات الماس ولكن يحمل فقط المعلومات المادية الأساسية من خلال ملفات MTL المرافقين.
- STL هو شكل الاختيار لثورات العمل الطباعة 3D. فإنه يخزن الهندسة المثلث الخام دون مواد أو سلسلة المسرح، وهو بالضبط ما يتوقع البرمجيات الخرسانة.
- GLTF هو المعيار الحديث للإنترنت وفي الوقت الحقيقي 3D. يدعم مواد PBR، سلسلة المسرح الكامل، وتصميمها للنقل الفعال.استخدام glTF عند بناء المشاهدين على شبكة الإنترنت أو استهداف أي خط أنابيب التصوير في الوقت الواقعي.
- FBX يمتلك تدفقات عمل متكاملة في تطوير الألعاب وخلق المحتوى الرقمي، ويدعم بيانات المشهد الغنية بما في ذلك الهرم والمواد. Aspose.3D FOSS for .NET supports FBX الاستيراد والتصدير.ملاحظة: تصدير إنتاج FBX الثنائي فقط - ASCII FB X رمز التصدير موجود في المصدر ولكن لا يتم توصيلها إلى مسار التصادير في هذا الإصدار.
- 3MF هو تنسيق طباعة 3D حديث يدعم بيانات غنية ومواد ومشاهد متعددة الأشياء في حزمة واحدة على أساس ZIP.
الحد المعروف
Scene.Render() هو غير مدعوم في إصدار FOSS.دعوة هذه الطريقة سوف يلقي أ NotImplementedException.تم تصميم المكتبة لمعالجة 3D القائمة على الملفات - تحميل وتلاعب وتحويل ونقل النماذج - بدلا من عرض في الوقت الحقيقي لعرض.
المصدر المفتوح والتصنيف
Aspose.3D FOSS for .NET يتم إصدارها تحت رخصة MIT.وهذا يعني أنك حر في:
- استخدم المكتبة في التطبيقات التجارية والملكية.
- تعديل رمز المصدر لتناسب احتياجاتك.
- توزيع المكتبة كجزء من برامجك الخاصة.
لا توجد رسوم الملكية، ولا حدود الاستخدام، وليس هناك متطلبات التخصيص ما وراء ما يحدده ترخيص MIT.
يتم استضافة الرمز المصدر الكامل على GitHub ، والمساهمات موضع ترحيب: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
متطلبات النظام
| مطلوب | التفاصيل |
|---|---|
| .نسخة .NET | 10.0 or later |
| الاعتماد | لا شيء (C# النقي) |
| منصات | أي منصة تعمل على .NET |
| مدير الحزمة | NuGet |
بدءاً من
إليك الموارد التي تساعدك على الاستيقاظ والركض:
- الوثائق - توفر إرشادات شاملة ومسارات API متاحة على موقع Aspose.3D الوثائقية.
- قاعدة المعرفة - كيفية العمل في المقالات والنصائح التي تحل المشكلات في 3D كوبا.
- إشارة API - إشارة مفصلة إلى الفئة والطريقة في Aspose.3D API مرجعية.
- رمز المصدر - التصفح والمساهمة في GitHub.
- NuGet - يتم نشر الحزمة على أنها
Aspose.3Dعلى نوتردام.
حالات الاستخدام المشترك
إليك بعض السيناريوهات العملية حيث Aspose.3D FOSS for .NET يناسب جيدا:
تحويل الأنابيب
العديد من الفرق تتلقى أصول 3D في شكل واحد ولكنها تحتاج إليها في آخر.ويمكن لفريق التصميم العمل على FBX بينما يحتاج فريق الويب إلى glTF.تسمح لك المكتبة ببناء أنابيب التحويل الآلي:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
// Convert all incoming FBX assets to GLB for the web team
var scene = new Scene();
scene.Open("asset.fbx");
scene.Save("asset.glb");
3D Model Inspection and Validation
قبل دمج أصول 3D في تطبيقك ، قد ترغب في تأكيد محتوياتها - التحقق من حسابات العقد ، والتحقق في الهندسة الجيولوجية ، أو التأكد من وجود العناصر المتوقعة:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
scene.Open("model.obj");
int nodeCount = scene.RootNode.ChildNodes.Count;
Console.WriteLine("Top-level nodes: " + nodeCount);
foreach (var child in scene.RootNode.ChildNodes)
{
if (child.Entity is Mesh mesh)
{
Console.WriteLine(child.Name + ": "
+ mesh.ControlPoints.Count + " vertices");
}
}
مجمع المشهد
يمكنك تحميل العديد من النماذج ودمجها في مشهد واحد:
using Aspose.ThreeD;
var scene = new Scene();
var part1 = new Scene();
part1.Open("chassis.obj");
var part2 = new Scene();
part2.Open("wheels.obj");
// Add nodes from each part into the combined scene
foreach (var child in part1.RootNode.ChildNodes)
{
scene.RootNode.ChildNodes.Add(child);
}
foreach (var child in part2.RootNode.ChildNodes)
{
scene.RootNode.ChildNodes.Add(child);
}
scene.Save("assembled.gltf");
ما هو التالي
في المقالات القادمة سوف نغطي:
- غمر عميق في الميزات الرئيسية لـ API المسرحية والمواد والوسائل الرياضية.
- دليل عملي للعمل مع كل تنسيق 3D مدعوم - OBJ، STL، glTF، FBX، و 3MF - بما في ذلك خيارات التحميل / حفظ ونماذج تحويل المجموعة.
ابق متحمسًا ، وشعور حر لاستكشاف المكتبة ومشاركة ردود الفعل الخاصة بك على GitHub.