บทนำ

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 (ด้วย .mtl materials), 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');

ดูเพิ่มเติม