Как конвертировать 3D модели в .NET
Aspose.3D for .NET делает преобразование форматов двухшаговой операцией: загрузите исходный файл с помощью Scene.Open(), затем сохраните в целевой формат с помощью Scene.Save(). Формат вывода определяется по расширению файла.
Пошаговое руководство
Шаг 1: Установить пакет
dotnet add package Aspose.3D --version 26.1.0Шаг 2: Импорт пространств имён
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;Шаг 3: Загрузить исходный файл
var scene = new Scene();
scene.Open("input.fbx");Шаг 4: Сохранить в целевом формате
scene.Save("output.glb");Библиотека определяет целевой формат по расширению. Поддерживаемые форматы экспорта: OBJ, STL, glTF 2.0 / GLB, FBX, COLLADA и 3MF.
Шаг 5: Использовать параметры сохранения, специфичные для формата
Для тонкого управления передайте подкласс SaveOptions:
// FBX output — always produces binary FBX
// FbxSaveOptions exists but has no format-specific properties in this version
scene.Save("output.fbx");
// OBJ with flipped coordinate system
scene.Save("output.obj", new ObjSaveOptions { FlipCoordinateSystem = true });
// COLLADA with indented XML
scene.Save("output.dae", new ColladaSaveOptions { Indented = true });Общие рецепты конвертации
| Исходный | Целевой | Код |
|---|---|---|
| OBJ to GLB | scene.Open("input.obj"); scene.Save("output.glb"); | Бинарный glTF для веб‑просмотрщиков |
| FBX to STL | scene.Open("input.fbx"); scene.Save("output.stl"); | Триангулированная сетка для 3D‑печати |
| glTF to COLLADA | scene.Open("input.gltf"); scene.Save("output.dae"); | Формат обмена DAE |
| STL to OBJ | scene.Open("input.stl"); scene.Save("output.obj"); | Wavefront для инструментов моделирования |
Распространённые проблемы и решения
Выходной файл пустой или очень маленький
Убедитесь, что исходный файл загружен успешно. Проверьте scene.RootNode.ChildNodes.Count после Open().
Материалы, потерянные при конвертации
Не все форматы несут одинаковые свойства материалов. Материалы OBJ используют Lambert/Phong; glTF использует PBR. Сопоставление материалов — это best‑effort через границы форматов.
Разница масштабов между исходным и выходным
Разные инструменты используют разные системы единиц. Примените ObjLoadOptions.Scale при импорте или отрегулируйте node.Transform.Scale перед сохранением.
Часто задаваемые вопросы (FAQ)
Могу ли я конвертировать PLY в другой формат?
PLY поддерживает только импорт. Загрузите файл PLY и сохраните в любой формат экспорта (OBJ, STL, GLB, FBX, COLLADA).
Сохраняет ли преобразование анимацию?
Данные анимации (AnimationClip) сохраняются, когда оба формата поддерживают их (например, FBX в glTF). STL и OBJ не содержат данных анимации.
Могу ли я пакетно конвертировать несколько файлов?
Создайте новый Scene для каждого файла в цикле. Каждый Scene независим и может обрабатываться параллельно.