บทนำ
Aspose.3D FOSS สำหรับ TypeScript (@aspose/3d) เป็นไลบรารีรูปแบบไฟล์ 3D แบบโอเพ่นซอร์สที่ใช้ใบอนุญาต MIT สำหรับ 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), และลำดับชั้นการแปลงสามารถเข้าถึงได้อย่างเต็มที่สำหรับการอ่านและการเขียน.
คุณสมบัติหลัก
- I/O แบบหลายรูปแบบ: นำเข้าและส่งออก OBJ (ด้วย
.mtlmaterials), glTF 2.0 / GLB, STL (binary and ASCII), 3MF, และ COLLADA จากทั้งเส้นทางไฟล์และในหน่วยความจำBufferวัตถุ. การสนับสนุน FBX ยังไม่ได้เชื่อมต่อกับการตรวจจับอัตโนมัติ. - API กราฟฉาก:
Scene,Node,Mesh,Camera,Lightลำดับชั้นพร้อมการจัดการพ่อแม่/ลูกเต็มรูปแบบ; เดินทางโหนดแบบเรียกซ้ำผ่านnode.childNodes - ระบบวัสดุ PBR: วัสดุ Lambert, Phong, และ PBR (metallic/roughness) ที่เข้าถึงได้ผ่าน
node.entity.material - การดำเนินการ Mesh: เข้าถึงข้อมูลเวอร์เท็กซ์ดิบผ่าน
mesh.controlPoints(อาร์เรย์ของVector4), ดัชนีรูปหลายเหลี่ยมผ่านmesh.polygonCount, และช่ององค์ประกอบเวอร์เท็กซ์ผ่านmesh.getElement() - ยูทิลิตี้คณิตศาสตร์:
Vector2,Vector3,Vector4,Matrix4,Quaternion, และประเภทกล่องขอบเขตสำหรับการคำนวณเชิงพื้นที่ - ระบบแอนิเมชัน: การแอนิเมชันคีย์เฟรมด้วย
AnimationClip,AnimationChannel, และเส้นโค้งการอินเตอร์โพเลชัน (linear, Bezier, 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');