Ние сме много доволни да обявим наличието на 3D FOSS за .NET - свободна, отворена библиотека за работа с 3D файлови формати в .NET приложения. Изградена като чисто C# решение без коренни зависимост, библиотеката цели .Net 10.0 и по-късно, което я прави достъпна до широк спектър от проекти и среди.
Тази статия разглежда какво предлага библиотеката, как да започнете и къде да отидете от тук.
Какво е 3D FOSS за .NET?
Aspose.3D FOSS за .NET е леко тежка 3D библиотека за обработка на файлове, публикувана под Мит лиценз.Той осигурява API за сцена-графи, която ви позволява да зареждате, инспектирате, трансформирате и съхранявате 3D модели в няколко широко използвани формати. Библиотеката е изцяло написана в C# и не изисква външни местни бинарни или платформи специфични конфигурации.
Източникът е достъпен на GitHub: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET / Апсолутно заснемане на сайта
Ключови нагласи
- Чистата C# - няма P/Invoke, няма местни библиотеки, не са ограничени платформите.
- .NET 10.0+ Съвместим е.
- Мит лицензиран - да се използва в лични, търговски или собственостни проекти без ограничения.
- Сценаграфска архитектура - познато дърво от възли, меси, камери и материали.
- Мултиформатна поддръжка - четене и писане на OBJ, STL, GLTF 2.0, ГЛБ, FBX, Collada и 3MF файлове.
Бързо стартиране
НУГЕТ инсталация
Добавете пакета NuGet към вашия проект:
dotnet add package Aspose.3D --version 26.1.0
Първата ви конверсия
Най-простият случай за използване е да изтеглите 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), и изнася резултата като глтФ файл.
Изтегляне на формат-специфични опции
Когато се нуждаете от по-добра контрол над процеса на зареждане, всеки формат осигурява специален клас опции. например, зарязване на файл 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 сцена-граф модел.
Сцена График
Графикът на сцената е гръбнакът в 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 - разширява Lambert с спекуларни височини и блясък.
- PbrMaterial - физически базиран рендеринг материал с основен цвят, метал, грубост, оцлузия и текстура слотове.
Математически полезни средства
и на Aspose.ThreeD Наместен пространство включва основни математически примитиви:
- ФВЕКТОР 3 - еднократна точност на 3 компонента плувен вектор (
X,Y,ZИзползвани отTransform.TranslationиTransform.Scale. - Вектор 4 (
Aspose.ThreeD.Utilities2) - Двойна точност 4-компонентен вектор (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 |
| ГЛТФ / 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 за .NET може да чете и пише.
| Форматът | Разширяване | Вносът | Износът | бележки |
|---|---|---|---|---|
| OBJ | .obj | Да | Да | С МТЛ материали |
| STL | .stl | Да | Да | Бинарни + ASCII |
| ГЛТФ | .gltf, .glb | Да | Да | формат JSON; .glb Това е самоконтейнерният бинарни вариант. |
| FBX | .fbx | Да | Да | Бинарни експорти само; АСЦИИ експорт е деклариран, но не е активен в тази версия |
| COLLADA | .dae | Да | Да | |
| 3MF | .3mf | Да | Да | 3D формат на производство на ZIP |
Формат на избора ръководство
Изборът на правилния формат зависи от случая ви с използване:
- OBJ е идеален, когато се нуждаете от максимална съвместимост между 3D инструменти. Почти всяко приложение за моделиране може да чете и пише OBJ. Той работи добре за обмен на данни в мешавина, но носи само основна материална информация чрез файлове MTL съдружници.
- STL Той съхранява сурова триъгълна геометрия без материали или сценична йерархия, което е точно това, от което се очаква софтуерът за слайдър.
- ГЛТФ е модерен стандарт за уеб и 3D в реално време. Поддържа PBR материали, пълна сцена йерархии, и е предназначен за ефективно предаване. Използвайте glTF при изграждане на уеб базирани зрители или целенасочено всяка реална дата rendering тръба.
- FBX Тя е дълбоко интегрирана в разработването на игри и цифровите съдържание създаване работни потоци. тя поддържа богати сцени данни, включително йерархии и материали. Aspose.3D FOSS за .NET поддържа FBX Внос и износ.Забележка: износът произвежда само бинарния FBX — код за експорт на ASCII FB X съществува в източника, но не е свързан към маршрута за износа в тази версия.
- 3MF Това е модерен 3D формат, който поддържа богати метаданни, материали и многообектни сцени в един пакет базиран на ZIP.
Известни ограничения
Scene.Render() е Не подпомагат В този случай, като се използва тази методика, ще бъде изхвърлена една NotImplementedException.Библиотеката е предназначена за 3D обработка на базата на файлове - зареждане, манипулиране, трансформация и спасяване на модели - вместо реално време предаване на дисплей.
Отворени източници и лицензиране
Aspose.3D FOSS за .NET се пуска под Мит лиценз.Това означава, че сте свободни да:
- Използвайте библиотеката в търговски и собственостни приложения.
- Променете кода, за да отговаря на вашите нужди.
- Разпределете библиотеката като част от собствения си софтуер.
Няма такса за роялти, няма ограничения за употреба и не съществуват изисквания за присъждане извън това, което е посочено в лиценза на MIT.
Пълният източник на кода е хостиран в GitHub, а приносите са добре дошли: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET / Апсолутно заснемане на сайта
Системни изисквания
| изискване | Детайли |
|---|---|
| .NET версия | 10.0 or later |
| зависимост | Не е (чиста C#) |
| Платформи | Всяка платформа, която работи .NET |
| Пакет мениджър | NuGet |
Започваме
Ето и основните средства, които ще ви помогнат да се изправите и да вървите:
- Документация - всеобхватни ръководства и API ходъри са на разположение в Апсос.3D документация сайт.
- Знание база - практически как да се правят статии и съвети за решаване на проблеми в Апсос 3D KB.
- Огнено референтно - подробно класиране и метод на референция в Апсос 3D API Референт.
- Източник Код - да се прегледа и да допринесе за GitHub.
- NuGet - Пакетът е публикуван като
Aspose.3Dна НюГет.
Общи случаи на употреба
Ето някои практически сценарии, където Aspose.3D FOSS за .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.