บทนำ
เรากำลังปล่อย Aspose.3D FOSS สำหรับ Python, ไลบรารี pure-Python สำหรับการอ่าน, เขียน, และแปลงรูปแบบไฟล์ 3D ที่พบบ่อย ไลบรารีนี้ถูกเผยแพร่บน PyPI ในชื่อ aspose-3d-foss, มีสัญญาอนุญาต MIT และไม่มีการพึ่งพาไลบรารีภายนอกใดๆ.
หากคุณเคยต้องการตรวจสอบหรือแปลงไฟล์ 3D ด้วยโปรแกรม (ดึงจำนวนเวอร์เท็กซ์ของเมช, ส่งข้อมูลเรขาคณิต OBJ ไปยังสคริปต์ประมวลผล, หรือแปลงไฟล์ STL เป็น glTF เป็นชุดสำหรับเว็บวิวเวอร์), ไลบรารีนี้ถูกสร้างมาสำหรับกรณีการใช้งานนั้น ไม่ต้องการไดรเวอร์กราฟิก, โมดูลส่วนขยายแบบเนทีฟ, หรือการเชื่อมต่อคลาวด์ใด ๆ.
สิ่งที่รวมอยู่
กราฟฉากหลัก
ไฟล์ทุกไฟล์จะถูกโหลดเข้าสู่ Scene อ็อบเจ็กต์ที่สะท้อนโครงสร้างโหนดของไฟล์ต้นฉบับ โหนดจะบรรจุ Transform (การแปล, การหมุน, การสเกล) และหนึ่งหรือหลายเอนทิตี้ที่แนบมาด้วยเช่น Mesh, Camera, หรือ Light. กราฟฉากจะเหมือนกันไม่ว่าฟอร์แมตต้นทางจะเป็นอะไร ดังนั้นโค้ดที่เขียนเพื่อเดินและประมวลผลเรขาคณิตจะทำงานได้กับทุกฟอร์แมตที่รองรับโดยไม่ต้องแก้ไข.
การเข้าถึงเรขาคณิต
Mesh อ็อบเจ็กต์เปิดเผย:
control_points: รายการตำแหน่งเวอร์เท็กซ์เป็นVector4(x, y, z, w)polygons: รายการของลิสต์ดัชนีหน้า (จำนวนด้านของโพลิกอนใดๆ ไม่จำกัดเฉพาะสามเหลี่ยม)get_element(VertexElementType): ดึงชั้นข้อมูลเวอร์เท็กซ์ที่มีชื่อสำหรับนอร์มัล, UV, สีเวอร์เท็กซ์, และกลุ่มการทำให้เรียบ
วัสดุ
LambertMaterial และ PhongMaterial บรรจุคุณสมบัติวัตถุดิบที่อ่านจาก OBJ .mtl ไฟล์ (ambient, diffuse, specular, emissive, transparency, shininess) วัสดุยังคงอยู่หลังการโหลด‑บันทึกซ้ำสำหรับฟอร์แมตที่รองรับ.
ยูทิลิตี้คณิตศาสตร์
Vector2, Vector3, Vector4, FVector3, Quaternion, Matrix4, และ BoundingBox ถูกรวมเป็นประเภทค่าแบบน้ำหนักเบาสำหรับการคำนวณเรขาคณิต.
แอนิเมชัน
ส่วน AnimationClip, AnimationNode, KeyframeSequence, และ KeyFrame คลาสให้การเข้าถึงข้อมูลแอนิเมชันคีย์เฟรมจากฟอร์แมตที่บรรจุข้อมูลเหล่านั้น เช่น glTF และ COLLADA.
เริ่มต้นอย่างรวดเร็ว
pip install aspose-3d-foss
โหลดไฟล์ 3D และพิมพ์จำนวนเวอร์เท็กซ์ของแต่ละเมช:
from aspose.threed import Scene
from aspose.threed.entities import Mesh
scene = Scene.from_file("model.obj")
def visit(node):
for entity in node.entities:
if isinstance(entity, Mesh):
print(f"{node.name}: {len(entity.control_points)} vertices, "
f"{len(entity.polygons)} polygons")
for child in node.child_nodes:
visit(child)
visit(scene.root_node)
แปลงไฟล์เดียวกันเป็น glTF:
from aspose.threed import Scene
from aspose.threed.formats import GltfSaveOptions
scene = Scene.from_file("model.obj")
scene.save("model.gltf", GltfSaveOptions())
นี่คือโปรแกรมเต็มรูปแบบ ไม่ต้องไฟล์กำหนดค่า ไม่ต้องคีย์ API ไม่ต้องการการเรียกเครือข่าย.
ฟอร์แมตที่รองรับ
| ฟอร์แมต | Extension(s) | โหลด | บันทึก | หมายเหตุ |
|---|---|---|---|---|
| Wavefront OBJ | .obj | ใช่ | ใช่ | .mtl รองรับการโหลดวัสดุ |
| STL | .stl | ใช่ | ใช่ | ไบนารีและ ASCII; ตัวเลือกการพลิกระบบพิกัด |
| glTF 2.0 | .gltf, .glb | ใช่ | ใช่ | รองรับ GLB (ไบนารีแบบอิสระ) |
| COLLADA | .dae | ใช่ | ใช่ | ColladaSaveOptions พร้อมใช้งานกับ flip_coordinate_system, enable_materials, indented |
| 3MF | .3mf | ใช่ | ใช่ | เหมาะสำหรับกระบวนการทำงานการพิมพ์ 3 มิติ |
| FBX | .fbx | บางส่วน | N/A | เฉพาะ Tokenizer; ตัวพาร์เซอร์เต็มกำลังพัฒนา |
การตรวจจับรูปแบบทำโดยอัตโนมัติจากส่วนขยายของไฟล์ ตัวเลือกการโหลดและบันทึกเฉพาะรูปแบบ (ObjLoadOptions, StlSaveOptions, GltfSaveOptions, ThreeMfSaveOptions) มีให้เพื่อการควบคุมที่ละเอียด.
โอเพนซอร์สและฟรี
ไลบรารีนี้ใช้ใบอนุญาต MIT คุณสามารถใช้ในแอปพลิเคชันเชิงพาณิชย์ แก้ไข และแจกจ่ายต่อได้โดยไม่มีข้อจำกัด โค้ดต้นฉบับพร้อมให้บน GitHub ภายใต้องค์กร Aspose.
ไม่มีระดับการใช้งาน ไม่มีขีดจำกัดโทเคน และไม่มีการเก็บข้อมูลการใช้งาน ไลบรารีทำการประมวลผลทั้งหมดในเครื่อง.
การพึ่งพา: ไม่มี แพ็กเกจจะติดตั้งเป็น pure-Python wheel โดยไม่มีส่วนขยาย C และไม่มีข้อกำหนด runtime ของบุคคลที่สาม.
เริ่มต้นใช้งาน
- ติดตั้ง:
pip install aspose-3d-foss - วิธีทำ: การโหลดไฟล์: วิธีโหลดโมเดล 3D ใน Python
- วิธีทำ: การแปลงไฟล์: วิธีแปลงโมเดล 3D ใน Python
- อ้างอิง API: อ้างอิง API ของ Aspose.3D FOSS สำหรับ Python
- PyPI: aspose-3d-foss บน PyPI
สรุป
Aspose.3D FOSS for Python 26.1.0 ครอบคลุมรูปแบบไฟล์ 3D ที่ใช้บ่อยที่สุดในเครื่องมือ, pipeline, และแอปพลิเคชันเว็บ (OBJ, STL, glTF, COLLADA, และ 3MF) ด้วย API Python ที่สอดคล้องและไม่มีความยุ่งยากในการติดตั้ง หากคุณพบบั๊ก, กรณีขอบที่ไม่รองรับ, หรือรูปแบบที่ต้องการเพิ่ม, โปรดเปิด issue บน GitHub เราให้การดูแลไลบรารีอย่างต่อเนื่องและยินดีรับการมีส่วนร่วม.