Вступ
Aspose.3D FOSS для TypeScript (@aspose/3d) є бібліотекою з відкритим вихідним кодом, ліцензованою за MIT, 3D формату файлів для Node.js та сучасних браузерних середовищ. Розробники, які створюють переглядачі 3D моделей, конвертери форматів, інструменти обробки геометрії або серверні 3D конвеєри, можуть встановити її за допомогою одного npm install @aspose/3d команда та одразу починає завантаження, конструювання та експорт 3D‑контенту.
Бібліотека підтримує основні формати обміну — OBJ, glTF 2.0 / GLB, STL, 3MF та COLLADA як для імпорту, так і для експорту. Класи імпортера/експортера FBX існують, але ще не підключені до автоматичного визначення формату. API графа сцени відображає модель, знайому з інструментів 3D‑моделювання: a Scene містить rootNode, кожен Node може містити дочірні вузли та об’єктні сутності (Mesh, Camera, Light), а ієрархія трансформацій повністю доступна для читання та запису.
Ключові особливості
- Багатоформатний ввід/вивід: Імпорт та експорт OBJ (з
.mtlматеріалами), glTF 2.0 / GLB, STL (бінарний та ASCII), 3MF та COLLADA як з шляхів до файлів, так і в пам’ятіBufferоб’єктами. Підтримка FBX ще не підключена до автоматичного визначення. - API графа сцени:
Scene,Node,Mesh,Camera,Lightієрархія з повним керуванням батьків/дочок; рекурсивний обхід вузлів за допомогоюnode.childNodes - система матеріалів PBR: матеріали Lambert, Phong та PBR (metallic/roughness), доступні через
node.entity.material - Операції з сіткою: Доступ до необроблених даних вершин через
mesh.controlPoints(масивVector4), індекси полігонів черезmesh.polygonCount, та канали елементів вершин черезmesh.getElement() - Математичні утиліти:
Vector2,Vector3,Vector4,Matrix4,Quaternion, та типи обмежувальних коробок для просторових обчислень - Система анімації:Ключова анімація з
AnimationClip,AnimationChannel, та криві інтерполяції (лінійна, Безьє, TCB spline) - Опції, специфічні для формату: По‑форматно
LoadOptions/SaveOptionsкласи керують інвертуванням координат, масштабом, завантаженням матеріалів та іншим
Початок роботи
Встановлення через npm. Потрібен Node.js 18 або новіший; рекомендується TypeScript 5.0+.
npm install @aspose/3d
Завантажте файл OBJ і дослідіть сцену:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
const options = new ObjLoadOptions();
options.enableMaterials = true;
scene.open('model.obj', options);
for (const node of scene.rootNode.childNodes) {
if (node.entity && 'controlPoints' in node.entity) {
const mesh = node.entity as any;
console.log(`Mesh "${node.name}": ${mesh.controlPoints.length} vertices`);
}
}
Експорт у glTF
Збережіть будь‑яку завантажену або створену сцену у бінарний glTF 2.0 (GLB):
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
scene.open('input.obj', new ObjLoadOptions());
scene.save('output.glb');
console.log('Exported to output.glb');
Бібліотека автоматично визначає формат виводу за розширенням файлу. Передайте GltfSaveOptions екземпляр для керування вбудовуванням PBR‑матеріалів, текстурами та кодуванням у бінарному або JSON форматі.
Конструювання сцени
Створіть сцену програмно та експортуйте її:
import { Scene, Node } from '@aspose/3d';
import { Mesh } from '@aspose/3d/entities';
const scene = new Scene();
const mesh = new Mesh();
// ... populate mesh.controlPoints and polygons ...
const node = new Node('myMesh');
node.entity = mesh;
scene.rootNode.addChildNode(node);
scene.save('programmatic.glb');